feat: 支持合同模板替换与删除 #10

Merged
TanWenyan merged 4 commits from wren-dev into main 2026-05-22 18:50:06 +08:00
Owner

背景

合同模板权限配置中存在“合同模板更新”和“合同模板删除”权限项,但业务侧缺少完整可用能力。更新需要支持对已有模板重新上传文件并替换原模板,删除需要按租户范围软删除模板。

主要改动

  • 新增 PUT /api/v3/contract-templates/{id} 合同模板更新接口,支持重新上传文件替换原模板。
  • 更新接口接入 contract_template:update:write 权限校验。
  • 删除接口继续使用 DELETE /api/v3/contract-templates/{id},并保持 contract_template:delete:delete 权限校验。
  • 更新和删除均复用合同模板租户写范围校验,避免跨租户修改。
  • 修复模板详情接口不能回退使用列表权限,必须具备 contract_template:detail:read
  • 修复详情/删除路径中租户可见范围 SQL expanding bind 参数绑定问题。
  • 增加合同模板权限与租户范围相关回归测试。

影响范围

  • 影响合同模板列表、详情、更新、删除相关后端接口。
  • 影响具备合同模板管理权限的管理员账号。
  • 不改变合同模板搜索和列表读取的既有接口协议。

测试

  • .venv/bin/pytest tests/test_contract_template_search.py -q
  • 结果:5 passed

验收建议

  • 使用有 contract_template:update:write 权限的管理员替换同租户模板文件,确认文件路径、格式、更新时间更新。
  • 使用无更新权限账号访问更新接口,确认返回 403。
  • 使用有 contract_template:delete:delete 权限的管理员删除同租户模板,确认列表和搜索不再展示。
  • 使用跨租户账号尝试更新/删除模板,确认无法操作。
  • 取消详情权限但保留列表权限,访问详情页应返回 403。
## 背景 合同模板权限配置中存在“合同模板更新”和“合同模板删除”权限项,但业务侧缺少完整可用能力。更新需要支持对已有模板重新上传文件并替换原模板,删除需要按租户范围软删除模板。 ## 主要改动 - 新增 `PUT /api/v3/contract-templates/{id}` 合同模板更新接口,支持重新上传文件替换原模板。 - 更新接口接入 `contract_template:update:write` 权限校验。 - 删除接口继续使用 `DELETE /api/v3/contract-templates/{id}`,并保持 `contract_template:delete:delete` 权限校验。 - 更新和删除均复用合同模板租户写范围校验,避免跨租户修改。 - 修复模板详情接口不能回退使用列表权限,必须具备 `contract_template:detail:read`。 - 修复详情/删除路径中租户可见范围 SQL expanding bind 参数绑定问题。 - 增加合同模板权限与租户范围相关回归测试。 ## 影响范围 - 影响合同模板列表、详情、更新、删除相关后端接口。 - 影响具备合同模板管理权限的管理员账号。 - 不改变合同模板搜索和列表读取的既有接口协议。 ## 测试 - `.venv/bin/pytest tests/test_contract_template_search.py -q` - 结果:`5 passed` ## 验收建议 - 使用有 `contract_template:update:write` 权限的管理员替换同租户模板文件,确认文件路径、格式、更新时间更新。 - 使用无更新权限账号访问更新接口,确认返回 403。 - 使用有 `contract_template:delete:delete` 权限的管理员删除同租户模板,确认列表和搜索不再展示。 - 使用跨租户账号尝试更新/删除模板,确认无法操作。 - 取消详情权限但保留列表权限,访问详情页应返回 403。
TanWenyan added 4 commits 2026-05-22 18:15:57 +08:00
TanWenyan merged commit a38697dcaf into main 2026-05-22 18:50:06 +08:00
Sign in to join this conversation.