docs: update dev status log for round 5 - propose CRUD router
This commit is contained in:
@@ -134,6 +134,40 @@
|
||||
- P6.1 Propose 基础 CRUD router(create/list/get/update),含 propose_code 自动生成
|
||||
- 这是让 Propose 功能可用的最小后端闭环
|
||||
|
||||
### 2026-03-17 03:00 UTC(第 5 轮:Propose CRUD Router + Accept/Reject/Reopen 动作)
|
||||
|
||||
本轮做了什么:
|
||||
- 新建 `app/api/routers/proposes.py`,完整实现 Propose 后端 CRUD + 状态动作(P6.1-P6.4)
|
||||
- **CRUD**:list / create / get / update,遵循 project-scoped 路由 `/projects/{project_id}/proposes`
|
||||
- **propose_code 自动生成**(P1.4):`{proj_code}:P{i:05x}` 格式,按 project 独立递增
|
||||
- **accept 动作**(P6.2):
|
||||
- 接收 `milestone_id` 参数,校验 milestone 属同 project 且 status=open
|
||||
- 自动创建 `story/feature` task(继承 title/description/created_by,默认 pending)
|
||||
- 自动回填 `feat_task_id`
|
||||
- **reject 动作**(P6.3):校验 propose 为 open,支持 reason 参数,记录 activity log
|
||||
- **reopen 动作**(P6.4):仅 rejected 可 reopen 回 open,复用原 propose 不新建
|
||||
- **feat_task_id 只读保护**(P6.5):update 接口中 pop 掉客户端传入的 feat_task_id
|
||||
- 在 `main.py` 注册 proposes_router
|
||||
- 所有动作均写 activity log
|
||||
|
||||
改了哪些关键文件:
|
||||
- `HarborForge.Backend/app/api/routers/proposes.py` — 新增(280 行)
|
||||
- `HarborForge.Backend/app/main.py` — 注册 proposes_router
|
||||
|
||||
验证结果:
|
||||
- Python AST 语法检查 proposes.py / main.py 均通过
|
||||
- 已 commit:backend `75ccbcb`,parent `5602b1b`
|
||||
|
||||
当前阻塞/风险:
|
||||
- 权限检查暂用 `check_project_role(min_role="mgr")` 占位,待 P2 权限骨架落地后替换为细粒度 permission
|
||||
- propose_code 生成使用 `max(id)+1`,并发场景理论上有微小重复风险(但有 unique 约束保底)
|
||||
- 无本地 MySQL 环境做运行时验证
|
||||
- 前端 Propose 页面尚未开始(P10)
|
||||
|
||||
下一轮最建议继续做什么:
|
||||
- P10.1-P10.3 前端 Propose 类型定义 + 列表页 + 详情页骨架(让 propose 功能在 UI 上可见)
|
||||
- 或 P3.1 Milestone 动作接口(freeze/start/close),使 milestone 状态机真正可用
|
||||
|
||||
---
|
||||
|
||||
## 1. 背景
|
||||
|
||||
Reference in New Issue
Block a user