|
|
@@ -0,0 +1,275 @@
|
|
|
+# 任务管理模块需求分析
|
|
|
+
|
|
|
+**版本**: V1.2
|
|
|
+**更新时间**: 2026-04-13
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 一、需求清单总览
|
|
|
+
|
|
|
+| 需求ID | 描述 | 优先级 | 状态 |
|
|
|
+|--------|------|--------|------|
|
|
|
+| TASK-001 | 家长可创建任务,设置任务名称 | P0 | ✅ 已实现 |
|
|
|
+| TASK-002 | 设置任务积分值(1-10分,默认2分) | P0 | ✅ 已实现 |
|
|
|
+| TASK-003 | 设置任务截止时间(精确到分钟) | P0 | ✅ 已实现 |
|
|
|
+| TASK-004 | 设置任务重复(每日/每周) | P0 | ✅ 已实现 |
|
|
|
+| TASK-005 | 设置任务分类(学习类/生活类/运动类/其他) | P0 | ✅ 已实现 |
|
|
|
+| TASK-006 | 任务模板功能 | P1 | ⚠️ 部分实现 |
|
|
|
+| TASK-007 | 设置审核方式 | P1 | ⚠️ 部分实现 |
|
|
|
+| TASK-008 | 孩子可查看今日任务列表 | P0 | ✅ 已实现 |
|
|
|
+| TASK-009 | 孩子点击"完成"按钮提交任务 | P0 | ✅ 已实现 |
|
|
|
+| TASK-010 | 任务完成方式设置 | P2 | ⚠️ 待完善 |
|
|
|
+| TASK-011 | 任务时长设置 | P2 | ⚠️ 待完善 |
|
|
|
+| TASK-012A | 打卡支持照片上传 | P0 | ✅ 已实现 |
|
|
|
+| TASK-012B | 打卡支持视频上传 | P0 | ✅ 已实现 |
|
|
|
+| TASK-012C | 打卡支持录音上传 | P0 | ✅ 已实现 |
|
|
|
+| TASK-012D | 打卡支持文字描述 | P0 | ✅ 已实现 |
|
|
|
+| TASK-012E | 打卡支持倒计时功能 | P0 | ✅ 已实现 |
|
|
|
+| TASK-012F | 倒计时结束时语音提醒 | P0 | ✅ 已实现 |
|
|
|
+| TASK-013 | 任务提醒通知 | P1 | ✅ 已实现 |
|
|
|
+| TASK-014 | 任务历史记录查询 | P1 | ✅ 已实现 |
|
|
|
+| TASK-015 | 任务统计分析报表 | P1 | ✅ 已实现 |
|
|
|
+| TASK-016 | 批量操作任务 | P2 | ❌ 未实现 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 二、需求详细说明
|
|
|
+
|
|
|
+### 2.1 任务创建(TASK-001~005)
|
|
|
+
|
|
|
+#### TASK-001: 创建任务,设置任务名称
|
|
|
+- **描述**: 家长可以创建任务,设置任务名称
|
|
|
+- **必填**: 是
|
|
|
+- **字段**: `title` (String, 最大100字符)
|
|
|
+- **验证**: 不能为空
|
|
|
+- **实现位置**: `TaskService.createTask()`
|
|
|
+
|
|
|
+#### TASK-002: 设置任务积分值
|
|
|
+- **描述**: 积分值范围1-10分,默认2分
|
|
|
+- **必填**: 是
|
|
|
+- **字段**: `points` (Integer)
|
|
|
+- **默认值**: 2
|
|
|
+- **验证**: 1-10分
|
|
|
+
|
|
|
+#### TASK-003: 设置任务截止时间
|
|
|
+- **描述**: 精确到分钟,支持多孩子任务和家长任务
|
|
|
+- **必填**: 是
|
|
|
+- **字段**: `deadline` (DateTime)
|
|
|
+- **前端**: 多级日期时间选择器(年/月/日/时/分)
|
|
|
+
|
|
|
+#### TASK-004: 设置任务重复
|
|
|
+- **描述**: 支持每日重复、每周重复
|
|
|
+- **字段**: `repeatType` (String)
|
|
|
+- **可选值**: `none` / `daily` / `weekly`
|
|
|
+- **定时任务**: `RepeatTaskGenerator` 每天05:00执行
|
|
|
+
|
|
|
+#### TASK-005: 设置任务分类
|
|
|
+- **描述**: 学习类/生活类/运动类/其他
|
|
|
+- **字段**: `category` (String)
|
|
|
+- **可选值**: `学习类` / `生活类` / `运动类` / `其他`
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 2.2 任务模板和审核(TASK-006~007)
|
|
|
+
|
|
|
+#### TASK-006: 任务模板功能
|
|
|
+- **描述**: 使用任务模板快速创建
|
|
|
+- **状态**: ⚠️ 部分实现
|
|
|
+- **待完善**: 模板库管理、模板选择UI
|
|
|
+
|
|
|
+#### TASK-007: 设置审核方式
|
|
|
+- **描述**: 选择审核人类型
|
|
|
+- **字段**: `reviewType` (String)
|
|
|
+- **可选值**:
|
|
|
+ - `creator` - 创建者审核
|
|
|
+ - `parent` - 家长审核
|
|
|
+ - `teacher` - 指导师审核
|
|
|
+ - `ai` - AI自动审核
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 2.3 任务查看和完成(TASK-008~011)
|
|
|
+
|
|
|
+#### TASK-008: 孩子查看今日任务
|
|
|
+- **描述**: 孩子可以查看今日需要完成的任务列表
|
|
|
+- **实现**: `GET /api/tasks/today?childId={id}`
|
|
|
+- **返回**: 当日所有pending/completed状态的任务
|
|
|
+
|
|
|
+#### TASK-009: 孩子完成任务
|
|
|
+- **描述**: 孩子点击完成按钮提交任务
|
|
|
+- **实现**: `POST /api/tasks/{id}/complete`
|
|
|
+- **参数**: childId, photoUrl(可选)
|
|
|
+
|
|
|
+#### TASK-010: 任务完成方式设置
|
|
|
+- **描述**: 支持多种完成方式
|
|
|
+- **字段**: `completeTypes` (JSON数组)
|
|
|
+- **可选值**:
|
|
|
+ - `checkin` - 打卡
|
|
|
+ - `text` - 文本
|
|
|
+ - `audio` - 语音
|
|
|
+ - `image` - 图片
|
|
|
+ - `video` - 视频
|
|
|
+
|
|
|
+#### TASK-011: 任务时长设置
|
|
|
+- **字段**: `duration` (Integer, 分钟)
|
|
|
+- **描述**: 任务预计耗时
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 2.4 打卡功能(TASK-012A~F)
|
|
|
+
|
|
|
+| 需求ID | 描述 | 实现 |
|
|
|
+|--------|------|------|
|
|
|
+| TASK-012A | 照片上传 | ✅ 文件上传API |
|
|
|
+| TASK-012B | 视频上传 | ✅ 文件上传API |
|
|
|
+| TASK-012C | 录音上传 | ✅ 文件上传API |
|
|
|
+| TASK-012D | 文字描述 | ✅ CompleteTaskDTO.text |
|
|
|
+| TASK-012E | 倒计时功能 | ✅ 前端组件 |
|
|
|
+| TASK-012F | 语音提醒 | ✅ 前端TTS |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 2.5 任务提醒和统计(TASK-013~016)
|
|
|
+
|
|
|
+#### TASK-013: 任务提醒通知
|
|
|
+- **描述**: 任务截止前发送提醒
|
|
|
+- **API**:
|
|
|
+ - `GET /api/tasks/reminder/{childId}` - 30分钟内到期
|
|
|
+ - `GET /api/tasks/upcoming/{childId}?minutes=60` - 自定义时间
|
|
|
+ - `GET /api/tasks/overdue/{childId}` - 已超时任务
|
|
|
+
|
|
|
+#### TASK-014: 任务历史记录查询
|
|
|
+- **描述**: 查看历史任务,支持筛选
|
|
|
+- **API**: `GET /api/tasks/history/filter/{childId}`
|
|
|
+- **筛选条件**: 状态、时间范围
|
|
|
+
|
|
|
+#### TASK-015: 任务统计分析报表
|
|
|
+- **描述**: 统计任务完成情况
|
|
|
+- **API**:
|
|
|
+ - `GET /api/tasks/statistics/{childId}` - 概览统计
|
|
|
+ - `GET /api/tasks/statistics/category/{childId}` - 分类统计
|
|
|
+ - `GET /api/tasks/statistics/date/{childId}?days=7` - 日期统计
|
|
|
+ - `GET /api/tasks/statistics/family/{familyId}` - 家庭统计
|
|
|
+
|
|
|
+#### TASK-016: 批量操作任务
|
|
|
+- **描述**: 批量删除、批量审核
|
|
|
+- **状态**: ❌ 未实现
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 三、任务数据模型
|
|
|
+
|
|
|
+### 3.1 Task 实体字段
|
|
|
+
|
|
|
+```java
|
|
|
+// 基础字段
|
|
|
+private Long id;
|
|
|
+private Long familyId; // 家庭ID
|
|
|
+private Long creatorId; // 创建者ID
|
|
|
+private String title; // 任务名称
|
|
|
+private String description; // 任务描述
|
|
|
+
|
|
|
+// 执行者
|
|
|
+private String executorType; // child/parent
|
|
|
+private Long executorId; // 执行者ID
|
|
|
+private Long childId; // 孩子ID(兼容)
|
|
|
+
|
|
|
+// 积分和时间
|
|
|
+private Integer points; // 积分值
|
|
|
+private Date deadline; // 截止时间
|
|
|
+
|
|
|
+// 分类和审核
|
|
|
+private String category; // 分类
|
|
|
+private Integer needReview; // 是否需要审核
|
|
|
+private String reviewType; // 审核人类型
|
|
|
+private String status; // 任务状态
|
|
|
+private Date completedAt; // 完成时间
|
|
|
+
|
|
|
+// 重复设置 (TASK-004)
|
|
|
+private String repeatType; // none/daily/weekly
|
|
|
+private Long templateId; // 模板ID
|
|
|
+private Integer isTemplate; // 是否模板
|
|
|
+
|
|
|
+// POINT-002: 超额积分
|
|
|
+private String bonusRule; // JSON格式规则
|
|
|
+
|
|
|
+// POINT-009: 积分有效期
|
|
|
+private Integer pointsExpireDays; // 有效期天数
|
|
|
+
|
|
|
+// 扩展字段
|
|
|
+private String taskType; // onetime/recurring
|
|
|
+private String frequency; // daily/weekly/monthly
|
|
|
+private Integer maxFrequency; // 周期内最多次数
|
|
|
+private String completeTypes; // 完成方式JSON
|
|
|
+private Date earliestStart; // 最早开始
|
|
|
+private Date latestEnd; // 最晚结束
|
|
|
+```
|
|
|
+
|
|
|
+### 3.2 状态流转
|
|
|
+
|
|
|
+```
|
|
|
+pending → completed (孩子完成)
|
|
|
+pending → completed (审核通过)
|
|
|
+completed → pending (审核拒绝)
|
|
|
+pending → cancelled (创建者删除)
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 四、API接口汇总
|
|
|
+
|
|
|
+### 4.1 任务管理
|
|
|
+
|
|
|
+| 方法 | 路径 | 功能 | 权限 |
|
|
|
+|------|------|------|------|
|
|
|
+| POST | /api/tasks | 创建任务 | 家长/指导师 |
|
|
|
+| GET | /api/tasks/today | 今日任务 | 孩子 |
|
|
|
+| POST | /api/tasks/{id}/complete | 完成任务 | 孩子 |
|
|
|
+| POST | /api/tasks/{id}/review | 审核任务 | 家长/指导师 |
|
|
|
+| GET | /api/tasks/history | 历史记录 | 孩子/家长 |
|
|
|
+| GET | /api/tasks/pending-review | 待审核任务 | 家长/指导师 |
|
|
|
+| DELETE | /api/tasks/{id} | 删除任务 | 创建者 |
|
|
|
+
|
|
|
+### 4.2 任务提醒统计
|
|
|
+
|
|
|
+| 方法 | 路径 | 功能 |
|
|
|
+|------|------|------|
|
|
|
+| GET | /api/tasks/reminder/{childId} | 需要提醒的任务 |
|
|
|
+| GET | /api/tasks/upcoming/{childId} | 即将到期任务 |
|
|
|
+| GET | /api/tasks/overdue/{childId} | 已超时任务 |
|
|
|
+| GET | /api/tasks/history/filter/{childId} | 带筛选历史 |
|
|
|
+| GET | /api/tasks/statistics/{childId} | 统计概览 |
|
|
|
+| GET | /api/tasks/statistics/category/{childId} | 分类统计 |
|
|
|
+| GET | /api/tasks/statistics/date/{childId} | 日期统计 |
|
|
|
+| GET | /api/tasks/statistics/family/{familyId} | 家庭统计 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 五、前端页面
|
|
|
+
|
|
|
+| 页面 | 路径 | 功能 |
|
|
|
+|------|------|------|
|
|
|
+| 创建任务 | `/pages/tasks/create-task` | 任务表单 |
|
|
|
+| 任务列表 | `/pages/tasks/tasks` | 任务查看/管理 |
|
|
|
+| 今日任务 | 首页嵌入 | 孩子查看任务 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 六、待完善功能
|
|
|
+
|
|
|
+| 功能 | 优先级 | 说明 |
|
|
|
+|------|--------|------|
|
|
|
+| 任务模板管理 | P1 | 模板库CRUD |
|
|
|
+| 批量操作 | P2 | 批量删除/审核 |
|
|
|
+| 任务时长显示 | P2 | 前端展示 |
|
|
|
+| AI审核 | P1 | 调用AI服务自动审核 |
|
|
|
+| 消息推送 | P1 | 微信模板消息提醒 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 七、数据库迁移
|
|
|
+
|
|
|
+| 迁移 | 字段 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| 迁移20 | template_id | 重复任务模板追踪 |
|
|
|
+| 迁移21 | is_template | 模板任务标记 |
|