feat: add document type CRUD with inline rule set binding

- GET/POST /api/document-types, GET/PUT/DELETE /api/document-types/{id}
- DocumentTypeItemVO extended with description, entryModuleId,
  isEnabled, ruleSetIds
- Create/Update DTOs accept ruleSetIds array for automatic
  leaudit_rule_type_bindings sync (full replace on update)
- Soft delete cascades to rule_type_bindings
This commit is contained in:
wren
2026-04-30 12:50:56 +08:00
parent 32f56f7bf6
commit 52c2bed4f9
4 changed files with 265 additions and 30 deletions
@@ -80,6 +80,33 @@ class DocumentTypeItemVO(BaseModel):
id: int = Field(..., description="类型ID")
name: str = Field(..., description="类型名称")
code: str = Field(..., description="类型编码")
description: str | None = Field(None, description="描述")
entryModuleId: int | None = Field(None, description="入口模块ID")
isEnabled: bool = Field(True, description="是否启用")
ruleSetIds: list[int] = Field(default_factory=list, description="关联的规则集ID")
class DocumentTypeCreateDTO(BaseModel):
"""文档类型创建请求。"""
code: str = Field(..., description="类型编码")
name: str = Field(..., description="类型名称")
description: str = Field("", description="描述")
entryModuleId: int | None = Field(None, description="入口模块ID")
isEnabled: bool = Field(True, description="是否启用")
sortOrder: int = Field(0, description="排序")
ruleSetIds: list[int] = Field(default_factory=list, description="关联的规则集ID")
class DocumentTypeUpdateDTO(BaseModel):
"""文档类型更新请求。"""
name: str | None = Field(None, description="类型名称")
description: str | None = Field(None, description="描述")
entryModuleId: int | None = Field(None, description="入口模块ID")
isEnabled: bool | None = Field(None, description="是否启用")
sortOrder: int | None = Field(None, description="排序")
ruleSetIds: list[int] | None = Field(None, description="关联的规则集ID(传则全量替换)")
class DocumentListPageVO(BaseModel):