Files
ai-contract-platform/project-docs/V2-approval-todo-role-boundary-2026-06-24.md
T
yuqei a3bb78e06b
Security Quality Gate / npm audit, Bandit, pip-audit, detect-secrets (pull_request) Failing after 16m35s
release: freeze V2 release candidate
2026-07-12 15:32:24 +08:00

2.4 KiB
Raw Blame History

V2 审批待办与角色边界闭环记录

日期:2026-06-24

本轮目标

完成 T3:审批待办与角色边界。保持“待我审批 / 我的草稿 / 履约提醒”简单分组,并让不同角色只看到自己能处理的按钮。

角色

  • admin:管理员,能看到管理区、审计、审批、编辑等完整能力。
  • legal:法务,能审查合同、查看审计、编辑和提交审批。
  • business:业务提交人,能起草、编辑、上传文件、发起审查、提交/重提审批。
  • approver:审批人,只聚焦待审批合同,能通过或退回。
  • observer:只读观察者,只看只读详情和履约提醒,不显示复杂操作。

已完成

  1. Contract API 增加最小角色模型和权限结果:

    • ContractPermissions
    • WorkspaceTask.bucket
    • /api/v1/workspace?role=...
    • /api/v1/contracts/{id}?role=...
  2. 后端按角色过滤工作台任务:

    • 审批人:看到待我审批。
    • 业务提交人:看到我的草稿、退回、审查中合同。
    • 法务/管理员:看到审查和审批相关合同。
    • 只读观察者:不看审批/草稿任务,只保留履约提醒。
  3. 合同详情按钮按权限显示:

    • 编辑
    • 下载
    • 提交审批 / 退回后重提
    • 审批通过 / 退回修改
    • 发起审查
    • 上传文件
    • 查看审计
  4. 前端继续复用 access-control.ts:

    • 角色来源保持 NEXT_PUBLIC_DEMO_ROLE。
    • 管理区访问规则继续集中在前端 access-control。
    • 工作台和合同详情使用后端返回的业务权限。

简化原则

普通业务用户只看到:

待我处理 -> 快速发起 -> 合同详情下一步操作

审批人只看到审批动作,不被起草、配置、审计信息干扰。

管理员/法务才看到审计和管理能力。

验证

  • 后端测试:python -m pytest yuqei-contract-platform\services\contract-api\tests -q
  • 后端编译:python -m compileall yuqei-contract-platform\services\contract-api\src
  • OpenAPI 解析:通过
  • 前端构建:npm --prefix yuqei-contract-platform\apps\contract-web run build
  • 前端类型检查:npm --prefix yuqei-contract-platform\apps\contract-web run typecheck

后续建议

下一轮进入 T4:合同仓库 MVP。优先做合同附件列表、文件预览、下载、关联合同入口,继续服务合同主流程,不扩成复杂网盘。