docs: update dev status — round 7 propose frontend pages
This commit is contained in:
@@ -168,6 +168,93 @@
|
||||
- P10.1-P10.3 前端 Propose 类型定义 + 列表页 + 详情页骨架(让 propose 功能在 UI 上可见)
|
||||
- 或 P3.1 Milestone 动作接口(freeze/start/close),使 milestone 状态机真正可用
|
||||
|
||||
### 2026-03-17 04:00 UTC(第 6 轮:Milestone 动作接口 freeze/start/close + auto-complete)
|
||||
|
||||
本轮做了什么:
|
||||
- 新建 `app/api/routers/milestone_actions.py`(313 行),实现 P3.1-P3.5 的核心后端逻辑
|
||||
- **freeze 接口**(P3.2):
|
||||
- 校验 milestone 为 open
|
||||
- 校验有且仅有 1 个 `maintenance/release` task,否则拒绝并给出明确错误
|
||||
- 调用 `check_permission("freeze milestone")`
|
||||
- **start 接口**(P3.3):
|
||||
- 校验 milestone 为 freeze
|
||||
- 解析 `depend_on_milestones` / `depend_on_tasks` JSON,校验所有依赖已 completed
|
||||
- 写入 `started_at`,状态改为 undergoing
|
||||
- 调用 `check_permission("start milestone")`
|
||||
- **close 接口**(P3.4):
|
||||
- 允许从 open/freeze/undergoing → closed
|
||||
- 支持 reason 参数
|
||||
- 调用 `check_permission("close milestone")`
|
||||
- **auto-complete hook**(P3.5):
|
||||
- `try_auto_complete_milestone()` 在 task 完成时检测是否为唯一 release task,若是则自动将 milestone 置为 completed
|
||||
- 已在 tasks.py 的 transition 和 update 两个入口调用
|
||||
- **freeze 后限制**(P3.6 partial):
|
||||
- milestones.py 的 `create_milestone_task` 现在禁止在 freeze 状态下添加 feature story task
|
||||
- 同时禁止在 undergoing/completed/closed 下添加任何 task
|
||||
- milestone 序列化新增 `started_at` 字段
|
||||
- 所有动作均写 activity log
|
||||
|
||||
改了哪些关键文件:
|
||||
- `HarborForge.Backend/app/api/routers/milestone_actions.py` — 新增
|
||||
- `HarborForge.Backend/app/api/routers/milestones.py` — freeze 限制 + started_at 序列化
|
||||
- `HarborForge.Backend/app/api/routers/tasks.py` — auto-complete hook(2 处)
|
||||
- `HarborForge.Backend/app/main.py` — 注册 milestone_actions_router
|
||||
|
||||
验证结果:
|
||||
- 4 个文件 Python AST 语法检查全部通过
|
||||
- 已 commit:backend `7d8c448`
|
||||
|
||||
当前阻塞/风险:
|
||||
- P2 权限骨架尚未落地(`freeze/start/close milestone` permission 需要注册到 permission 表 + 默认角色种子)
|
||||
- milestone 编辑限制(P3.6)只做了部分(freeze 后禁新 feature task),`completed/closed` 禁编辑还需在 update 接口加守卫
|
||||
- 前端 milestone 按钮(P8.2)尚未开始
|
||||
- 无本地 MySQL 做运行时验证
|
||||
|
||||
下一轮最建议继续做什么:
|
||||
- P3.6 补全 milestone 编辑限制(update 接口在 freeze/completed/closed 时拒绝核心字段修改)
|
||||
- 或 P10.1-P10.3 前端 Propose 类型 + 列表/详情页骨架
|
||||
- 或 P8.1-P8.2 前端 milestone 状态 badge + 动作按钮
|
||||
|
||||
### 2026-03-17 05:00 UTC(第 7 轮:前端 Propose 完整页面骨架 P10.1-P10.5)
|
||||
|
||||
本轮做了什么:
|
||||
- 新增 `Propose` 类型定义到 `types/index.ts`(P10.1)
|
||||
- 新建 `ProposesPage.tsx` — 按 project 筛选的 propose 列表页 + 创建弹窗(P10.1-P10.2)
|
||||
- 项目下拉选择
|
||||
- propose 卡片展示 status badge / propose_code / title / description / feat_task_id / created_at
|
||||
- 内联创建弹窗(title + description)
|
||||
- 新建 `ProposeDetailPage.tsx` — 完整详情页 + 状态动作按钮(P10.3-P10.6)
|
||||
- 展示所有必要字段:propose_code / title / description / status / created_by / feat_task_id / timestamps
|
||||
- `open` 状态显示 Accept + Reject 按钮
|
||||
- Accept 弹窗:列出当前 project 下 open 的 milestone 供选择,确认后调用 accept API
|
||||
- Reject:prompt 填写 reason,调用 reject API
|
||||
- `rejected` 状态显示 Reopen 按钮
|
||||
- `accepted` 状态显示 View Generated Task 跳转按钮
|
||||
- 所有动作带 loading 状态和错误提示
|
||||
- 在 `App.tsx` 注册 `/proposes` 和 `/proposes/:id` 路由
|
||||
- 在 `Sidebar.tsx` 新增 💡 Proposes 导航链接
|
||||
|
||||
改了哪些关键文件:
|
||||
- `src/types/index.ts` — 新增 Propose 接口
|
||||
- `src/pages/ProposesPage.tsx` — 新增
|
||||
- `src/pages/ProposeDetailPage.tsx` — 新增
|
||||
- `src/App.tsx` — 路由注册
|
||||
- `src/components/Sidebar.tsx` — 侧边栏链接
|
||||
|
||||
验证结果:
|
||||
- `npx tsc --noEmit` 零错误通过
|
||||
- 已 commit: `35e7d3a`
|
||||
|
||||
当前阻塞/风险:
|
||||
- ProposeDetailPage 中 "View Generated Task" 跳转使用 `feat_task_id` 作为路径,需确认后端返回的是 task id 数字还是 task code 字符串
|
||||
- Propose 编辑功能(P10.7 `open` 时编辑 title/description)尚未实现
|
||||
- CSS badge class `status-completed` / `status-closed` 可能需要新增样式
|
||||
- 权限可见性控制(按钮仅对有权限的用户显示)尚未实现,当前所有按钮对所有用户可见
|
||||
|
||||
下一轮最建议继续做什么:
|
||||
- P8.1-P8.2 前端 milestone 状态 badge + 动作按钮(freeze/start/close),让 milestone 状态机在 UI 上可操作
|
||||
- 或 P3.6 补全 milestone 编辑限制(后端 update 接口守卫)
|
||||
|
||||
---
|
||||
|
||||
## 1. 背景
|
||||
|
||||
Reference in New Issue
Block a user