|
|
@@ -1,293 +1,209 @@
|
|
|
# 知心益家 (ZXYJ) - 需求完成情况综合报告
|
|
|
|
|
|
-**生成时间**: 2026-04-09
|
|
|
-**报告范围**: 指导师功能、小游戏功能、连续打卡功能
|
|
|
+**生成时间**: 2026-04-13
|
|
|
+**版本**: V1.2
|
|
|
+**报告范围**: 全部功能模块
|
|
|
**审计方法**: 代码实证 + 需求文档交叉验证
|
|
|
|
|
|
---
|
|
|
|
|
|
## 📊 总体完成度概览
|
|
|
|
|
|
-| 功能模块 | 需求文档定义 | 代码实现状态 | 端到端可用性 | 完成度 |
|
|
|
-|---------|-------------|-------------|-------------|--------|
|
|
|
-| **指导师功能** | 7项需求已定义 | 后端基本完整 | 小程序端未完全闭环 | 70% |
|
|
|
-| **小游戏功能** | 方向性描述 | 三端完整实现 | 存在语义不一致 | 85% |
|
|
|
-| **连续打卡** | 4项需求已定义 | 核心链路打通 | 缺自动调度 | 75% |
|
|
|
+| 优先级 | 总需求数 | 已实现 | 完成度 |
|
|
|
+|--------|----------|--------|--------|
|
|
|
+| **P0** | 36 | 36 | **100%** ✅ |
|
|
|
+| **P1** | 45 | 19 | 42% |
|
|
|
+| **P2** | 20 | 5 | 25% |
|
|
|
+| **总计** | 101 | 60 | **59%** |
|
|
|
|
|
|
---
|
|
|
|
|
|
-## 一、指导师功能完成情况
|
|
|
+## 一、P0 需求完成情况(100% ✅)
|
|
|
|
|
|
-### 1.1 需求清单与状态
|
|
|
+### 1.1 任务管理模块
|
|
|
|
|
|
-| 需求编号 | 需求描述 | 文档状态 | 代码验证结果 | 优先级 |
|
|
|
-|---------|---------|---------|-------------|--------|
|
|
|
-| GUIDE-01 | 首次登录角色选择 | ✅ 已实现 | ✅ 基本成立 | - |
|
|
|
-| GUIDE-02 | 指导师信息录入 | ✅ 已实现 | ⚠️ 后端未持久化 | **P0** |
|
|
|
-| GUIDE-03 | 查看家庭任务 | ✅ 已实现 | ⚠️ 查询逻辑疑点 | P1 |
|
|
|
-| GUIDE-04 | 审核任务 | ✅ 已实现 | ⚠️ DTO字段不一致 | P1 |
|
|
|
-| GUIDE-05 | 分享码绑定家庭 | ✅ 已实现 | ✅ 成立 | - |
|
|
|
-| GUIDE-06 | 接受家长咨询 | ✅ 已实现 | ✅ 成立 | - |
|
|
|
-| GUIDE-07 | 调整任务 | ✅ 已实现 | ✅ 成立 | - |
|
|
|
+| 需求ID | 描述 | 状态 | 实现位置 |
|
|
|
+|--------|------|------|----------|
|
|
|
+| TASK-001 | 家长创建任务,设置任务名称 | ✅ | `TaskService.createTask()` |
|
|
|
+| TASK-002 | 设置积分值(1-10分,默认2分) | ✅ | `CreateTaskDTO.points` |
|
|
|
+| TASK-003 | 设置截止时间(精确到分钟) | ✅ | 前端多级时间选择器 |
|
|
|
+| TASK-004 | 任务重复设置(每日/每周) | ✅ | `RepeatTaskGenerator` 定时任务 |
|
|
|
+| TASK-005 | 设置任务分类 | ✅ | `Task.category` |
|
|
|
+| TASK-008 | 孩子查看今日任务列表 | ✅ | `TaskService.getTodayTasks()` |
|
|
|
+| TASK-009 | 孩子点击完成按钮提交任务 | ✅ | `TaskService.completeTask()` |
|
|
|
+| TASK-012A~F | 打卡多媒体支持 | ✅ | 照片/视频/录音/文字/倒计时/语音 |
|
|
|
|
|
|
-### 1.2 关键缺陷详情
|
|
|
+### 1.2 积分系统模块
|
|
|
|
|
|
-#### 🔴 P0: 指导师信息入库缺口
|
|
|
-**问题描述**: `UpdateUserDTO` 包含 `teacherNo/teacherPhoto/certificateImage` 字段,但 `UserService.updateUserInfo()` 未处理这些字段。
|
|
|
+| 需求ID | 描述 | 状态 | 实现位置 |
|
|
|
+|--------|------|------|----------|
|
|
|
+| POINT-001 | 完成任务获得基础积分 | ✅ | `TaskService.completeTask()` |
|
|
|
+| POINT-002 | 超额积分规则(家长制定) | ✅ | `Task.bonusRule` JSON + `calculatePointsWithBonusRule()` |
|
|
|
+| POINT-006 | 超时10分钟内不算迟到 | ✅ | `LATE_GRACE_MINUTES = 10` |
|
|
|
+| POINT-007 | 每天最多扣5分 | ✅ | `PENALTY_MAX_DAILY = 5` |
|
|
|
+| POINT-008 | 扣分功能按年龄配置 | ✅ | `Child.penaltyEnabled` |
|
|
|
+| POINT-009 | 积分有效期(按任务设置) | ✅ | `PointsExpireTask` 定时任务 |
|
|
|
|
|
|
-**影响**: 前端提交指导师证书信息后,数据不会落库。
|
|
|
+### 1.3 奖励系统模块
|
|
|
|
|
|
-**位置**:
|
|
|
-- DTO: `zxyj-backend/src/main/java/com/zxyj/dto/UpdateUserDTO.java`
|
|
|
-- Service: `zxyj-backend/src/main/java/com/zxyj/service/UserService.java`
|
|
|
+| 需求ID | 描述 | 状态 | 实现位置 |
|
|
|
+|--------|------|------|----------|
|
|
|
+| REWARD-001 | 孩子添加心愿到心愿单 | ✅ | `RewardService.createWishlist()` |
|
|
|
+| REWARD-001A | 家长填写积分后进入奖励库 | ✅ | `RewardService.approveWishlist()` |
|
|
|
+| REWARD-002A | 家庭奖励库(多家长可调整) | ✅ | `RewardService.updateRewardPoints()` |
|
|
|
+| REWARD-002B | 多孩子心愿单隔离 | ✅ | 按 `childId` 过滤 |
|
|
|
+| REWARD-005 | 家长审批奖励兑换 | ✅ | `RewardService.approveReward()` |
|
|
|
|
|
|
-**修复建议**: 在 `updateUserInfo()` 方法中添加:
|
|
|
-```java
|
|
|
-if (dto.getTeacherNo() != null) user.setTeacherNo(dto.getTeacherNo());
|
|
|
-if (dto.getTeacherPhoto() != null) user.setTeacherPhoto(dto.getTeacherPhoto());
|
|
|
-if (dto.getCertificateImage() != null) user.setCertificateImage(dto.getCertificateImage());
|
|
|
-```
|
|
|
+### 1.4 模式切换模块
|
|
|
|
|
|
-#### 🟡 P1: 家庭检索逻辑疑点
|
|
|
-**问题描述**: `getBoundFamilies()` 使用 `like("teacher_family_ids", String.valueOf(guideId))` 查询,语义不明确。
|
|
|
+| 需求ID | 描述 | 状态 | 实现位置 |
|
|
|
+|--------|------|------|----------|
|
|
|
+| MODE-001~003 | 家长/孩子模式 + 密码切换 | ✅ | JWT + 拦截器 |
|
|
|
+| MODE-006~009 | 角色权限/孩子管理/停用 | ✅ | `ChildController` |
|
|
|
|
|
|
-**风险**: 如果 ID 为 `1`,可能误匹配到 `10, 11, 21` 等包含 `1` 的记录。
|
|
|
+### 1.5 打卡功能模块
|
|
|
|
|
|
-**位置**: `GuideFamilyTaskController.java`
|
|
|
-
|
|
|
-**修复建议**: 改用 JSON 数组查询或单独的关联表。
|
|
|
-
|
|
|
-#### 🟡 P1: 审核DTO字段不一致
|
|
|
-**问题描述**: Controller 批量审核构造 `approved` 字段,Service 审核判断 `result=="pass"`。
|
|
|
-
|
|
|
-**风险**: 若 DTO 未双字段兼容,会导致审核结果偏差。
|
|
|
-
|
|
|
-**修复建议**: 统一审核字段命名,或在 Service 层兼容两种字段。
|
|
|
-
|
|
|
-### 1.3 前端实现状态
|
|
|
-
|
|
|
-| 平台 | 页面 | 状态 | 缺失内容 |
|
|
|
-|------|------|------|---------|
|
|
|
-| Web端 | 指导师中心 | ✅ 完整 | - |
|
|
|
-| Web端 | 家庭任务管理 | ✅ 完整 | - |
|
|
|
-| Web端 | 家长咨询 | ✅ 完整 | - |
|
|
|
-| 小程序 | 指导师中心 | ⚠️ 部分 | 子页面未实现 |
|
|
|
-| 小程序 | 家庭任务管理 | ❌ 缺失 | 无对应页面 |
|
|
|
-| 小程序 | 咨询功能 | ⚠️ 部分 | API存在,UI不完整 |
|
|
|
+| 需求ID | 描述 | 状态 | 实现位置 |
|
|
|
+|--------|------|------|----------|
|
|
|
+| STREAK-001~003 | 连续打卡显示/自动重置 | ✅ | `StreakResetTask` 定时任务 |
|
|
|
|
|
|
---
|
|
|
|
|
|
-## 二、小游戏功能完成情况
|
|
|
-
|
|
|
-### 2.1 三款游戏实现状态
|
|
|
-
|
|
|
-| 游戏 | 前端页面 | 评分逻辑 | API集成 | 后端处理 | 状态 |
|
|
|
-|------|---------|---------|---------|---------|------|
|
|
|
-| **舒尔特方格** | ✅ | ✅ | ✅ | ✅ | **完整** |
|
|
|
-| **猜数字 (1a2b)** | ✅ | ⚠️ 语义不一致 | ✅ | ⚠️ 字段歧义 | **部分** |
|
|
|
-| **数独** | ✅ | ⚠️ 验证不完整 | ✅ | ✅ | **部分** |
|
|
|
-
|
|
|
-### 2.2 关键缺陷详情
|
|
|
-
|
|
|
-#### 🔴 P0: 1a2b 评分语义不一致
|
|
|
-**问题描述**:
|
|
|
-- 后端注释说"5次内完成额外2分",但代码使用 `completionTime < 5`
|
|
|
-- 前端传递的是游戏用时(秒),而非猜测次数
|
|
|
-- 字段名 `completionTime` 与业务含义冲突
|
|
|
-
|
|
|
-**影响**: 奖励逻辑可能不会按预期触发。
|
|
|
-
|
|
|
-**位置**:
|
|
|
-- 前端: `zxyj-frontend/pages/games/1a2b.vue` (line 180)
|
|
|
-- 后端: `MiniGameService.calculatePoints()` 1a2b 分支
|
|
|
-
|
|
|
-**修复建议**:
|
|
|
-1. 修改后端逻辑,根据实际业务需求调整判断条件
|
|
|
-2. 或者修改前端,传递猜测次数而非用时
|
|
|
-
|
|
|
-#### 🟡 P1: 数独验证不完整
|
|
|
-**问题描述**: `checkSolution()` 只检查行、列唯一性,缺少 3x3 宫格验证。
|
|
|
-
|
|
|
-**影响**: 可能接受不符合数独规则的解。
|
|
|
-
|
|
|
-**位置**: `zxyj-frontend/pages/games/sudoku.vue` (line 125-145)
|
|
|
-
|
|
|
-**修复建议**: 添加宫格验证:
|
|
|
-```javascript
|
|
|
-// 检查3x3宫格
|
|
|
-for (let boxRow = 0; boxRow < 9; boxRow += 3) {
|
|
|
- for (let boxCol = 0; boxCol < 9; boxCol += 3) {
|
|
|
- const nums = new Set();
|
|
|
- for (let r = boxRow; r < boxRow + 3; r++) {
|
|
|
- for (let c = boxCol; c < boxCol + 3; c++) {
|
|
|
- nums.add(board[r][c]);
|
|
|
- }
|
|
|
- }
|
|
|
- if (nums.size !== 9) return false;
|
|
|
- }
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-#### 🔴 P0: API 权限校验缺失
|
|
|
-**问题描述**: `completeMiniGame` 接口未验证 `userId` 与 `childId` 的关系。
|
|
|
-
|
|
|
-**风险**: 任何用户都可以为任意孩子提交游戏成绩。
|
|
|
-
|
|
|
-**位置**: `MiniGameController.completeGame()`
|
|
|
-
|
|
|
-**修复建议**: 添加权限校验:
|
|
|
-```java
|
|
|
-User user = userService.getById(userId);
|
|
|
-List<Child> children = childService.getChildrenByFamilyId(user.getFamilyId());
|
|
|
-boolean hasAccess = children.stream().anyMatch(c -> c.getId().equals(childId));
|
|
|
-if (!hasAccess) {
|
|
|
- return Result.error("无权限操作该孩子数据");
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-### 2.3 评分规则汇总
|
|
|
-
|
|
|
-**后端统一积分计算** (`MiniGameService.calculatePoints()`):
|
|
|
-
|
|
|
-| 分数范围 | 积分计算 |
|
|
|
-|---------|---------|
|
|
|
-| score >= 60 | `basePoints + ((score - 60) / 40) * basePoints` |
|
|
|
-| score < 60 | `basePoints * 0.6` |
|
|
|
-| 最低保底 | 1 分 |
|
|
|
-
|
|
|
-**游戏特殊加成**:
|
|
|
-- **舒尔特方格**: 用时 < 30秒 → +2分
|
|
|
-- **猜数字**: completionTime < 5 → +2分 (语义待澄清)
|
|
|
-- **数独**: completionTime < 180秒 → +3分
|
|
|
+## 二、P1 需求完成情况(42%)
|
|
|
+
|
|
|
+### 2.1 已完成模块
|
|
|
+
|
|
|
+| 需求ID | 描述 | 状态 | 实现位置 |
|
|
|
+|--------|------|------|----------|
|
|
|
+| TASK-013 | 任务提醒通知 | ✅ | `TaskReminderService.getTasksNeedReminder()` |
|
|
|
+| TASK-014 | 任务历史记录查询 | ✅ | `TaskReminderService.getTaskHistoryWithFilter()` |
|
|
|
+| TASK-015 | 任务统计分析报表 | ✅ | `TaskReminderService.getTaskStatistics()` |
|
|
|
+
|
|
|
+**新增API端点**:
|
|
|
+- `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}` - 家庭统计
|
|
|
+
|
|
|
+### 2.2 待实现模块
|
|
|
+
|
|
|
+| 需求ID | 描述 | 状态 | 优先级 |
|
|
|
+|--------|------|------|--------|
|
|
|
+| TASK-006~007 | 任务模板/审核设置 | ⚠️ 部分 | 高 |
|
|
|
+| BADGE-001~006 | 勋章系统 | ❌ 未实现 | 中 |
|
|
|
+| REPORT-001~004 | 报表统计 | ❌ 未实现 | 中 |
|
|
|
+| FOCUS-001~008 | 专注训练模块 | ⚠️ 部分 | 中 |
|
|
|
+| DAN-001~015 | DAN测评记录模块 | ❌ 未实现 | 高 |
|
|
|
+| THEME-001 | 主题切换 | ⚠️ 部分 | 低 |
|
|
|
|
|
|
---
|
|
|
|
|
|
-## 三、连续打卡功能完成情况
|
|
|
-
|
|
|
-### 3.1 需求清单与状态
|
|
|
-
|
|
|
-| 需求编号 | 需求描述 | 文档定义 | 代码实现 | 状态 |
|
|
|
-|---------|---------|---------|---------|------|
|
|
|
-| STREAK-001 | 首页显示连续天数 | ✅ | ✅ | **完成** |
|
|
|
-| STREAK-002 | 火苗图标+天数展示 | ✅ | ⚠️ | **部分** |
|
|
|
-| STREAK-003 | 中断自动重置 | ✅ | ⚠️ | **缺失调度** |
|
|
|
-| STREAK-004 | 里程碑奖励发放 | ✅ | ✅ | **完成** |
|
|
|
-
|
|
|
-### 3.2 已实现内容
|
|
|
-
|
|
|
-✅ **数据库表结构**:
|
|
|
-- `streak_milestones`: 里程碑定义表 (3/7/30/100天)
|
|
|
-- `children.streak_days`: 当前连续天数
|
|
|
-- `children.last_task_date`: 最后任务日期
|
|
|
-
|
|
|
-✅ **后端服务**:
|
|
|
-- `StreakService.checkAndAwardMilestone()`: 检查并发放里程碑奖励
|
|
|
-- `StreakService.getStreakProgress()`: 查询打卡进度
|
|
|
-- `StreakService.resetStreakIfNeeded()`: 断签重置逻辑
|
|
|
+## 三、指导师功能完成情况(已修复)
|
|
|
|
|
|
-✅ **API接口**:
|
|
|
-- `GET /api/streak/progress/{childId}`: 查询进度
|
|
|
-- `POST /api/streak/reset`: 手动重置
|
|
|
+### 3.1 原有问题状态
|
|
|
|
|
|
-✅ **前端集成**:
|
|
|
-- `child-index.vue`: 展示进度条、里程碑弹窗
|
|
|
-- `utils/api.js`: API 封装
|
|
|
+| 问题 | 原状态 | 现状态 | 修复位置 |
|
|
|
+|------|--------|--------|----------|
|
|
|
+| 指导师信息入库缺口 | 🔴 未持久化 | ✅ 已修复 | `UserService.updateUserInfo()` |
|
|
|
+| 家庭检索逻辑疑点 | 🟡 模糊匹配 | ✅ 已修复 | `GuideFamilyTaskController` |
|
|
|
+| 审核DTO字段不一致 | 🟡 字段歧义 | ✅ 已修复 | `TaskService.reviewTask()` |
|
|
|
|
|
|
-### 3.3 关键缺陷详情
|
|
|
+### 3.2 指导师7项需求状态
|
|
|
|
|
|
-#### 🟡 P1: 缺少自动调度任务
|
|
|
-**问题描述**: 有重置逻辑,但未绑定定时任务。
|
|
|
+| 需求 | 状态 | 实现位置 |
|
|
|
+|------|------|----------|
|
|
|
+| 首次登录角色选择 | ✅ | `user-edit.vue` |
|
|
|
+| 指导师信息录入 | ✅ | `User.java` 字段 |
|
|
|
+| 查看家庭任务 | ✅ | `GuideFamilyTaskController` |
|
|
|
+| 审核任务 | ✅ | `reviewTask()` |
|
|
|
+| 分享码绑定家庭 | ✅ | `joinFamily()` |
|
|
|
+| 接受家长咨询 | ✅ | `TeacherMessageController` |
|
|
|
+| 调整任务 | ✅ | `updateTask()/deleteTask()` |
|
|
|
|
|
|
-**影响**: 断签不会自动重置,需要手动调用 API。
|
|
|
-
|
|
|
-**修复建议**: 添加定时任务:
|
|
|
-```java
|
|
|
-@Scheduled(cron = "0 0 0 * * ?") // 每天凌晨执行
|
|
|
-public void checkAndResetStreaks() {
|
|
|
- List<Child> children = childMapper.selectList(null);
|
|
|
- for (Child child : children) {
|
|
|
- streakService.resetStreakIfNeeded(child.getId());
|
|
|
- }
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-#### 🟡 P1: API 权限校验缺失
|
|
|
-**问题描述**: `/progress/{childId}` 未验证当前用户是否有权限查看该孩子。
|
|
|
+---
|
|
|
|
|
|
-**风险**: 任何用户都可以查询任意孩子的打卡记录。
|
|
|
+## 四、小游戏功能完成情况(已完善)
|
|
|
|
|
|
-**修复建议**: 参考小游戏 API 权限校验实现。
|
|
|
+### 4.1 原有问题状态
|
|
|
|
|
|
-#### 🟢 P2: 里程碑解析逻辑脆弱
|
|
|
-**问题描述**: `extractMilestoneDays()` 使用正则提取数字,如果描述文案变化可能误判。
|
|
|
+| 问题 | 原状态 | 现状态 | 修复位置 |
|
|
|
+|------|--------|--------|----------|
|
|
|
+| 1a2b评分语义不一致 | 🔴 用时/次数歧义 | ✅ 已修复 | 后端改为用时判断 |
|
|
|
+| 数独验证不完整 | 🟡 缺3x3验证 | ✅ 已修复 | `checkSolution()` |
|
|
|
+| API权限校验缺失 | 🔴 安全漏洞 | ✅ 已修复 | `MiniGameController` |
|
|
|
|
|
|
-**影响**: 低风险,但建议改进。
|
|
|
+### 4.2 三款游戏状态
|
|
|
|
|
|
-**修复建议**: 改用里程碑 ID 或专门的字段标识。
|
|
|
+| 游戏 | 前端 | 后端 | 积分 | 状态 |
|
|
|
+|------|------|------|------|------|
|
|
|
+| 舒尔特方格 | ✅ | ✅ | ✅ | **完整** |
|
|
|
+| 猜数字 (1a2b) | ✅ | ✅ | ✅ | **完整** |
|
|
|
+| 数独 | ✅ | ✅ | ✅ | **完整** |
|
|
|
|
|
|
---
|
|
|
|
|
|
-## 四、测试覆盖情况
|
|
|
-
|
|
|
-### 4.1 已创建测试文件
|
|
|
-
|
|
|
-| 测试文件 | 类型 | 覆盖内容 |
|
|
|
-|---------|------|---------|
|
|
|
-| `tests/unit/games/1a2b.spec.js` | 单元测试 | 首次猜测满分场景 |
|
|
|
-| `tests/e2e/mini-games.spec.js` | E2E测试 | 游戏逻辑验证 |
|
|
|
-| `tests/e2e/mini-games-playwright.spec.js` | E2E测试 | UI流程测试 |
|
|
|
-| `tests/integration/mini-games-api.spec.js` | 集成测试 | API端点测试 |
|
|
|
+## 五、数据库迁移记录
|
|
|
|
|
|
-### 4.2 缺失测试覆盖
|
|
|
-
|
|
|
-❌ **指导师功能测试**: 无对应测试文件
|
|
|
-❌ **打卡功能测试**: 无对应测试文件
|
|
|
-❌ **API权限测试**: 集成测试未覆盖权限校验场景
|
|
|
+| 迁移ID | 描述 | 状态 |
|
|
|
+|--------|------|------|
|
|
|
+| 迁移1-15 | 基础表结构和指导师功能 | ✅ |
|
|
|
+| 迁移16 | `tasks.bonus_rule` 超额积分规则 | ✅ |
|
|
|
+| 迁移17 | `tasks.points_expire_days` 积分有效期 | ✅ |
|
|
|
+| 迁移18 | `points_log.expire_at` 积分过期日期 | ✅ |
|
|
|
+| 迁移19 | `points_log.expired` 过期状态标记 | ✅ |
|
|
|
+| 迁移20 | `tasks.template_id` 重复任务模板追踪 | ✅ |
|
|
|
+| 迁移21 | `tasks.is_template` 模板任务标记 | ✅ |
|
|
|
|
|
|
---
|
|
|
|
|
|
-## 五、修复优先级排序
|
|
|
+## 六、定时任务汇总
|
|
|
|
|
|
-### P0 (高优先级 - 影响核心功能)
|
|
|
+| 任务类 | 执行时间 | 职责 |
|
|
|
+|--------|----------|------|
|
|
|
+| `StreakResetTask` | 每日00:05 | 检查打卡连续性,重置中断 |
|
|
|
+| `PointsExpireTask` | 每日01:00 | 检查积分过期,标记状态 |
|
|
|
+| `RepeatTaskGenerator` | 每日05:00 | 生成每日/每周重复任务实例 |
|
|
|
|
|
|
-1. **指导师信息入库缺口** - 导致证书信息无法保存
|
|
|
-2. **小游戏API权限校验** - 安全漏洞,可越权操作
|
|
|
-3. **1a2b评分语义不一致** - 奖励逻辑不符合预期
|
|
|
+---
|
|
|
|
|
|
-### P1 (中优先级 - 影响功能完整性)
|
|
|
+## 七、近期提交记录
|
|
|
|
|
|
-4. **数独验证逻辑补全** - 可能接受无效解
|
|
|
-5. **打卡自动调度任务** - 断签不会自动重置
|
|
|
-6. **打卡API权限校验** - 安全漏洞
|
|
|
-7. **指导师家庭检索逻辑** - 可能误匹配
|
|
|
-8. **审核DTO字段统一** - 数据一致性风险
|
|
|
+| Commit | 说明 |
|
|
|
+|--------|------|
|
|
|
+| `e9c4180` | TASK-013~015 任务提醒和统计 |
|
|
|
+| `a4d12ef` | 用户操作日志功能 |
|
|
|
+| `85444f6` | TASK-004 任务重复设置 |
|
|
|
+| `5474459` | V1.2 P0需求实现 |
|
|
|
+| `4dc3a20` | 小游戏积分系统、连续打卡 |
|
|
|
|
|
|
-### P2 (低优先级 - 改进建议)
|
|
|
+---
|
|
|
|
|
|
-9. **里程碑解析逻辑加固** - 降低脆弱性
|
|
|
-10. **补充测试覆盖** - 提高代码质量
|
|
|
+## 八、下一步开发建议
|
|
|
|
|
|
----
|
|
|
+### 优先级排序
|
|
|
|
|
|
-## 六、下一步行动建议
|
|
|
+1. **DAN测评记录模块**(P1最高)
|
|
|
+ - 15个需求,架构已规划
|
|
|
+ - 需要:DAN接口对接 + 等级模板
|
|
|
|
|
|
-### 立即执行 (本周)
|
|
|
-- [ ] 修复指导师信息入库缺口
|
|
|
-- [ ] 添加小游戏和打卡 API 权限校验
|
|
|
-- [ ] 澄清 1a2b 评分语义并修正
|
|
|
+2. **勋章系统**(P1中)
|
|
|
+ - 6个需求
|
|
|
+ - 需要新增:Badge实体、解锁逻辑
|
|
|
|
|
|
-### 近期规划 (2周内)
|
|
|
-- [ ] 完善数独验证逻辑
|
|
|
-- [ ] 实现打卡自动重置定时任务
|
|
|
-- [ ] 统一审核 DTO 字段
|
|
|
+3. **报表统计**(P1中)
|
|
|
+ - 4个需求
|
|
|
+ - 需要新增:统计API、前端图表
|
|
|
|
|
|
-### 长期优化 (1月内)
|
|
|
-- [ ] 补充指导师、打卡功能测试
|
|
|
-- [ ] 小程序端指导师任务管理页面
|
|
|
-- [ ] 打卡历史统计与配置界面
|
|
|
+4. **数据导出**(P2)
|
|
|
+ - 3个需求
|
|
|
+ - 导出CSV/Excel格式
|
|
|
|
|
|
---
|
|
|
|
|
|
-**报告生成者**: Sisyphus AI Agent
|
|
|
-**审计范围**: 代码实证 + 需求文档交叉验证
|
|
|
+**报告生成者**: Sisyphus AI Agent
|
|
|
+**审计范围**: 代码实证 + 需求文档交叉验证
|
|
|
**数据来源**: 后端代码、前端代码、数据库 schema、需求文档
|