a3bb78e06b
Security Quality Gate / npm audit, Bandit, pip-audit, detect-secrets (pull_request) Failing after 16m35s
66 lines
2.4 KiB
Markdown
66 lines
2.4 KiB
Markdown
# 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。优先做合同附件列表、文件预览、下载、关联合同入口,继续服务合同主流程,不扩成复杂网盘。
|