feat: yearly_targets 写权限收紧,12步冒烟全绿

This commit is contained in:
simonkoson
2026-05-20 11:29:28 +08:00
parent 93fd327b13
commit 7cc0bf21ff
6 changed files with 521 additions and 8 deletions
+65
View File
@@ -390,3 +390,68 @@ site-packages 里。**记入待办**,Phase 4 部署前或 Task 3 启动前评估
| 20c0a1d | chore: backups/ 进 .gitignore(Task 2 收尾)(2026-05-20) |
**Task 2 完整收尾,Phase 2 Task 2 状态:✅ 完工。**
---
## 第十二章 yearly_targets 写权限收紧(2026-05-20
**状态:✅ 完工。冒烟 12/12 全绿。**
### 12.1 任务来源
task brief 明确要求收紧 yearly_targets 表的写权限,是业务红线。
### 12.2 改动文件
| 文件 | 改动内容 |
|------|----------|
| `backend/app/api/yearly_targets.py` | 5处 `require_role` 参数修正 |
| `backend/app/schemas/yearly_target.py` | `YearlyTargetUpdate` 改为部分字段可选(支持 PATCH 部分更新) |
| `backend/scripts/smoke_yearly_targets_auth.py` | 新建,12步幂等冒烟脚本 |
| `README.md` | 新增"角色权限表"节 |
| `.clinerules` 5.5 | 新增 yearly_targets 写权限收紧说明 |
| `logs/phase2_log.md` | 本章记录 |
### 12.3 权限矩阵最终状态
| 接口 | zhipianren | zebian | biandao |
|------|-----------|--------|---------|
| GET 列表/详情 | ✅ 200 | ✅ 200 | ✅ 200 |
| POST 新增 | ✅ 201 | ✅ 201 | ❌ 403 |
| PATCH 修改 | ✅ 200 | ✅ 200 | ❌ 403 |
| DELETE 删除 | ✅ 204 | ❌ 403 | ❌ 403 |
### 12.4 GET 权限修改说明
GET 权限修改原本不在 task brief 范围,是 Plan 阶段自查发现并扩大的范围。
Opus 审 Plan 时同意纳入,理由:权限矩阵整体校正一次做完更合理。
此条在 Opus 审方案 v2 中明确记录,phase2_log 本章也写入此说明,不得糊涂带过。
### 12.5 冒烟实测记录
`backend/scripts/smoke_yearly_targets_auth.py`12步结果:
| 步骤 | 场景 | 预期 | 结果 |
|------|------|------|------|
| 1 | zhipianren POST | 201 | ✅ |
| 2 | zebian POST | 201 | ✅ |
| 3 | biandao POST | 403 | ✅ |
| 4 | 未登录 POST | 401 | ✅ |
| 5 | zhipianren PATCH | 200 | ✅ |
| 6 | zebian PATCH | 200 | ✅ |
| 7 | biandao PATCH | 403 | ✅ |
| 8 | zhipianren DELETE | 204 | ✅ |
| 9 | zebian DELETE | 403 | ✅ |
| 10 | biandao DELETE | 403 | ✅ |
| 11 | biandao GET 列表 | 200 | ✅ |
| 12 | zhipianren GET 列表 | 200 | ✅ |
**12/12 全部通过。**
### 12.6 测试账号保留
冒烟脚本末尾显式打印保留账号(供后续手动清理):
- `test_zebian_smoke` (zebian)
- `test_biandao_smoke` (biandao)