feat: 支持合同模板上传与地区隔离

This commit is contained in:
wren
2026-05-19 22:59:11 +08:00
parent 980996d933
commit 7c6f134808
10 changed files with 803 additions and 131 deletions
@@ -7,6 +7,7 @@ class ContractTemplateListQueryDTO(BaseModel):
keyword: str | None = Field(None, description="关键词")
category_id: int | None = Field(None, description="分类ID")
category_name: str | None = Field(None, description="分类名称")
region: str | None = Field(None, description="地区")
file_format: str | None = Field(None, description="文件格式")
is_featured: bool | None = Field(None, description="是否推荐")
page: int = Field(1, ge=1, description="页码")
@@ -21,7 +22,19 @@ class ContractTemplateSearchQueryDTO(BaseModel):
q: str = Field(..., min_length=1, description="搜索关键词")
category_id: int | None = Field(None, description="分类ID")
category_name: str | None = Field(None, description="分类名称")
region: str | None = Field(None, description="地区")
page: int = Field(1, ge=1, description="页码")
page_size: int = Field(12, ge=1, le=200, description="分页大小")
sort_by: str = Field("updated_at", description="排序字段")
sort_order: str = Field("desc", description="排序方向")
class ContractTemplateCreateDTO(BaseModel):
"""合同模板上传参数。"""
title: str = Field(..., min_length=1, max_length=200, description="模板标题")
template_code: str = Field(..., min_length=1, max_length=50, description="模板编码")
category_id: int = Field(..., description="分类ID")
region: str | None = Field(None, description="所属地区")
description: str | None = Field(None, description="模板简介")
is_featured: bool = Field(False, description="是否推荐")
@@ -23,10 +23,17 @@ class ContractTemplateListItemVO(BaseModel):
category_name: str | None = Field(None, description="分类名称")
category_icon: str | None = Field(None, description="分类图标")
description: str | None = Field(None, description="模板简介")
region: str = Field(..., description="所属地区")
file_path: str | None = Field(None, description="原始模板文件路径")
pdf_file_path: str | None = Field(None, description="PDF 预览文件路径")
file_format: str = Field(..., description="文件格式")
original_file_name: str | None = Field(None, description="原始上传文件名")
mime_type: str | None = Field(None, description="MIME 类型")
file_size: int = Field(0, description="文件大小")
pdf_file_size: int | None = Field(None, description="预览 PDF 文件大小")
is_featured: bool = Field(False, description="是否推荐")
created_by: int | None = Field(None, description="创建人")
updated_by: int | None = Field(None, description="更新人")
created_at: str | None = Field(None, description="创建时间")
updated_at: str | None = Field(None, description="更新时间")
@@ -48,6 +55,10 @@ class ContractTemplateDetailVO(ContractTemplateListItemVO):
placeholder_schema: dict | None = Field(None, description="模板占位符结构")
class ContractTemplateCreateVO(ContractTemplateDetailVO):
"""合同模板上传结果。"""
class ContractTemplateSearchCategoryVO(BaseModel):
"""搜索结果分类统计。"""