diff --git a/docs/API.md b/docs/API.md index 73fe44c..86548e7 100644 --- a/docs/API.md +++ b/docs/API.md @@ -585,6 +585,29 @@ POST /api/config/test ### GET /api/students/{id}/goals 获取学员的所有目标 +**响应**: +```json +[ + { + "id": 1, + "student_id": 1, + "goal_id": 1, + "goal_name": "掌握基本音阶", + "goal_level": "入门", + "goal_category": "演奏能力", + "status": "进行中", + "start_date": "2026-04-01T00:00:00", + "assessment_date": "2026-05-01T00:00:00", + "mastery_level": 3, + "achievement_date": null, + "comment": null, + "created_at": "2026-04-01T10:00:00" + } +] +``` + +**排序**:按状态(进行中→未开始→已结束),再按评估日期倒序 + ### POST /api/students/{id}/goals 为学员分配目标 @@ -592,14 +615,42 @@ POST /api/config/test ```json { "goal_id": 1, - "status": "未开始", - "mastery_level": 1, - "deadline": "2026-05-01" + "assessment_days": 30, + "assessment_date": "2026-05-01", + "start_date": "2026-04-01", + "start_now": true } ``` +| 字段 | 类型 | 说明 | +|------|------|------| +| goal_id | Integer | 目标ID,必填 | +| assessment_days | Integer | 评估天数(15/30/60/90/180),与 assessment_date 二选一 | +| assessment_date | String | 具体评估日期(ISO格式),与 assessment_days 二选一 | +| start_date | String | 开始日期(ISO格式),可选 | +| start_now | Boolean | 设为 true 表示立即开始(默认当前时间) | + ### PUT /api/students/{id}/goals/{goal_id} -更新学员目标状态/掌握程度 +更新学员目标 + +**请求体**: +```json +{ + "start_date": "2026-04-01", + "assessment_date": "2026-05-01", + "mastery_level": 4, + "achievement_date": "2026-05-01", + "comment": "表现优秀,已掌握" +} +``` + +| 字段 | 类型 | 说明 | +|------|------|------| +| start_date | String | 开始日期(ISO格式) | +| assessment_date | String | 评估日期(ISO格式) | +| mastery_level | Integer | 掌握程度 1-5 | +| achievement_date | String | 达成日期(ISO格式) | +| comment | String | 评语 | ### DELETE /api/students/{id}/goals/{goal_id} 移除学员的目标 diff --git a/docs/MODELS.md b/docs/MODELS.md index b35096c..50b4e8e 100644 --- a/docs/MODELS.md +++ b/docs/MODELS.md @@ -307,6 +307,8 @@ SELECT * FROM users; | id | Integer | 主键 | | name | String(100) | 目标名称 | | content | Text | 目标内容(Markdown) | +| level | String(20) | 级别:启蒙/入门/进阶/熟练/精通 | +| category | String(20) | 分类:综合/乐理相关/演奏能力/其他 | | created_at | DateTime | 创建时间 | | updated_at | DateTime | 更新时间 | @@ -330,12 +332,25 @@ SELECT * FROM users; | id | Integer | 主键 | | student_id | Integer | 学员ID,外键 | | goal_id | Integer | 目标ID,外键 | -| status | String(20) | 状态:未开始/进行中/已完成 | -| mastery_level | Integer | 掌握程度 1-5 | -| deadline | DateTime | 截止日期 | -| completed_at | DateTime | 完成时间 | +| start_date | DateTime | 开始日期 | +| assessment_date | DateTime | 评估日期 | +| mastery_level | Integer | 掌握程度 1-5(评估时填写) | +| achievement_date | DateTime | 达成日期 | +| comment | Text | 评语 | | created_at | DateTime | 创建时间 | +**状态计算逻辑**: +- `status` 由 `start_date` 和 `assessment_date` 自动计算,不存储 +- 早于 `start_date` → 未开始 +- `start_date` 和 `assessment_date` 之间 → 进行中 +- 晚于 `assessment_date` → 已结束 + +**排序规则**:按状态(进行中→未开始→已结束),再按评估日期倒序 + **关系**: - 一个学员可以分配多个目标 -- 一个目标可以分配给多个学员 \ No newline at end of file +- 一个目标可以分配给多个学员 + +**操作入口**: +- "调整目标":修改开始/评估日期,移除目标 +- "评估目标":填写掌握程度、达成日期、评语 \ No newline at end of file