# PLAN: learn 详情页增加状态修改功能 ## 目标 在 `/learn/` 详情页增加状态下拉列表,用户点击后修改状态并保存到数据库。 ## 涉及文件 - `app.py` — 新增 `PUT /api/learn//status` 路由 - `templates/learn_detail.html` — 前端状态选择器 UI ## 数据流 ``` 用户选择新状态 → PUT /api/learn//status {status: "xxx"} → local_db.learn_update_status(id, status) → 返回更新后数据 → 前端刷新显示 ``` ## 合法状态值 `pending_review`, `pending_learn`, `applied`, `approved`, `failed`, `rejected` ## 步骤 1. **S1**: 后端 API `PUT /api/learn//status` 2. **S2**: 前端 learn_detail.html 增加状态选择器 ## 验收标准(Sprint Contract) - [ ] TC1: PUT /api/learn//status 接收合法状态值 → 返回 200 + 更新后的 status - [ ] TC2: PUT /api/learn//status 接收非法状态值 → 返回 400 + error - [ ] TC3: PUT /api/learn//status 对不存在的 id → 返回 404 - [ ] TC4: learn_detail.html 页面显示状态下拉列表,选择后触发 PUT 请求 - [ ] TC5: 前端 curl 检查无 JS 转义错误、无 Jinja2 模板字面量引号错误 - [ ] TC6: 状态修改后页面刷新显示新状态