Sfoglia il codice sorgente

docs: 更新项目文档和需求分析文档

- AGENTS.md:根目录+三子模块全面更新至V2.0
- 需求分析文档V2.0:对比需求文档与代码实现,标注完成状态
- 新增测试清单文档

Ultraworked with Sisyphus

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
User 4 mesi fa
parent
commit
fb6700eac1
4 ha cambiato i file con 716 aggiunte e 1209 eliminazioni
  1. 168 172
      AGENTS.md
  2. 136 0
      docs/系统测试/test-inventory.md
  3. 395 1029
      docs/需求分析/需求分析文档.md
  4. 17 8
      zxyj-backend/AGENTS.md

+ 168 - 172
AGENTS.md

@@ -1,172 +1,168 @@
-# 知心益家 (ZXYJ) - Project Knowledge Base
-
-**Generated:** 2026-04-09
-**Commit:** 20fbc81
-**Branch:** master
-
-## OVERVIEW
-
-家庭教育任务管理小程序,积分奖励激励孩子自主完成任务。双端架构:Spring Boot 后端 + uni-app 微信小程序。
-
-## STRUCTURE
-
-```
-zxyj/
-├── zxyj-backend/       # Spring Boot 后端服务
-│   └── src/main/java/com/zxyj/
-│       ├── controller/ # REST API (已重组为子目录)
-│       │   ├── admin/    # 管理端控制器
-│       │   ├── auth/     # 认证控制器
-│       │   ├── family/   # 家庭管理控制器
-│       │   ├── guide/    # 成长规划师控制器
-│       │   ├── task/     # 任务控制器
-│       │   └── reward/   # 奖励控制器
-│       ├── service/    # 业务逻辑
-│       ├── entity/     # JPA 实体 (Task, Reward, User, etc.)
-│       ├── mapper/     # MyBatis-Plus Mapper
-│       ├── dto/        # 数据传输对象
-│       ├── config/     # 配置类 (Security, JWT, Swagger)
-│       └── common/     # 公共类 (Result, JwtUtil)
-│
-├── zxyj-frontend/      # uni-app 小程序前端
-│   ├── pages/          # 页面组件 (login, index, tasks, rewards, profile)
-│   ├── App.vue         # 应用入口
-│   └── manifest.json   # uni-app 配置
-│
-├── zxyj-web/           # Vue.js Web管理端
-│   └── src/
-│       ├── views/      # 页面组件
-│       ├── api/        # API调用
-│       └── router/     # 路由配置
-│
-└── docs/               # 文档
-    ├── superpowers/    # AI 开发工具配置
-    ├── specs/          # 设计文档
-    ├── plans/          # 实现计划
-    ├── 需求分析/       # 需求分析文档
-    ├── 系统设计/       # 系统设计文档
-    └── 系统测试/       # 系统测试文档
-```
-
-## JAVA LSP 配置
-
-### JDTLS 安装状态
-
-- **JDTLS 路径**: `E:\develop\jdtls`
-- **JDK 21 路径**: `E:\develop\Java\jdk-21.0.10+7`
-- **启动脚本**: `E:\develop\jdtls\bin\jdtls-launch.bat`
-
-### VSCode 配置
-
-`.vscode/settings.json` 已配置:
-```json
-{
-  "java.configuration.runtimes": [
-    { "name": "JavaSE-1.8", "path": "E:\\develop\\Java\\jdk1.8.0_181", "default": true },
-    { "name": "JavaSE-21", "path": "E:\\develop\\Java\\jdk-21.0.10+7" }
-  ],
-  "java.home": "E:\\develop\\Java\\jdk1.8.0_181",
-  "java.jdt.ls.java.home": "E:\\develop\\Java\\jdk-21.0.10+7"
-}
-```
-
-## WHERE TO LOOK
-
-| Task | Location | Notes |
-|------|----------|-------|
-| 添加 REST API | `zxyj-backend/src/main/java/com/zxyj/controller/` | 按功能分组: admin/, auth/, family/, guide/, task/, reward/ |
-| 修改业务逻辑 | `zxyj-backend/src/main/java/com/zxyj/service/` | Service 命名: `XxxService.java` |
-| 添加数据实体 | `zxyj-backend/src/main/java/com/zxyj/entity/` | 使用 MyBatis-Plus 注解 |
-| SQL 查询 | `zxyj-backend/src/main/resources/mapper/` | MyBatis XML 文件 |
-| 添加小程序页面 | `zxyj-frontend/pages/` | 需在 pages.json 注册 |
-| 修改页面样式 | `zxyj-frontend/uni.scss` | 全局样式变量 |
-| 数据库配置 | `zxyj-backend/src/main/resources/application.yml` | MySQL 连接 |
-| 需求分析文档 | `docs/需求分析/` | 需求分析与范围说明 |
-| 系统设计文档 | `docs/系统设计/` | 总体/详细设计说明 |
-| 系统测试文档 | `docs/系统测试/` | 测试计划、用例与报告 |
-
-## CODE MAP
-
-| Symbol | Type | Location | Role |
-|--------|------|----------|------|
-| `AuthController` | Controller | `controller/auth/AuthController.java` | 微信登录、JWT 认证 |
-| `AdminController` | Controller | `controller/admin/AdminController.java` | 管理端API |
-| `TaskController` | Controller | `controller/task/TaskController.java` | 任务 CRUD、审核 |
-| `RewardController` | Controller | `controller/reward/RewardController.java` | 心愿兑换、审批 |
-| `TaskService` | Service | `service/TaskService.java` | 任务业务逻辑 |
-| `User` | Entity | `entity/User.java` | 用户实体 (家长/孩子) |
-| `Task` | Entity | `entity/Task.java` | 任务实体 |
-| `Reward` | Entity | `entity/Reward.java` | 心愿奖励实体 |
-
-## CONVENTIONS
-
-- **后端:** Spring Boot 标准分层架构 (Controller → Service → Mapper)
-- **控制器分组:** 按功能模块分为 admin, auth, family, guide, task, reward
-- **ORM:** MyBatis-Plus,使用 `@TableName`、`@TableId` 注解
-- **API 响应:** 统一使用 `Result<T>` 包装,包含 code、message、data
-- **认证:** JWT Token,放在 Header `Authorization: Bearer {token}`
-- **前端:** uni-app Vue 2 语法,小程序原生组件
-- **Web前端:** Vue 2 + Element UI
-
-## ANTI-PATTERNS
-
-- **DO NOT** 在 Controller 中直接操作数据库
-- **DO NOT** 硬编码 API 地址,使用 `config.baseUrl`
-- **DO NOT** 在前端存储敏感信息 (密码、密钥)
-- **NEVER** 跳过 JWT 认证直接调用需登录接口
-- **ALWAYS** 使用 `Result.success()` / `Result.error()` 返回 API 响应
-
-## UNIQUE STYLES
-
-- 双角色系统:家长端/孩子端,登录后根据 `role` 字段分流,家长端可切孩子端,切换过来的孩子端可退出切换,即时出需要密码。直接登录的孩子端不能切换到家长 端
-- 成长规划师角色系统:成长规划师是个单独的角色,经过认证的成长规划师可以以成长规划师身份登录,成长规划师可切换自己作为家长端
-- 积分机制:完成任务加分、超时扣分,逻辑在 `PointsService`
-- 心愿审批流程:孩子创建 → 家长审批 → 扣减积分
-
-## COMMANDS
-
-```bash
-# 后端开发
-cd zxyj-backend
-mvn clean install          # 编译打包
-mvn spring-boot:run        # 启动开发服务器 (localhost:8080)
-
-# 前端开发
-cd zxyj-frontend
-npm install                # 安装依赖
-npm run dev:mp-weixin      # 开发模式 (微信小程序)
-
-# Web前端开发
-cd zxyj-web
-npm run serve              # 开发模式 (localhost:8082)
-
-# 数据库初始化
-mysql -u root -p zxyj < zxyj-backend/src/main/resources/schema.sql
-```
-
-## NOTES
-
-- 数据库:MySQL 8.0,地址 `192.168.16.251:3306/zxyj`
-- 后端端口:8080,JWT 密钥在 `application.yml`
-- 小程序 AppID:`wx5ba8038ef16fb245`
-- Swagger API 文档:`http://localhost:8080/swagger-ui.html`
-- `.idea/`、`系统功能/` 为 IDE 配置,不影响构建
-
-## HIERARCHICAL DOCUMENTATION
-
-本项目使用分层AGENTS.md文档系统:
-
-```
-zxyj/
-├── AGENTS.md                      # 项目总览 (本文件)
-├── zxyj-backend/AGENTS.md         # 后端详细文档
-├── zxyj-frontend/AGENTS.md        # 小程序前端文档
-├── zxyj-web/AGENTS.md             # Web管理端文档
-├── docs/superpowers/AGENTS.md     # AI开发工具配置
-├── docs/需求分析/                # 需求分析文档
-├── docs/系统设计/                # 系统设计文档
-├── docs/系统测试/                # 系统测试文档
-└── tests/AGENTS.md                # 测试策略文档
-```
-
-每个子目录的AGENTS.md提供该模块的详细信息和特定约定。
+# 知心益家 (ZXYJ) - Project Knowledge Base
+
+**Generated:** 2026-05-07
+**Commit:** {CURRENT_COMMIT}
+**Branch:** master
+
+## OVERVIEW
+
+家庭教育任务管理小程序,积分奖励激励孩子自主完成任务。双端架构:Spring Boot 2.7.18 后端 + uni-app 微信小程序 + Vue 2 Web管理端。
+
+## STRUCTURE
+
+```
+zxyj/
+├── zxyj-backend/       # Spring Boot 后端服务
+│   └── src/main/java/com/zxyj/
+│       ├── controller/ # REST API (按功能分组)
+│       │   ├── admin/      # 管理端
+│       │   ├── assessment/ # 测评订单/预约
+│       │   ├── auth/       # 认证
+│       │   ├── family/     # 家庭管理
+│       │   ├── growth/     # 成长档案
+│       │   ├── guide/      # 成长规划师
+│       │   ├── parent/     # 家长端
+│       │   ├── reward/     # 奖励
+│       │   ├── sncp/       # 社区/活动
+│       │   ├── task/       # 任务
+│       │   └── wish/       # 心愿单
+│       ├── service/     # 业务逻辑
+│       ├── entity/      # MyBatis-Plus 实体 (47个)
+│       ├── mapper/      # MyBatis-Plus Mapper
+│       ├── dto/         # 数据传输对象
+│       ├── config/      # 配置 (JWT, 多数据源, DatabaseInitializer)
+│       └── common/      # 公共类 (Result, JwtUtil)
+│
+├── zxyj-frontend/      # uni-app 微信小程序
+│   ├── pages/          # 页面 (20+ 目录)
+│   │   ├── index/      # 首页(角色分流)
+│   │   ├── assessment/ # 测评申请/下单/报告 (6页)
+│   │   ├── growth/     # 成长档案
+│   │   ├── guide/      # 成长规划师功能
+│   │   ├── parent/     # 家长专属 (预约/市场/心愿)
+│   │   ├── teacher/    # 规划师端 (预约管理)
+│   │   └── ...         # tasks, rewards, profile 等
+│   ├── App.vue         # 应用入口 (自动登录, 全局请求)
+│   ├── store/          # Vuex (双角色状态管理)
+│   └── utils/          # API调用封装
+│
+├── zxyj-web/           # Vue 2 + Element UI Web管理端
+│   └── src/
+│       ├── views/      # 页面 (admin/ + teacher/)
+│       ├── api/        # API封装
+│       ├── router/     # Vue Router (角色权限守卫)
+│       └── store/      # Vuex (认证状态)
+│
+├── docs/               # 文档
+│   ├── superpowers/    # AI开发工具配置
+│   ├── 需求分析/       # 需求分析文档
+│   ├── 系统设计/       # 系统设计文档
+│   └── 系统测试/       # 测试报告
+│
+└── tests/              # 分层测试 (unit/integration/e2e)
+```
+
+## WHERE TO LOOK
+
+| Task | Location | Notes |
+|------|----------|-------|
+| 添加 REST API | `zxyj-backend/.../controller/` | 按功能模块分组 |
+| 修改业务逻辑 | `zxyj-backend/.../service/` | 命名: `XxxService.java` |
+| 添加数据实体 | `zxyj-backend/.../entity/` | MyBatis-Plus @TableName |
+| 数据库迁移 | `zxyj-backend/.../config/DatabaseInitializer.java` | 启动时自动执行 |
+| 多数据源 | `zxyj-backend/.../config/SfmsDataSourceConfig.java` | sfms 只读源 |
+| 数据迁移 | `zxyj-backend/.../service/DataMigrationService.java` | 从sfms导入历史数据 |
+| 添加小程序页面 | `zxyj-frontend/pages/` | 需在 pages.json 注册 |
+| 前端API | `zxyj-frontend/utils/api.js` | 后端接口封装 |
+| 修改全局样式 | `zxyj-frontend/uni.scss` | SCSS变量 |
+| Web前端 | `zxyj-web/src/views/` + `src/router/index.js` | 角色菜单+路由 |
+| 数据库配置 | `zxyj-backend/src/main/resources/application.yml` | MySQL + sfms |
+| 需求/设计文档 | `docs/需求分析/`, `docs/系统设计/` | Markdown格式 |
+| 分层测试 | `tests/` | unit/integration/e2e |
+
+## CODE MAP
+
+| Symbol | Type | Location | Role |
+|--------|------|----------|------|
+| `AuthController` | Controller | `auth/AuthController.java` | 微信登录、JWT 认证 |
+| `AdminController` | Controller | `admin/AdminController.java` | 管理端API |
+| `AssessmentOrderController` | Controller | `assessment/AssessmentOrderController.java` | 测评订单 CRUD、支付 |
+| `AssessmentAppointmentController` | Controller | `assessment/AssessmentAppointmentController.java` | 测评预约管理 |
+| `TaskService` | Service | `service/TaskService.java` | 任务业务逻辑 |
+| `DataMigrationService` | Service | `service/DataMigrationService.java` | sfms → zxyj 全量迁移 |
+| `User` | Entity | `entity/User.java` | 用户 (parent/child/teacher) |
+| `Task` | Entity | `entity/Task.java` | 任务 |
+| `DanAssessmentResult` | Entity | `entity/DanAssessmentResult.java` | DAN测评结果 (含孩子快照) |
+| `DatabaseInitializer` | Config | `config/DatabaseInitializer.java` | 数据库迁移和初始化 |
+| `SfmsDataSourceConfig` | Config | `config/SfmsDataSourceConfig.java` | sfms 多数据源 |
+
+## CONVENTIONS
+
+- **后端:** Spring Boot 标准分层 (Controller → Service → Mapper)
+- **控制器分组:** 按功能模块子目录 (admin, auth, assessment, family, guide 等)
+- **ORM:** MyBatis-Plus,`@TableName` + `@TableId(type = IdType.AUTO)`
+- **API 响应:** 统一 `Result<T>` (code/message/data)
+- **认证:** JWT Bearer Token,`Authorization` Header
+- **DI:** `@Resource` 代替 `@Autowired`,字段名匹配默认 Bean Name
+- **接口方法:** 统一 `@PostMapping`,禁止 `@GetMapping/@PutMapping/@DeleteMapping`
+- **前端:** uni-app Vue 2 Options API
+- **Web前端:** Vue 2 + Element UI,路由守卫处理角色权限
+
+## ANTI-PATTERNS
+
+- **DO NOT** 在 Controller 中直接操作 Mapper
+- **DO NOT** 硬编码 API 地址,使用配置
+- **DO NOT** 在前端存储敏感信息
+- **NEVER** 使用 `@GetMapping/@PutMapping/@DeleteMapping` — 统一 `@PostMapping`
+- **NEVER** 使用 `@Resource(name="xxx")` 与字段名不一致
+- **NEVER** 跳过 JWT 认证调用需登录接口
+- **NEVER** 在微信小程序模板中使用可选链 `?.` (不支持)
+
+## UNIQUE STYLES
+
+- **双角色系统:** 家长端/孩子端,`role` 字段分流。家长端可切换查看孩子视角,切换回来的孩子端退出切换需密码
+- **成长规划师:** 独立角色(`teacher`),可登录规划师端,也可切换回家长视角
+- **积分机制:** 完成任务加分、超时扣分 (`PointsService`)
+- **心愿审批:** 孩子创建 → 家长审批 → 扣减积分
+- **测评订单:** 家长申请 → 选择规划师 → 孩子快照 → 支付 → 规划师录入结果
+- **街道地址:** 四级地址结构(省市区街道),区域回退匹配
+- **多数据源:** zxyj 主库 + sfms 源库 (只读迁移)
+
+## COMMANDS
+
+```bash
+# 后端
+cd zxyj-backend && mvn clean compile  # 编译验证
+mvn spring-boot:run                   # 启动 (localhost:8080)
+
+# 前端小程序
+cd zxyj-frontend && npm run dev:mp-weixin
+
+# Web管理端
+cd zxyj-web && npm run serve          # (localhost:8082)
+
+# 迁移 sfms 历史数据
+curl -X POST http://localhost:8080/api/migration/run
+```
+
+## NOTES
+
+- 数据库: MySQL 8.0 `192.168.16.251:3306/zxyj` (账号: zxyj/zxyj@123)
+- sfms 源库: 同服务器 `sfms` 库 (需在 application.yml 确认)
+- 后端端口: 8080, Web端口: 8082
+- 小程序 AppID: `wx5ba8038ef16fb245`
+- JWT 密钥在 `application.yml`,测试模式跳过微信API
+- `.idea/`, `系统功能/`, `unpackage/`, `dist/` 为构建产物,不提交
+
+## HIERARCHICAL DOCUMENTATION
+
+```
+zxyj/
+├── AGENTS.md                       # 项目总览 (本文件)
+├── zxyj-backend/AGENTS.md          # 后端详细文档
+├── zxyj-frontend/AGENTS.md         # 小程序前端文档
+├── zxyj-web/AGENTS.md              # Web管理端文档
+├── tests/AGENTS.md                 # 测试策略文档
+├── docs/superpowers/AGENTS.md      # AI开发工具配置
+└── docs/需求分析/ 系统设计/ 系统测试/  # 需求/设计/测试文档
+```

+ 136 - 0
docs/系统测试/test-inventory.md

@@ -0,0 +1,136 @@
+# 后端测试覆盖清单
+
+## 总览
+
+| 模块 | 测试文件 | 用例数 | 覆盖率 | 优先级 |
+|------|---------|--------|--------|--------|
+| 服务类型管理 | ServiceTypeServiceTest | 4 | P0-P1 | ✅ 完善 |
+| 服务内容管理 | ServiceContentServiceTest | 5 | P0-P1 | ✅ 完善 |
+| 套餐模板管理 | GuidePackageTemplateServiceTest | 5 | P0 | ✅ 完善 |
+| 指导师套餐 | GuidePackageServiceTest | 6 | P0-P1 | ✅ 新增 |
+| 家庭绑定管理 | GuideFamilyServiceTest | 7 | P0 | ✅ 完善 |
+| 层级关系 | GuideHierarchyServiceTest | 9 | P0-P1 | ✅ 完善 |
+| 团队管理 | GuideTeamControllerTest | 8 | P0 | ✅ 完善 |
+| 家庭任务管理 | GuideFamilyTaskControllerTest | 5 | P0-P1 | ✅ 扩充 |
+| 订单管理 | GuideOrderControllerTest | 5 | P0-P1 | ✅ 新增 |
+| 申请审核 | GuideApplicationServiceTest | 5 | P1 | ✅ 新增 |
+| 教师登录 | TeacherLoginTest | 4 | P0 | ✅ 完善 |
+| 集成测试 | GuideModuleIntegrationTest | 4 | P0 | ✅ 完善 |
+| 小游戏任务 | TaskServiceMinigameTest | - | P1 | 已有 |
+| 小游戏服务 | MiniGameServiceTest | - | P1 | 已有 |
+| **合计** | **14 文件** | **~82** | | |
+
+## 需求 vs 测试映射
+
+### 服务类型管理 (guide-requirements.md §5.1)
+
+| 需求 | API | 测试用例 | 文件 |
+|------|-----|---------|------|
+| 获取服务类型列表 | POST /api/admin/service-types/list | testGetActiveTypes | ServiceTypeServiceTest |
+| 创建服务类型 | POST /api/admin/service-types/create | testCreateType | ServiceTypeServiceTest |
+| 更新服务类型 | POST /api/admin/service-types/update | testUpdateType | ServiceTypeServiceTest |
+| 删除服务类型 | POST /api/admin/service-types/delete | testDeleteType | ServiceTypeServiceTest |
+
+### 服务内容管理 (guide-requirements.md §5.2)
+
+| 需求 | API | 测试用例 | 文件 |
+|------|-----|---------|------|
+| 获取服务内容列表 | POST /api/admin/service-contents/list | testGetActiveContents | ServiceContentServiceTest |
+| 按类型查询 | POST /api/admin/service-contents/by-type | testGetContentsByType | ServiceContentServiceTest |
+| 创建服务内容 | POST /api/admin/service-contents/create | testCreateContent | ServiceContentServiceTest |
+| 更新服务内容 | POST /api/admin/service-contents/update | testUpdateContent | ServiceContentServiceTest |
+| 删除服务内容 | POST /api/admin/service-contents/delete | testDeleteContent | ServiceContentServiceTest |
+| 富文本内容完整 | (存储) | testRichTextContent | ServiceContentServiceTest |
+
+### 套餐模板管理 (guide-requirements.md §5.3)
+
+| 需求 | API | 测试用例 | 文件 |
+|------|-----|---------|------|
+| 获取模板列表 | POST /api/guide/package-templates/list | testGetActiveTemplates | GuidePackageTemplateServiceTest |
+| 创建模板 | POST /api/guide/package-templates/create | testCreateTemplate | GuidePackageTemplateServiceTest |
+| 更新模板 | POST /api/guide/package-templates/update | testUpdateTemplate | GuidePackageTemplateServiceTest |
+| 删除模板 | POST /api/guide/package-templates/delete | testDeleteTemplate | GuidePackageTemplateServiceTest |
+| 价格验证 | (逻辑) | testPriceValidation | GuidePackageTemplateServiceTest |
+
+### 指导师套餐 (guide-requirements.md §5.4)
+
+| 需求 | API | 测试用例 | 文件 |
+|------|-----|---------|------|
+| 添加套餐 | POST /api/guide/packages/add | testAddGuidePackage_Success | GuidePackageServiceTest |
+| 重复添加禁止 | POST /api/guide/packages/add | testAddGuidePackage_Duplicate | GuidePackageServiceTest |
+| 套餐不存在 | POST /api/guide/packages/add | testAddGuidePackage_InvalidPackage | GuidePackageServiceTest |
+| 获取套餐列表 | POST /api/guide/packages/list | testGetGuidePackages | GuidePackageServiceTest |
+| 更新价格 | POST /api/guide/packages/price/update | testUpdatePrice | GuidePackageServiceTest |
+| 删除套餐 | POST /api/guide/packages/delete | testDeleteGuidePackage | GuidePackageServiceTest |
+| 状态流转 | (DRAFT/PUBLISHED/PAUSED) | testStatusTransition | GuidePackageServiceTest |
+
+### 家庭绑定管理 (guide-requirements.md §5.5)
+
+| 需求 | API | 测试用例 | 文件 |
+|------|-----|---------|------|
+| 生成绑定Token | POST /api/guide/families/bind-token | testGenerateBindToken | GuideFamilyServiceTest |
+| 确认绑定(新建) | POST /api/guide/families/confirm-bind | testConfirmBind_CreateNew | GuideFamilyServiceTest |
+| 确认绑定(更新) | POST /api/guide/families/confirm-bind | testConfirmBind_UpdateExisting | GuideFamilyServiceTest |
+| 解除绑定 | POST /api/guide/families/unbind | testUnbind | GuideFamilyServiceTest |
+| 查询绑定状态(未绑定) | POST /api/guide/families/is-bound | testIsBound_NoBinding | GuideFamilyServiceTest |
+| 按指导师查询(无数据) | POST /api/guide/families/by-guide | testGetFamiliesByGuide_NoData | GuideFamilyServiceTest |
+| 按家庭查询指导师 | POST /api/guide/families/guides | testGetGuidesByFamily | GuideFamilyServiceTest |
+
+### 团队管理 (guide-requirements.md §5.6)
+
+| 需求 | API | 测试用例 | 文件 |
+|------|-----|---------|------|
+| 获取我的团队 | POST /api/guide/team | testGetMyTeam_WithMembers | GuideTeamControllerTest |
+| 无团队数据 | POST /api/guide/team | testGetMyTeam_NoInviteCode | GuideTeamControllerTest |
+| 获取邀请码(已有) | POST /api/guide/team/invite-code | testGetMyInviteCode_Existing | GuideTeamControllerTest |
+| 获取邀请码(新建) | POST /api/guide/team/invite-code | testGetMyInviteCode_CreateNew | GuideTeamControllerTest |
+| 生成新邀请码 | POST /api/guide/team/invite-code/generate | testGenerateInviteCode | GuideTeamControllerTest |
+| 获取成员列表(有数据) | POST /api/guide/team/members | testGetTeamMembers_WithData | GuideTeamControllerTest |
+| 获取成员列表(无数据) | POST /api/guide/team/members | testGetTeamMembers_NoInviteCode | GuideTeamControllerTest |
+| 团队统计(有数据) | POST /api/guide/team/stats | testGetTeamStats_WithMembers | GuideTeamControllerTest |
+| 团队统计(无数据) | POST /api/guide/team/stats | testGetTeamStats_NoInviteCode | GuideTeamControllerTest |
+
+### 家庭任务管理 (GuideFamilyTaskController)
+
+| 需求 | API | 测试用例 | 文件 |
+|------|-----|---------|------|
+| 获取绑定的家庭(教师角色) | POST /api/guide/families/bound-families | getBoundFamilies_TeacherRole_Success | GuideFamilyTaskControllerTest |
+| 获取绑定的家庭(非教师拒绝) | POST /api/guide/families/bound-families | getBoundFamilies_NonTeacherRole_AccessDenied | GuideFamilyTaskControllerTest |
+| 获取绑定的家庭(指导师无关联) | POST /api/guide/families/bound-families | getBoundFamilies_NoFamilies | GuideFamilyTaskControllerTest |
+| 获取绑定的家庭(有关联家庭) | POST /api/guide/families/bound-families | getBoundFamilies_WithFamilies | GuideFamilyTaskControllerTest |
+| 获取家庭任务概览(教师角色) | POST /api/guide/families/{id}/overview | getFamilyOverview_Success | GuideFamilyTaskControllerTest |
+
+### 订单管理 (guide-requirements.md §5.8)
+
+| 需求 | API | 测试用例 | 文件 |
+|------|-----|---------|------|
+| 获取订单列表(默认分页) | POST /api/guide/orders/list | testGetOrders_DefaultPagination | GuideOrderControllerTest |
+| 获取订单列表(按状态过滤) | POST /api/guide/orders/list | testGetOrders_FilterByStatus | GuideOrderControllerTest |
+| 获取订单统计 | POST /api/guide/orders/stats | testGetOrderStats | GuideOrderControllerTest |
+| 获取订单详情(存在) | POST /api/guide/orders/detail | testGetOrderDetail_Exists | GuideOrderControllerTest |
+| 获取订单详情(不存在) | POST /api/guide/orders/detail | testGetOrderDetail_NotFound | GuideOrderControllerTest |
+| 获取订单详情(参数缺失) | POST /api/guide/orders/detail | testGetOrderDetail_MissingParam | GuideOrderControllerTest |
+
+### 申请审核 (GuideApplicationService)
+
+| 需求 | API | 测试用例 | 文件 |
+|------|-----|---------|------|
+| 申请入驻 | POST /api/guide/apply/new | testApplyNew | GuideApplicationServiceTest |
+| 申请升级 | POST /api/guide/apply/upgrade | testApplyUpgrade | GuideApplicationServiceTest |
+| 获取待审列表 | POST /api/admin/guide/applications/pending | testGetPendingApplications | GuideApplicationServiceTest |
+| 审批通过 | POST /api/admin/guide/applications/{id}/approve | testApproveApplication | GuideApplicationServiceTest |
+| 审批拒绝 | POST /api/admin/guide/applications/{id}/reject | testRejectApplication | GuideApplicationServiceTest |
+| 审批不存在 | POST /api/admin/guide/applications/{id}/approve | testApprove_NotFound | GuideApplicationServiceTest |
+
+## 测试数据 ID 分配
+
+| 服务 | ID范围 | 说明 |
+|------|--------|------|
+| GuideFamilyService | 99901-99999 | 已占用 |
+| GuideHierarchyService | 81001-81999 | 已占用 |
+| GuidePackageService | 82001-82999 | 已分配 |
+| GuideApplicationService | 83001-83999 | 已分配 |
+| TeacherLoginTest | test_teacher_openid_* | 已占用 |
+| GuidePackageTemplateService | 自动生成 | |
+| ServiceTypeService | 自动生成 | |
+| ServiceContentService | 自动生成 | |

+ 395 - 1029
docs/需求分析/需求分析文档.md

@@ -1,1029 +1,395 @@
-# 心知益家小程序需求分析文档
-
-## 版本信息
-
-| 版本 | 日期 | 作者 | 变更说明 |
-|------|------|------|----------|
-| V1.0 | 2026-03-30 | Sisyphus | 初始版本 |
-| V1.1 | 2026-03-30 | Sisyphus | 确认技术方案:Java后端、API对接DAN测评、年龄分级扣分、AI审核 |
-| V1.2 | 2026-05-04 | Sisyphus | 新增DAN测评任务系统:测评资料管理、积分配置、家庭启用/关闭、周期性提醒 |
-| V1.3 | 2026-05-04 | Sisyphus | 新增成长规划师注册与升级系统:双注册路径、三级套餐、审核流程、升级可见性规则 |
-
----
-
-## 1. 项目概述
-
-### 1.1 产品背景
-
-本产品源于一位程序员父亲为解决6岁孩子拖延症而开发的小程序"宝贝积分屋"。在解决亲子教育中"任务管理+即时反馈"这一核心痛点的基础上,引入"双培强基工程"的DAN测评体系,为每个孩子提供基于科学测评的个性化任务模板。
-
-### 1.2 产品定位
-
-**产品名称**:心知益家  
-**产品类型**:微信小程序  
-**核心定位**:基于DAN测评的家庭教育任务管理工具,通过积分奖励机制激励孩子自主完成任务,培养时间管理和延迟满足能力。  
-**目标用户**:6-12岁儿童家长(主要决策者)、6-12岁儿童(实际使用者)
-
----
-
-## 2. 一句话总结
-
-**用积分奖励机制解决孩子拖延症,并基于DAN科学测评生成个性化任务模板,让家庭教育更高效、更有趣。**
-
----
-
-## 3. 功能架构总览
-
-```
-心知益家
-├── 核心功能模块
-│   ├── 任务管理(发布、执行、完成、审核)
-│   ├── 积分系统(获取、消耗、余额)
-│   ├── 奖励体系(心愿单、兑换记录)
-│   └── 双模式切换(家长模式/孩子模式)
-├── 激励功能模块
-│   ├── 连续打卡(火苗天数)
-│   ├── 勋章墙(成就系统)
-│   └── 成长周报(数据统计)
-├── 专注训练模块
-│   ├── 简单模式(10/15/20分钟)
-│   ├── 番茄钟模式(25+5分钟)
-│   └── 语音鼓励(分阶段提示)
-├── 测评模板模块(DAN测评)
-│   ├── 测评数据录入
-│   ├── 等级解析(A1-B6)
-│   └── 个性化任务模板生成
-└── 增值功能
-    ├── 家庭多角色管理
-    ├── 主题皮肤切换
-    └── 数据导出
-```
-
----
-
-## 4. 逐块需求拆解
-
-### 4.1 任务管理模块
-
-#### 4.1.1 任务发布
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| TASK-001 | 家长可创建任务,设置任务名称 | P0 |
-| TASK-002 | 设置任务积分值(1-10分,默认2分) | P0 |
-| TASK-003 | 设置任务截止时间(精确到分钟) | P0 |
-| TASK-004 | 设置任务重复周期(每日/每周/自定义) | P1 |
-| TASK-005 | 设置任务分类(学习类/生活类/运动类/游戏类/其他) | P0 |
-| TASK-006 | 支持任务备注/说明 | P2 |
-| TASK-007 | 预设任务模板快速创建 | P1 |
-
-#### 4.1.2 任务执行
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| TASK-008 | 孩子可查看今日任务列表 | P0 |
-| TASK-009 | 孩子点击"完成"按钮提交任务 | P0 |
-| TASK-010 | 提前完成奖励机制(额外+1分) | P0 |
-| TASK-011 | 超时判断(10分钟内不算迟到) | P0 |
-| TASK-012 | 超时扣分机制(每天最多扣5分,可关闭) | P0 |
-| TASK-012A | 打卡支持照片上传 | P0 |
-| TASK-012B | 打卡支持视频上传 | P0 |
-| TASK-012C | 打卡支持录音上传 | P0 |
-| TASK-012D | 打卡支持文字描述 | P0 |
-| TASK-012E | 打卡支持倒计时功能(开始任务时启动倒计时) | P0 |
-| TASK-012F | 倒计时结束时语音提醒 | P0 |
-| TASK-013 | 部分任务需家长审核确认 | P1 |
-| TASK-013A | 家长自定义需要审核的任务范围(按分类/按任务) | P1 |
-| TASK-013B | 审核方式:拍照上传完成凭证 | P1 |
-| TASK-013C | AI辅助审核:根据照片和视频判断任务完成情况 | P1 |
-| TASK-013D | AI可根据任务完成情况给出任务调整建议 | P2 |
-
-#### 4.1.3 任务审核模块(AI辅助,仅付费会员)
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| REVIEW-001 | 任务需要审核时,孩子拍照上传完成凭证 | P1 |
-| REVIEW-002 | AI自动识别照片内容,判断完成质量 | P1 |
-| REVIEW-003 | AI给出审核建议(三档:通过/疑似通过/需人工确认) | P1 |
-| REVIEW-004 | 家长可选择AI审核或手动审核(AI审核仅付费会员可用) | P1 |
-| REVIEW-005 | 家长可修改AI审核结果 | P1 |
-| REVIEW-006 | 审核记录留存,可追溯 | P2 |
-| REVIEW-007 | AI审核阈值可自定义(严格/一般/宽松) | P2 |
-
-#### 4.1.4 任务管理
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| TASK-014 | 任务历史记录查看 | P0 |
-| TASK-015 | 任务完成情况统计 | P0 |
-| TASK-016 | 任务编辑、删除、暂停 | P0 |
-
----
-
-### 4.2 积分系统模块
-
-#### 4.2.1 积分获取
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| POINT-001 | 完成任务获得基础积分 | P0 |
-| POINT-002 | 超额完成获得额外积分(提前或超质完成,家长制定规则) | P0 |
-| POINT-003 | 专注训练满分获得额外积分 | P1 |
-| POINT-004 | 连续打卡奖励机制 | P1 |
-| POINT-005 | 手动调整积分(家长操作,需密码) | P2 |
-
-#### 4.2.2 积分规则
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| POINT-006 | 超时10分钟以内不算迟到(保护机制) | P0 |
-| POINT-007 | 每天最多扣5分(破产保护) | P0 |
-| POINT-008 | 扣分功能按年龄配置:9岁以下默认关闭,9岁及以上默认开启 | P0 |
-| POINT-008A | 家长可手动调整扣分开关(覆盖年龄默认配置) | P0 |
-| POINT-009 | 积分不清零,可设置积分有效期(按任务设置) | P0 |
-| POINT-009A | 每月提醒有哪些积分快过期 | P0 |
-| POINT-010 | 过期未领取积分失效 | P0 |
-
----
-
-### 4.3 奖励体系模块
-
-#### 4.3.1 心愿单
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| REWARD-001 | 孩子可添加想要的奖励到心愿单 | P0 |
-| REWARD-001A | 家长填写所需积分后心愿进入奖励库 | P0 |
-| REWARD-002 | 奖励设置名称、所需积分、分类 | P0 |
-| REWARD-002A | 家庭奖励库(多个家长都可调整) | P0 |
-| REWARD-002B | 多孩子心愿单隔离 | P0 |
-| REWARD-003 | 奖励分类:物质类/精神类/特权类(支持家长自定义分类) | P0 |
-| REWARD-003A | 家长可自定义奖励分类名称和图标 | P1 |
-| REWARD-004 | 进度条显示(已攒积分/所需积分) | P0 |
-| REWARD-005 | 家长审批奖励兑换 | P0 |
-
-#### 4.3.2 奖励库
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| REWARD-006 | 奖励模板即奖励库,展示用户自己的心愿和公开发布的奖励 | P0 |
-| REWARD-007 | 奖励兑换历史记录 | P1 |
-| REWARD-008 | 奖励下架/编辑功能 | P2 |
-
----
-
-### 4.4 双模式切换模块
-
-#### 4.4.1 模式定义
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| MODE-001 | 家长模式:发布任务、审批奖励、查看报告,也可执行由孩子或成长规划师安排的任务 | P1 |
-| MODE-002 | 孩子模式:查看任务、完成任务、查看积分 | P0 |
-| MODE-003 | 密码切换模式(4位数字密码) | P0 |
-| MODE-004 | 首次使用引导设置密码 | P0 |
-
-#### 4.4.2 多角色管理
-
-系统支持四类角色:管理员、成长规划师、家长、孩子。
-
-| 角色 | 可登录端 | 说明 |
-|------|----------|------|
-| 管理员 | Web端 | 系统管理后台 |
-| 成长规划师 | Web端 + 小程序 | 负责家庭任务指导 |
-| 家长 | 小程序 | 发布任务、审批奖励 |
-| 孩子 | 小程序 | 完成任务、查看积分 |
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| MODE-005 | 家长邀请码机制(其他家长加入) | P1 |
-| MODE-006 | 角色权限区分(管理员/普通家长/孩子) | P0 |
-| MODE-007 | 孩子信息管理(支持多孩) | P0 |
-| MODE-008 | 孩子账号停用功能 | P0 |
-| MODE-009 | 停用的孩子不可登录且不可被切换 | P0 |
-| MODE-010 | 成长规划师注册与审核 | P2 |
-| MODE-011 | 家长任务支持与孩子相同的完成方式 | P1 |
-| MODE-012 | 谁制定任务谁审核;孩子任务可在创建时指定家长/自动/成长规划师审核 | P1 |
-| MODE-013 | 多个家长场景下,所有家长都可审核孩子任务 | P1 |
-
----
-
-### 4.5 连续打卡模块
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| STREAK-001 | 首页显示连续完成任务天数 | P0 |
-| STREAK-002 | 火苗图标+天数组合显示 | P0 |
-| STREAK-003 | 连续打卡中断自动重置 | P0 |
-| STREAK-004 | 连续打卡里程碑奖励(3天/7天/30天等) | P1 |
-
----
-
-### 4.6 勋章墙模块
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| BADGE-001 | 首次完成任务勋章 | P1 |
-| BADGE-002 | 连续3天按时完成勋章 | P1 |
-| BADGE-003 | 一周获得50积分勋章 | P1 |
-| BADGE-004 | 完成100个任务勋章 | P1 |
-| BADGE-005 | 勋章解锁动画/特效 | P2 |
-| BADGE-006 | 勋章展示墙界面 | P1 |
-
----
-
-### 4.7 成长周报模块
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| REPORT-001 | 每周自动生成报告 | P1 |
-| REPORT-002 | 展示内容:完成任务数、按时完成率 | P1 |
-| REPORT-003 | 展示内容:与上周对比(进步/退步) | P1 |
-| REPORT-004 | 展示内容:表现最佳日期 | P1 |
-| REPORT-005 | 周报推送通知(可选) | P2 |
-
----
-
-### 4.8 专注训练模块
-
-#### 4.8.1 训练模式
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| FOCUS-001 | 简单模式:10/15/20分钟可选 | P1 |
-| FOCUS-002 | 番茄钟模式:25分钟+5分钟休息 | P1 |
-| FOCUS-003 | 大字体倒计时圆环显示 | P1 |
-| FOCUS-004 | 训练中禁止退出(可选,需家长开启) | P1 |
-| FOCUS-004A | 计时方式:手机倒计时(孩子自行控制) | P1 |
-
-#### 4.8.2 评分与奖励
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| FOCUS-005 | 完成后自评1-5颗星 | P1 |
-| FOCUS-006 | 获得积分数=星数(1-5分) | P1 |
-| FOCUS-007 | 满分5星额外奖励+1分 | P1 |
-| FOCUS-008 | 每日训练次数上限(默认3次,可配置) | P1 |
-
-#### 4.8.3 语音功能(注:本项目不需要文字转语音播报)
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| VOICE-001 | 语音转文字:用于AI审核时识别孩子语音说明 | P1 |
-
----
-
-### 4.9 DAN测评记录模块
-
-DAN测评是测评记录,不作为孩子的基本信息,与任务、心愿平行。
-
-#### 4.9.1 测评数据获取
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| DAN-001 | 通过接口获取DAN测评数据 | P1 |
-| DAN-002 | 测评记录存储与历史查看 | P1 |
-| DAN-003 | 测评记录与任务模板关联 | P1 |
-
-#### 4.9.2 等级与任务映射
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| DAN-004 | A1等级(幼儿园小班)推荐任务模板 | P1 |
-| DAN-005 | A2等级(幼儿园中班)推荐任务模板 | P1 |
-| DAN-006 | A3等级(幼儿园大班)推荐任务模板 | P1 |
-| DAN-007 | B1等级(小学一年级)推荐任务模板 | P1 |
-| DAN-008 | B2等级(小学二年级)推荐任务模板 | P1 |
-| DAN-009 | B3等级(小学三年级)推荐任务模板 | P1 |
-| DAN-010 | B4等级(小学四年级)推荐任务模板 | P1 |
-| DAN-011 | B5等级(小学五年级)推荐任务模板 | P1 |
-| DAN-012 | B6等级(小学六年级)推荐任务模板 | P1 |
-
-#### 4.9.3 模板生成
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| DAN-013 | 根据DAN等级生成推荐任务列表 | P1 |
-| DAN-014 | 家长可编辑/调整模板任务 | P1 |
-| DAN-015 | 一键启用模板生成今日任务 | P1 |
-
-### 4.10 DAN测评任务系统(系统级任务)
-
-#### 4.10.1 系统概述
-
-DAN测评任务是由成长规划师为家庭启用的系统级周期性任务,完成后可获得积分奖励。积分可用于后续服务购买抵扣。
-
-**核心特性:**
-- 成长规划师可为家庭启用/关闭DAN测评任务
-- 周期性提醒(默认12个月,可选6个月)
-- 完成获得积分奖励(默认100分,可配置)
-- 积分价值可配置(1积分 = X元,默认0.01元)
-- 家长可在家长端查看当前DAN测评任务状态
-
-#### 4.10.2 角色权限
-
-| 角色 | 权限 |
-|------|------|
-| 管理员 | 管理测评资料(增删改查、启用/停用)、配置积分规则 |
-| 成长规划师 | 为家庭启用/关闭DAN测评、修改提醒周期、查看家庭测评列表 |
-| 家长 | 查看当前测评任务、查看历史测评记录 |
-
-#### 4.10.3 功能清单
-
-| 需求编号 | 功能描述 | 优先级 | 归属角色 |
-|----------|----------|--------|----------|
-| ASSESS-001 | 管理员创建/编辑/删除测评资料 | P1 | 管理员 |
-| ASSESS-002 | 管理员配置积分值(完成获得积分)和积分价值(1积分=元) | P1 | 管理员 |
-| ASSESS-003 | 成长规划师查看所负责家庭的测评配置列表 | P1 | 成长规划师 |
-| ASSESS-004 | 成长规划师为家庭启用DAN测评任务 | P1 | 成长规划师 |
-| ASSESS-005 | 成长规划师修改已启用家庭的提醒周期 | P1 | 成长规划师 |
-| ASSESS-006 | 成长规划师关闭家庭的DAN测评任务 | P1 | 成长规划师 |
-| ASSESS-007 | 家长查看当前DAN测评任务详情 | P1 | 家长 |
-| ASSESS-008 | 家长查看DAN测评历史记录 | P1 | 家长 |
-| ASSESS-009 | 外部系统回调完成DAN测评任务 | P1 | 外部系统 |
-| ASSESS-010 | 管理员设置资料状态(启用/停用) | P1 | 管理员 |
-
-#### 4.10.4 API接口设计
-
-**管理员接口:**
-
-| 接口 | 方法 | 说明 |
-|------|------|------|
-| `/api/admin/assessment/materials` | GET | 获取测评资料列表 |
-| `/api/admin/assessment/materials` | POST | 创建测评资料 |
-| `/api/admin/assessment/materials/{id}` | PUT | 更新测评资料 |
-| `/api/admin/assessment/materials/{id}` | DELETE | 删除测评资料 |
-| `/api/admin/assessment/config` | GET | 获取积分配置 |
-| `/api/admin/assessment/config` | PUT | 更新积分配置 |
-
-**成长规划师接口:**
-
-| 接口 | 方法 | 说明 |
-|------|------|------|
-| `/api/guide/assessment/families` | GET | 获取家庭测评配置列表 |
-| `/api/guide/assessment/family/enable` | POST | 启用家庭DAN测评 |
-| `/api/guide/assessment/family/{familyId}` | DELETE | 关闭家庭DAN测评 |
-
-**家长接口:**
-
-| 接口 | 方法 | 说明 |
-|------|------|------|
-| `/api/parent/assessment/current` | GET | 获取当前DAN测评任务 |
-| `/api/parent/assessment/records` | GET | 获取测评历史记录 |
-| `/api/parent/assessment/complete/{recordId}` | POST | 外部系统回调完成测评 |
-
-#### 4.10.5 数据库设计
-
-```
-测评资料表(assessment_materials)
-├── id (BIGINT, PK, AUTO_INCREMENT)
-├── title (VARCHAR 255)              -- 资料标题
-├── content (TEXT)                   -- 资料内容介绍
-├── cover_image (VARCHAR 500)        -- 封面图片URL
-├── status (VARCHAR 20)             -- 状态: active/inactive
-├── created_at (DATETIME)
-└── updated_at (DATETIME)
-
-积分配置表(assessment_points_config)
-├── id (BIGINT, PK, AUTO_INCREMENT)
-├── config_key (VARCHAR 50)          -- 配置键: points_value / points_value_yuan
-├── config_value (DECIMAL 10,2)      -- 配置值
-├── created_at (DATETIME)
-└── updated_at (DATETIME)
-
-家庭测评配置表(family_assessment_config)
-├── id (BIGINT, PK, AUTO_INCREMENT)
-├── family_id (BIGINT, UNIQUE)       -- 家庭ID(唯一)
-├── material_id (BIGINT)             -- 关联测评资料ID
-├── remind_months (INT)             -- 提醒周期(6或12个月)
-├── is_enabled (TINYINT)             -- 是否启用: 1=启用, 0=关闭
-├── last_remind_at (DATETIME)        -- 上次提醒时间
-├── next_remind_at (DATETIME)        -- 下次提醒时间
-├── created_at (DATETIME)
-└── updated_at (DATETIME)
-
-测评记录表(assessment_records)
-├── id (BIGINT, PK, AUTO_INCREMENT)
-├── family_id (BIGINT)               -- 家庭ID
-├── material_id (BIGINT)             -- 关联测评资料ID
-├── status (VARCHAR 20)              -- 状态: pending/completed
-├── completed_at (DATETIME)          -- 完成时间
-├── created_at (DATETIME)
-└── updated_at (DATETIME)
-```
-
-#### 4.10.6 默认配置值
-
-| 配置项 | 默认值 | 说明 |
-|--------|--------|------|
-| points_value | 100 | 完成DAN测评获得积分 |
-| points_value_yuan | 0.01 | 1积分等于0.01元 |
-| remind_months | 12 | 默认提醒周期12个月 |
-| material_status | active | 新建资料默认启用 |
-
----
-
-### 4.11 主题皮肤模块
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| THEME-001 | 默认主题(一套主题,先行实现) | P1 |
-| THEME-002 | 阳光橙主题 | P2 |
-| THEME-003 | 恐龙探险主题 | P2 |
-| THEME-004 | 太空冒险主题 | P2 |
-| THEME-005 | 梦幻城堡主题 | P2 |
-| THEME-006 | 海洋世界主题 | P2 |
-
----
-
-### 4.12 数据导出模块
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| EXPORT-001 | 任务历史导出(Excel格式) | P2 |
-| EXPORT-002 | 错题本图片生成 | P2 |
-| EXPORT-003 | 成长周报导出 | P2 |
-
-### 4.13 成长规划师注册与等级系统
-
-#### 4.13.1 角色定位
-
-成长规划师是经过认证的专业人员,负责为家庭提供任务指导和DAN测评服务。规划师拥有独立的功能界面,可查看和管理所负责的家庭。
-
-| 属性 | 说明 |
-|------|------|
-| 登录端 | Web端(管理家庭)+ 小程序(查看任务) |
-| 数据范围 | 以家庭为单位查看家庭信息,进入家庭后可看成员和任务详情 |
-| 身份切换 | 可切换为家长身份,再切换到自己家庭的孩子;不能直接切换为孩子 |
-| 审核状态 | 申请中(待审核)→ 正式规划师(审核通过) |
-
-#### 4.13.2 注册路径
-
-规划师注册有两条路径,都需要购买套餐并经过后台审核:
-
-| 路径 | 说明 | 适用场景 |
-|------|------|----------|
-| 直接注册 | 直接注册为规划师身份 | 已从事教育工作的专业人员 |
-| 家长申请 | 已有家长账号,申请升级为规划师 | 已有家庭数据,想拓展为规划师服务 |
-
-**注册流程(两条路径相同):**
-1. 选择规划师套餐级别(初级/中级/高级)
-2. 线下购买套餐,获得付款凭证(截图)
-3. 提交申请,上传付款凭证
-4. 后台管理员审核(通过/拒绝)
-5. 审核通过后,正式成为规划师,可使用规划师功能
-
-#### 4.13.3 规划师等级与套餐
-
-规划师分为三级:初级、中级、高级。不同级别对应不同的服务和权限:
-
-| 等级 | 说明 | 典型价格区间 |
-|------|------|--------------|
-| 初级 | 基础规划师,可服务少量家庭 | 较低 |
-| 中级 | 中级规划师,可服务更多家庭,有更多工具 | 中等 |
-| 高级 | 高级规划师,享有全部功能和服务 | 较高 |
-
-**套餐内容(具体由管理员配置):**
-- 初级套餐:服务家庭数量限制、基本功能权限
-- 中级套餐:更多服务名额、进阶工具
-- 高级套餐:无限制、全部功能、优先支持
-
-#### 4.13.4 升级规则
-
-已认证的规划师可以通过购买升级服务提升等级:
-
-| 当前等级 | 可升级至 | 升级方式 |
-|----------|----------|----------|
-| 初级 | 中级 | 购买初级升中级服务 |
-| 初级 | 高级 | 购买直升高级服务 |
-| 中级 | 高级 | 购买中级升高级服务 |
-| 高级 | - | 已是最高等级 |
-
-**升级服务可见性规则(仅规划师可见):**
-
-| 当前等级 | 可见的升级选项 | 不可见的选项 |
-|----------|----------------|--------------|
-| 初级 | 升中级、直升高级 | - |
-| 中级 | 升高级 | 初级升中级(已是中级) |
-| 高级 | 无 | 任何升级选项 |
-
-#### 4.13.5 审核流程
-
-| 步骤 | 操作者 | 状态 | 说明 |
-|------|--------|------|------|
-| 1 | 用户 | 提交申请 | 上传付款凭证,选择套餐级别 |
-| 2 | 系统 | 生成订单 | 创建待支付订单 |
-| 3 | 用户 | 线下付款 | - |
-| 4 | 用户 | 上传凭证 | 提交付款截图 |
-| 5 | 系统 | 待审核 | 显示"申请中"状态 |
-| 6 | 管理员 | 审核通过/拒绝 | 验证付款凭证 |
-| 7 | 系统 | 正式规划师 | 审核通过后解锁规划师功能 |
-
-**小程序端显示:**
-- 申请中:显示"申请中"提示,等待管理员审核
-- 审核通过:解锁规划师页面入口,正常使用
-- 审核拒绝:显示拒绝原因,可重新提交
-
-#### 4.13.6 功能清单
-
-| 需求编号 | 功能描述 | 优先级 |
-|----------|----------|--------|
-| GUIDE-001 | 规划师注册(直接注册/家长申请) | P1 |
-| GUIDE-002 | 套餐选择与购买 | P1 |
-| GUIDE-003 | 付款凭证上传 | P1 |
-| GUIDE-004 | 申请状态查看(申请中/已通过/已拒绝) | P1 |
-| GUIDE-005 | 管理员审核申请(通过/拒绝) | P1 |
-| GUIDE-006 | 规划师等级查看 | P1 |
-| GUIDE-007 | 升级服务购买(升中级/直升高级/升高级) | P1 |
-| GUIDE-008 | 升级可见性控制(根据当前等级显示对应选项) | P1 |
-| GUIDE-009 | 家庭列表查看(以家庭为单位) | P1 |
-| GUIDE-010 | 家庭详情查看(成员信息、任务完成情况) | P1 |
-| GUIDE-011 | 规划师身份切换为家长 | P1 |
-| GUIDE-012 | 规划师不能切换为孩子 | P1 |
-
-#### 4.13.7 API接口设计
-
-**用户端接口:**
-
-| 接口 | 方法 | 说明 |
-|------|------|------|
-| `/api/auth/register-guide` | POST | 直接注册为规划师 |
-| `/api/auth/apply-upgrade` | POST | 家长申请成为规划师 |
-| `/api/guide/upgrade/packages` | GET | 获取可见的升级套餐(根据当前等级) |
-| `/api/guide/upgrade/apply` | POST | 申请升级(购买升级服务) |
-| `/api/guide/profile` | GET | 获取规划师信息和等级 |
-| `/api/guide/families` | GET | 获取负责的家庭列表 |
-| `/api/guide/family/{id}` | GET | 获取家庭详情(成员+任务) |
-
-**管理端接口:**
-
-| 接口 | 方法 | 说明 |
-|------|------|------|
-| `/api/admin/guide-applications` | GET | 获取规划师申请列表 |
-| `/api/admin/guide-applications/{id}/approve` | POST | 审核通过 |
-| `/api/admin/guide-applications/{id}/reject` | POST | 审核拒绝 |
-| `/api/admin/guide-packages` | GET/POST/PUT/DELETE | 套餐管理(CRUD) |
-| `/api/admin/upgrade-packages` | GET/POST/PUT/DELETE | 升级服务管理(CRUD) |
-
-#### 4.13.8 数据库设计
-
-```
-规划师申请表(guide_applications)
-├── id (BIGINT, PK, AUTO_INCREMENT)
-├── user_id (BIGINT)                     -- 申请人用户ID
-├── type (VARCHAR 20)                   -- 申请类型: new_apply/upgrade
-├── package_id (BIGINT)                 -- 申请的套餐ID
-├── payment_proof (VARCHAR 500)         -- 付款凭证URL
-├── status (VARCHAR 20)                 -- 状态: pending/approved/rejected
-├── reject_reason (VARCHAR 500)         -- 拒绝原因
-├── reviewed_at (DATETIME)              -- 审核时间
-├── reviewed_by (BIGINT)                -- 审核人ID
-├── created_at (DATETIME)
-└── updated_at (DATETIME)
-
-规划师套餐表(guide_packages)
-├── id (BIGINT, PK, AUTO_INCREMENT)
-├── name (VARCHAR 100)                  -- 套餐名称
-├── level (VARCHAR 20)                  -- 等级: junior/intermediate/senior
-├── price (DECIMAL 10,2)                -- 价格
-├── description (TEXT)                   -- 套餐描述
-├── service_limit (INT)                 -- 服务名额限制
-├── features (JSON)                     -- 功能权限列表
-├── is_active (TINYINT)                 -- 是否上架
-├── sort_order (INT)                    -- 排序
-├── created_at (DATETIME)
-└── updated_at (DATETIME)
-
-升级服务表(upgrade_services)
-├── id (BIGINT, PK, AUTO_INCREMENT)
-├── from_level (VARCHAR 20)             -- 原等级
-├── to_level (VARCHAR 20)               -- 目标等级
-├── name (VARCHAR 100)                  -- 服务名称
-├── price (DECIMAL 10,2)                -- 价格
-├── description (TEXT)                  -- 描述
-├── is_active (TINYINT)                 -- 是否上架
-├── created_at (DATETIME)
-└── updated_at (DATETIME)
-
-规划师表(guides)
-├── id (BIGINT, PK, AUTO_INCREMENT)
-├── user_id (BIGINT, UNIQUE)            -- 用户ID(唯一)
-├── level (VARCHAR 20)                  -- 等级: junior/intermediate/senior
-├── status (VARCHAR 20)                 -- 状态: active/inactive
-├── service_count (INT)                 -- 当前服务家庭数
-├── package_id (BIGINT)                 -- 购买套餐ID
-├── approved_at (DATETIME)              -- 审核通过时间
-├── created_at (DATETIME)
-└── updated_at (DATETIME)
-
-规划师-家庭关联表(guide_family_relations)
-├── id (BIGINT, PK, AUTO_INCREMENT)
-├── guide_id (BIGINT)                   -- 规划师ID
-├── family_id (BIGINT)                  -- 家庭ID
-├── created_at (DATETIME)
-└── UNIQUE(guide_id, family_id)
-```
-
-#### 4.13.9 关键概念定义
-
-| 概念 | 定义 | 备注 |
-|------|------|------|
-| **直接注册** | 未登录状态下直接注册为规划师账号 | 适用于教育从业者 |
-| **家长申请** | 已有家长账号,申请升级为规划师 | 保留原家庭数据 |
-| **申请中** | 提交申请后、审核前的状态 | 小程序端显示此状态 |
-| **付款凭证** | 线下购买套餐的付款截图 | 管理员审核依据 |
-| **升级服务** | 已认证规划师购买更高级别服务 | 仅对规划师可见 |
-| **直升高级** | 初级规划师直接购买高级服务 | 跳过中级 |
-
-#### 4.13.10 默认配置值
-
-| 配置项 | 默认值 | 说明 |
-|--------|--------|------|
-| 默认套餐等级 | 初级 | 新注册默认初级 |
-| 申请状态 | pending | 提交后默认待审核 |
-| 升级服务可见性 | 根据当前等级 | 初级见全部,中级见高级,高级无 |
-
----
-
-## 5. 关键概念定义
-
-| 概念 | 定义 | 备注 |
-|------|------|------|
-| **心知益家** | 本产品名称 | 体现"用心了解、家庭教育"的核心理念 |
-| **双培强基工程** | 青少年教育项目 | 通过科技、数据、AI、心理科学方式揭示孩子成长规律 |
-| **DAN测评** | 素质能力测评体系 | 分为A1-B6共9个等级,A系列为幼儿园阶段,B系列为小学阶段 |
-| **即时反馈** | 任务完成后立即获得积分奖励 | 解决孩子缺乏动力问题的核心机制 |
-| **延迟满足** | 通过攒积分换取奖励 | 培养孩子的耐心和规划能力 |
-| **番茄工作法** | 专注训练的理论基础 | 25分钟专注+5分钟休息的循环工作法 |
-| **火苗连续打卡** | 连续完成所有任务的天数计数 | 利用损失厌恶心理激励持续行动 |
-
----
-
-## 6. DAN测评等级参考(仅供参考)
-
-基于双培强基工程的DAN素质能力测评体系:
-
-| 等级 | 对应年龄段 | 发展特点 | 推荐任务类型 |
-|------|------------|----------|--------------|
-| A1 | 幼儿园小班(3-4岁) | 注意力集中时间短,以游戏为主 | 简单生活任务(穿衣服、收拾玩具)、5分钟绘本阅读 |
-| A2 | 幼儿园中班(4-5岁) | 开始有规则意识,可进行简单任务 | 生活自理、简单家务、10分钟绘画/绘本 |
-| A3 | 幼儿园大班(5-6岁) | 幼小衔接阶段,可接受学业任务 | 拼音基础、简单计算、15分钟专注训练 |
-| B1 | 小学一年级 | 学习习惯养成初期 | 写字练习、口算、20分钟阅读 |
-| B2 | 小学二年级 | 具备基本学习能力 | 乘法口诀、抄写练习、25分钟专注 |
-| B3 | 小学三年级 | 转折期,需要培养独立性 | 英语启蒙、科学小实验、30分钟专注 |
-| B4 | 小学四年级 | 自主学习能力发展 | 思维训练、小作文、自主复习 |
-| B5 | 小学五年级 | 学业压力增加 | 专题复习、错题整理、时间规划 |
-| B6 | 小学六年级 | 小升初准备阶段 | 综合复习、模拟测试、学习策略 |
-
----
-
-## 7. 需求确认纪要
-
-### 已确认事项
-
-| 序号 | 确认项 | 确认内容 |
-|------|--------|----------|
-| CONF-01 | 技术栈 | Java后端(Spring Boot)+ MySQL |
-| CONF-02 | DAN测评对接 | 通过接口获取测评数据,作为测评记录(不作为孩子基本信息) |
-| CONF-03 | 扣分机制 | 9岁以下默认关闭,9岁及以上默认开启,家长可手动调整 |
-| CONF-04 | 审核机制 | 家长自定义需要审核的任务范围,审核方式为照片或视频上传 |
-| CONF-05 | AI辅助审核 | 新增AI辅助审核功能,判断任务完成质量,仅付费会员可用 |
-| CONF-06 | 多孩支持 | 支持多个孩子账户,各自有独立的积分和任务 |
-| CONF-07 | 奖励类型 | 家长可自定义奖励分类 |
-| CONF-08 | 主题 | 先做一套默认主题,其他主题后续迭代 |
-| CONF-09 | 游戏功能 | 推理训练、空间训练、反应训练等功能后续实现 |
-| CONF-10 | 积分有效期 | 积分不清零,按任务设置有效期,并每月提醒即将过期积分 |
-| CONF-11 | 奖励来源 | 系统预设模板 + 家长自定义 |
-| CONF-12 | 兑换方式 | 需家长审批通过后生效 |
-| CONF-13 | 过期未领取 | 积分失效 |
-| CONF-14 | 专注训练-计时方式 | 手机倒计时(孩子自行) |
-| CONF-15 | 专注训练-退出限制 | 家长可设置不可退出 |
-| CONF-16 | 专注训练-积分计算 | 1-5分=1-5星 |
-| CONF-17 | 专注训练-每日上限 | 每日3次 |
-| CONF-18 | 语音功能 | 不需要文字转语音播报,语音转文字用于AI审核 |
-| CONF-19 | DAN对接方式 | 通过接口获取测评数据,作为测评记录使用 |
-| CONF-20 | AI审核-服务 | 调用大模型API |
-| CONF-21 | AI审核-判断逻辑 | 三档:通过/疑似通过/需人工确认 |
-| CONF-22 | AI审核-误判处理 | 家长可修改AI审核结果 |
-| CONF-23 | 数据存储 | 云存储 |
-| CONF-24 | 隐私协议 | 需要 |
-| CONF-25 | 敏感词过滤 | 需要 |
-| CONF-26 | 首次使用 | 引导设置孩子信息 |
-| CONF-27 | 家长端首页 | 任务管理为主 |
-| CONF-28 | 孩子端首页 | 任务列表为主 |
-| CONF-29 | 预期用户量 | 1000+ |
-| CONF-30 | DAN测评任务系统 | 成长规划师启用/关闭,周期性提醒,完成获积分 |
-| CONF-31 | 积分配置 | 积分值(默认100分)和积分价值(1积分=0.01元)由管理员配置 |
-| CONF-32 | 提醒周期 | 6个月或12个月可选 |
-| CONF-33 | 测评完成方式 | 外部系统回调,不需家长手动操作 |
-| CONF-34 | 规划师注册路径 | 两条路径:直接注册/家长申请,都需购买套餐+审核 |
-| CONF-35 | 规划师等级 | 三级:初级、中级、高级,不同价格不同服务 |
-| CONF-36 | 升级服务可见性 | 初级可见升中级+直升高级;中级可见升高级;高级无 |
-| CONF-37 | 审核状态显示 | 申请中状态显示在小程序端,审核通过后进入规划师页面 |
-| CONF-38 | 规划师身份切换 | 不能切换到孩子;可切换到家长,再切换自己孩子 |
-| CONF-39 | 规划师数据范围 | 以家庭为单位查看,进入家庭后才看到成员和任务详情 |
-| CONF-40 | 付款凭证 | 线下购买需上传截图作为审核依据 |
-
-### 🔴 需持续关注
-
-| 问题编号 | 问题描述 | 影响 | 建议解决方案 |
-|----------|----------|------|--------------|
-| PROB-002 | 模板生成逻辑需要专家输入 | A1-B6各等级的任务难度、类型划分需要教育专家确认 | 预留配置表结构,支持后续专家导入 |
-
-### 🟢 提示与注意事项
-
-| 提示编号 | 提示内容 |
-|----------|----------|
-| TIP-001 | 采用自建Java后端,需准备服务器和域名 |
-| TIP-002 | 初期可先实现MVP(核心任务+积分+奖励),其他功能后续迭代 |
-| TIP-003 | 语音功能需考虑微信小程序音频播放API限制 |
-| TIP-004 | 多角色管理需考虑数据权限隔离 |
-| TIP-005 | AI审核需调用大模型API,需考虑成本和调用限制 |
-
----
-
-## 8. 验收标准
-
-### 8.1 P0级验收标准(必须完成)
-
-| 功能 | 验收条件 |
-|------|----------|
-| 任务发布 | 家长可创建任务,设置名称、积分值(1-10)、截止时间 |
-| 任务执行 | 孩子可查看任务列表,点击完成,积分自动增加;家长也可执行被分配任务 |
-| 超额完成奖励 | 提前完成或超质完成可获额外积分,由家长制定规则 |
-| 超时保护 | 10分钟内不算迟到;每天最多扣5分;扣分可关闭 |
-| 积分查询 | 实时显示当前积分余额 |
-| 心愿单 | 孩子可添加奖励,家长填写积分后进入奖励库,并支持家庭奖励库与多孩子隔离 |
-| 模式切换 | 家长/孩子模式可通过密码切换 |
-
-### 8.2 P1级验收标准
-
-| 功能 | 验收条件 |
-|------|----------|
-| 连续打卡 | 首页显示连续天数,火苗图标,断签重置 |
-| 专注训练 | 倒计时显示,1-5星评分,对应积分奖励 |
-| 语音鼓励 | 关键节点自动播放语音提示 |
-| 勋章墙 | 完成成就解锁勋章,展示在页面上 |
-| 成长周报 | 每周生成报告,显示任务完成率、对比数据 |
-| DAN测评模板 | 根据等级生成推荐任务,家长可编辑启用 |
-| DAN测评任务系统 | 成长规划师可为家庭启用/关闭DAN测评,完成获得积分奖励 |
-| 规划师注册与审核 | 两条注册路径都需购买套餐+审核;申请中状态显示在小程序 |
-| 规划师等级与升级 | 三级等级,升级服务可见性根据当前等级控制(初级全可见/中级见高级/高级无) |
-| 规划师功能 | 以家庭为单位查看数据;不能切换孩子;可切换家长再切换孩子 |
-
-### 8.3 P2级验收标准
-
-| 功能 | 验收条件 |
-|------|----------|
-| 多角色管理 | 家长邀请码机制,多人协作管理 |
-| 主题皮肤 | 5套主题可切换 |
-| 数据导出 | 任务历史、成长报告可导出 |
-
----
-
-## 9. 技术方案
-
-### 9.1 技术栈
-
-- **前端**:Uni-app
-- **后端**:Java(Spring Boot)
-- **数据库**:MySQL
-- **缓存**:Redis(可选)
-- **文件存储**:云存储(用于存储审核照片)
-- **AI服务**:
-  - 大模型API(用于DAN报告解析、任务审核、任务调整建议)
-  - 图片/视频识别(用于任务审核)
-  - 语音转文字(用于AI审核时的语音输入识别)
-
-### 9.2 技术架构
-
-```
-┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
-│   微信小程序    │────▶│   Java后端      │────▶│    MySQL        │
-│   (前端)        │     │   (Spring Boot) │     │    数据库       │
-└─────────────────┘     └─────────────────┘     └─────────────────┘
-                               │
-              ┌────────────────┼────────────────┐
-              ▼                ▼                ▼
-       ┌────────────┐  ┌────────────┐  ┌────────────┐
-       │ AI审核服务  │  │ DAN报告    │  │ 云存储     │
-       │(大模型API) │  │ 解析服务   │  │ (照片存储) │
-       └────────────┘  └────────────┘  └────────────┘
-```
-
-### 9.3 系统特性
-
-| 特性 | 说明 |
-|------|------|
-| 预期用户量 | 1000+ |
-| 服务器 | 已有 |
-| 隐私保护 | 需接入隐私协议 |
-| 敏感词过滤 | 任务/奖励名称需过滤 |
-
-### 9.4 数据库设计建议
-
-```
-用户表(users)
-├── id (BIGINT, PK)
-├── openid (VARCHAR)
-├── role (ENUM: 'parent', 'child')
-├── family_id (BIGINT, FK)
-├── nickname (VARCHAR)
-├── avatar (VARCHAR)
-├── password (VARCHAR, 加密)
-└── created_at (DATETIME)
-
-家庭表(families)
-├── id (BIGINT, PK)
-├── name (VARCHAR)
-├── invite_code (VARCHAR, 唯一)
-├── created_at (DATETIME)
-
-任务表(tasks)
-├── id (BIGINT, PK)
-├── family_id (BIGINT, FK)
-├── creator_id (BIGINT, FK)
-├── child_id (BIGINT, FK)
-├── title (VARCHAR)
-├── points (INT)
-├── deadline (DATETIME)
-├── repeat_type (ENUM: 'none', 'daily', 'weekly')
-├── category (VARCHAR)
-├── need_review (BOOLEAN)
-├── status (ENUM: 'pending', 'completed', 'overdue')
-├── completed_at (DATETIME)
-└── created_at (DATETIME)
-
-积分表(points_log)
-├── id (BIGINT, PK)
-├── user_id (BIGINT, FK)
-├── task_id (BIGINT, FK)
-├── amount (INT)
-├── type (ENUM: 'earn', 'spend', 'bonus', 'penalty')
-├── description (VARCHAR)
-└── created_at (DATETIME)
-
-奖励表(rewards)
-├── _id
-├── family_id
-├── child_id
-├── title
-├── points_required
-├── category
-├── status(available/exchanged)
-├── exchanged_at
-└── created_at
-
-DAN测评表(dan_assessment)
-├── _id
-├── child_id
-├── dan_level
-├── assessment_date
-├── details(JSON)
-└── created_at
-
-任务模板表(task_templates)
-├── id
-├── dan_level
-├── title
-├── points
-├── duration_minutes
-├── category
-├── is_default
-└── created_at
-
-审核记录表(task_reviews)
-├── id
-├── task_id
-├── child_id
-├── photo_url
-├── ai_result(pass/review/pending)
-├── ai_confidence
-├── ai_suggestion
-├── parent_result(pass/reject)
-├── review_type(ai/manual)
-└── created_at
-
-孩子信息表(children)
-├── id
-├── family_id
-├── nickname
-├── age
-├── dan_level
-├── penalty_enabled
-├── theme
-├── total_points
-├── streak_days
-└── created_at
-
-奖励分类表(reward_categories)
-├── id
-├── family_id
-├── name
-├── icon
-├── sort_order
-└── created_at
-
-规划师申请表(guide_applications)
-├── id (BIGINT, PK)
-├── user_id (BIGINT)                     -- 申请人用户ID
-├── type (VARCHAR 20)                    -- 申请类型: new_apply/upgrade
-├── package_id (BIGINT)                  -- 申请的套餐ID
-├── payment_proof (VARCHAR 500)          -- 付款凭证URL
-├── status (VARCHAR 20)                  -- 状态: pending/approved/rejected
-├── reject_reason (VARCHAR 500)          -- 拒绝原因
-├── reviewed_at (DATETIME)               -- 审核时间
-├── reviewed_by (BIGINT)                 -- 审核人ID
-└── created_at (DATETIME)
-
-规划师套餐表(guide_packages)
-├── id (BIGINT, PK)
-├── name (VARCHAR 100)                   -- 套餐名称
-├── level (VARCHAR 20)                   -- 等级: junior/intermediate/senior
-├── price (DECIMAL 10,2)                 -- 价格
-├── description (TEXT)                   -- 套餐描述
-├── service_limit (INT)                  -- 服务名额限制
-├── features (JSON)                      -- 功能权限列表
-├── is_active (TINYINT)                  -- 是否上架
-└── sort_order (INT)
-
-升级服务表(upgrade_services)
-├── id (BIGINT, PK)
-├── from_level (VARCHAR 20)              -- 原等级
-├── to_level (VARCHAR 20)                -- 目标等级
-├── name (VARCHAR 100)                   -- 服务名称
-├── price (DECIMAL 10,2)                 -- 价格
-├── description (TEXT)                   -- 描述
-├── is_active (TINYINT)                  -- 是否上架
-└── created_at (DATETIME)
-
-规划师表(guides)
-├── id (BIGINT, PK)
-├── user_id (BIGINT, UNIQUE)            -- 用户ID(唯一)
-├── level (VARCHAR 20)                   -- 等级: junior/intermediate/senior
-├── status (VARCHAR 20)                  -- 状态: active/inactive
-├── service_count (INT)                  -- 当前服务家庭数
-├── package_id (BIGINT)                  -- 购买套餐ID
-├── approved_at (DATETIME)               -- 审核通过时间
-└── created_at (DATETIME)
-
-规划师-家庭关联表(guide_family_relations)
-├── id (BIGINT, PK)
-├── guide_id (BIGINT)                    -- 规划师ID
-├── family_id (BIGINT)                   -- 家庭ID
-└── UNIQUE(guide_id, family_id)
-```
-
----
-
-## 10. 优先级总结
-
-### 第一阶段:MVP(建议2-3周)
-
-| 功能 | 优先级 | 备注 |
-|------|--------|------|
-| 任务发布与执行 | P0 | 含自定义审核范围、拍照上传 |
-| 积分系统 | P0 | 含年龄分级扣分开关 |
-| 奖励/心愿单 | P0 | 含自定义分类 |
-| 双模式切换 | P0 | 含密码保护 |
-| 多孩支持 | P0 | 核心需求 |
-| 超时保护机制 | P0 | 10分钟缓冲、每日最多扣5分 |
-
-### 第二阶段:增强功能(建议2周)
-
-| 功能 | 优先级 | 备注 |
-|------|--------|------|
-| 连续打卡 | P1 | 火苗图标、里程碑奖励 |
-| 专注训练 | P1 | 番茄钟模式 |
-| 语音鼓励 | P1 | 文字转语音 |
-| 勋章墙 | P1 | 成就系统 |
-| AI辅助审核 | P1 | 照片识别+审核建议 |
-| 默认主题 | P1 | 先做一套主题 |
-
-### 第三阶段:增值功能(建议1-2周)
-
-| 功能 | 优先级 | 备注 |
-|------|--------|------|
-| 成长周报 | P1 | 数据统计报告 |
-| DAN测评模板 | P1 | API对接或手动录入 |
-| 多主题皮肤 | P2 | 5套主题可选 |
-| 多角色管理 | P2 | 家长邀请码 |
-
-### 第四阶段:未来规划
-
-| 功能 | 优先级 | 备注 |
-|------|--------|------|
-| 推理训练游戏 | P2 | 找规律、数独等 |
-| 空间训练游戏 | P2 | 图形拼接、迷宫等 |
-| 反应训练游戏 | P2 | 快速点击、记忆翻牌等 |
-
----
-
-## 附录:参考资源
-
-1. 原文参考:[为了解决小孩拖延症,我肝了2天时间用AI做了这个小程序](https://mp.weixin.qq.com/s/xfParpf9u9D-Q5l7qoEExw)
-2. 双培强基工程官网:https://psychdream.com/
-
----
-
-*本文档版本 V1.3,新增成长规划师注册与升级系统。后续可根据开发进展和用户反馈持续迭代。*
+# 心知益家小程序需求分析文档
+
+## 版本信息
+
+| 版本 | 日期 | 作者 | 变更说明 |
+|------|------|------|----------|
+| V1.0 | 2026-03-30 | Sisyphus | 初始版本 |
+| V1.3 | 2026-05-04 | Sisyphus | 新增成长规划师注册与升级系统 |
+| **V2.0** | **2026-05-07** | **Sisyphus** | **基于开发进度重新梳理,分离已完成/未完成需求,更新为P0-MVP/P1-增强/P2-未来三层结构** |
+
+---
+
+## 1. 项目概述
+
+### 1.1 产品背景
+
+本产品源于一位程序员父亲为解决6岁孩子拖延症而开发的小程序"宝贝积分屋"。在解决亲子教育中"任务管理+即时反馈"这一核心痛点的基础上,引入"双培强基工程"的DAN测评体系,为每个孩子提供基于科学测评的个性化任务模板。
+
+### 1.2 产品定位
+
+**产品名称**:心知益家  
+**产品类型**:微信小程序 + Web管理端  
+**核心定位**:基于DAN测评的家庭教育任务管理工具,通过积分奖励机制激励孩子自主完成任务,培养时间管理和延迟满足能力。  
+**目标用户**:6-12岁儿童家长(主要决策者)、6-12岁儿童(实际使用者)、成长规划师(专业服务提供者)
+
+---
+
+## 2. 总体状态
+
+| 模块 | 状态 | 说明 |
+|------|------|------|
+| 用户认证 | ✅ 已完成 | 微信登录、JWT认证、角色分流 |
+| 任务管理 | ✅ 已完成 | 创建/执行/审核/查看 |
+| 积分系统 | ✅ 已完成 | 获取/消耗/流水/扣分规则 |
+| 奖励体系 | ✅ 已完成 | 心愿单/兑换/审批/预设模板 |
+| 双模式切换 | ✅ 已完成 | 家长/孩子/规划师三种角色切换 |
+| 连续打卡 | ✅ 已完成 | 火苗天数显示/里程碑 |
+| 勋章墙 | ✅ 已完成 | 勋章定义/解锁/展示 |
+| 专注训练 | ✅ 已完成 | 简单模式/番茄钟/评分 |
+| 小游戏 | ✅ 已完成 | 数独/舒尔特方格/1A2B |
+| 敏感词过滤 | ✅ 已完成 | 内容安全 |
+| 街道地址匹配 | ✅ 已完成 | 四级地址回退 |
+| 任务模板 | ✅ 已完成 | 按DAN等级/系统默认 |
+| Web管理端 | ✅ 已完成 | 管理员后台 |
+| **测评订单(含支付)** | **✅ 已完成** | **P0链路贯通** |
+| **测评预约管理** | **✅ 已完成** | **规划师/家长端** |
+| **Web管理端侧边栏** | **✅ 已完成** | **admin+teacher双菜单** |
+| **多数据源+迁移** | **✅ 已完成** | **sfms→zxyj迁移** |
+| 成长档案 | ✅ 已完成 | 创建/查看/详情 |
+| **成长规划师端** | **🟡 已完成** | **Web端7页面+小程序端** |
+| **成长档案(增强)** | **🟡 已完成** | **测评关联/快照** |
+| 家长端成长档案入口 | ✅ 已完成 | 首页快捷操作 |
+| 成长周报 | 🔴 未开始 | 数据统计/周报生成 |
+| AI辅助审核 | 🔴 未开始 | 图片识别/大模型审核 |
+| OCR/DAN报告解析 | 🔴 未开始 | 拍照上传自动解析 |
+| 支付回调 | 🔴 未开始 | 微信支付真实回调 |
+| 语音鼓励 | 🔴 未开始 | 专注训练语音 |
+| 主题皮肤 | 🔴 未开始 | 多主题切换 |
+| 多角色管理(邀请码) | 🔴 未开始 | 家长协作 |
+| 数据导出 | 🔴 未开始 | Excel/报告导出 |
+| 微信支付集成 | 🔴 未开始 | 真实商户号配置 |
+
+---
+
+## 3. 已完成功能清单
+
+### 3.1 任务管理模块
+
+| 需求编号 | 功能描述 | 优先级 | 状态 |
+|----------|----------|--------|------|
+| TASK-001 | 家长可创建任务,设置任务名称 | P0 | ✅ |
+| TASK-002 | 设置任务积分值(1-10分,默认2分) | P0 | ✅ |
+| TASK-003 | 设置任务截止时间(精确到分钟) | P0 | ✅ |
+| TASK-004 | 设置任务重复周期(每日/每周/自定义) | P1 | ✅ |
+| TASK-005 | 设置任务分类(学习/生活/运动/游戏/其他) | P0 | ✅ |
+| TASK-006 | 支持任务备注/说明 | P2 | ✅ |
+| TASK-007 | 预设任务模板快速创建 | P1 | ✅ |
+| TASK-008 | 孩子可查看今日任务列表 | P0 | ✅ |
+| TASK-009 | 孩子点击"完成"按钮提交任务 | P0 | ✅ |
+| TASK-010 | 提前完成奖励机制(额外+1分) | P0 | ✅ |
+| TASK-011 | 超时判断(10分钟内不算迟到) | P0 | ✅ |
+| TASK-012 | 超时扣分机制(每天最多扣5分,可关闭) | P0 | ✅ |
+| TASK-012A | 打卡支持照片上传 | P0 | ✅ |
+| TASK-012B | 打卡支持视频上传 | P0 | ✅ |
+| TASK-012C | 打卡支持录音上传 | P0 | ✅ |
+| TASK-012D | 打卡支持文字描述 | P0 | ✅ |
+| TASK-012E | 打卡支持倒计时功能 | P0 | ✅ |
+| TASK-012F | 倒计时结束时语音提醒 | P0 | ✅ |
+| TASK-013 | 部分任务需家长审核确认 | P1 | ✅ |
+| TASK-013A | 家长自定义需要审核的任务范围(按分类/按任务) | P1 | ✅ |
+| TASK-013B | 审核方式:拍照上传完成凭证 | P1 | ✅ |
+| TASK-014 | 任务历史记录查看 | P0 | ✅ |
+| TASK-015 | 任务完成情况统计 | P0 | ✅ |
+| TASK-016 | 任务编辑、删除、暂停 | P0 | ✅ |
+| REVIEW-006 | 审核记录留存,可追溯 | P2 | ✅ |
+
+### 3.2 积分系统模块
+
+| 需求编号 | 功能描述 | 优先级 | 状态 |
+|----------|----------|--------|------|
+| POINT-001 | 完成任务获得基础积分 | P0 | ✅ |
+| POINT-002 | 超额完成获得额外积分 | P0 | ✅ |
+| POINT-003 | 专注训练满分获得额外积分 | P1 | ✅ |
+| POINT-004 | 连续打卡奖励机制 | P1 | ✅ |
+| POINT-005 | 手动调整积分(家长操作,需密码) | P2 | ✅ |
+| POINT-006 | 超时10分钟以内不算迟到(保护机制) | P0 | ✅ |
+| POINT-007 | 每天最多扣5分(破产保护) | P0 | ✅ |
+| POINT-008 | 扣分功能按年龄配置 | P0 | ✅ |
+| POINT-008A | 家长可手动调整扣分开关 | P0 | ✅ |
+| POINT-009 | 积分不清零,可设置积分有效期 | P0 | ✅ |
+| POINT-009A | 每月提醒有哪些积分快过期 | P0 | ✅ |
+| POINT-010 | 过期未领取积分失效 | P0 | ✅ |
+
+### 3.3 奖励体系模块
+
+| 需求编号 | 功能描述 | 优先级 | 状态 |
+|----------|----------|--------|------|
+| REWARD-001 | 孩子可添加想要的奖励到心愿单 | P0 | ✅ |
+| REWARD-001A | 家长填写所需积分后心愿进入奖励库 | P0 | ✅ |
+| REWARD-002 | 奖励设置名称、所需积分、分类 | P0 | ✅ |
+| REWARD-002A | 家庭奖励库(多个家长都可调整) | P0 | ✅ |
+| REWARD-002B | 多孩子心愿单隔离 | P0 | ✅ |
+| REWARD-003 | 奖励分类:物质类/精神类/特权类 | P0 | ✅ |
+| REWARD-003A | 家长可自定义奖励分类名称和图标 | P1 | ✅ |
+| REWARD-004 | 进度条显示(已攒积分/所需积分) | P0 | ✅ |
+| REWARD-005 | 家长审批奖励兑换 | P0 | ✅ |
+| REWARD-006 | 奖励模板即奖励库 | P0 | ✅ |
+| REWARD-007 | 奖励兑换历史记录 | P1 | ✅ |
+| REWARD-008 | 奖励下架/编辑功能 | P2 | ✅ |
+
+### 3.4 角色与模式切换模块
+
+| 需求编号 | 功能描述 | 优先级 | 状态 |
+|----------|----------|--------|------|
+| MODE-001 | 家长模式:发布任务、审批奖励、查看报告 | P1 | ✅ |
+| MODE-002 | 孩子模式:查看任务、完成任务、查看积分 | P0 | ✅ |
+| MODE-003 | 密码切换模式(4位数字密码) | P0 | ✅ |
+| MODE-004 | 首次使用引导设置密码 | P0 | ✅ |
+| MODE-005 | 家长邀请码机制(其他家长加入) | P1 | ✅ |
+| MODE-006 | 角色权限区分(管理员/普通家长/孩子) | P0 | ✅ |
+| MODE-007 | 孩子信息管理(支持多孩) | P0 | ✅ |
+| MODE-008 | 孩子账号停用功能 | P0 | ✅ |
+| MODE-009 | 停用的孩子不可登录且不可被切换 | P0 | ✅ |
+| MODE-010 | 成长规划师注册与审核 | P2 | ✅ |
+| MODE-011 | 家长任务支持与孩子相同的完成方式 | P1 | ✅ |
+| MODE-012 | 谁制定任务谁审核;孩子任务可指定审核人 | P1 | ✅ |
+| MODE-013 | 多个家长都可审核孩子任务 | P1 | ✅ |
+
+### 3.5 激励模块
+
+| 需求编号 | 功能描述 | 优先级 | 状态 |
+|----------|----------|--------|------|
+| STREAK-001 | 首页显示连续完成任务天数 | P0 | ✅ |
+| STREAK-002 | 火苗图标+天数组合显示 | P0 | ✅ |
+| STREAK-003 | 连续打卡中断自动重置 | P0 | ✅ |
+| STREAK-004 | 连续打卡里程碑奖励(3/7/30/100天) | P1 | ✅ |
+
+| 需求编号 | 功能描述 | 优先级 | 状态 |
+|----------|----------|--------|------|
+| BADGE-001 | 首次完成任务勋章 | P1 | ✅ |
+| BADGE-002 | 连续3天按时完成勋章 | P1 | ✅ |
+| BADGE-003 | 一周获得50积分勋章 | P1 | ✅ |
+| BADGE-004 | 完成100个任务勋章 | P1 | ✅ |
+| BADGE-005 | 勋章解锁动画/特效 | P2 | ✅ |
+| BADGE-006 | 勋章展示墙界面 | P1 | ✅ |
+
+### 3.6 专注训练模块
+
+| 需求编号 | 功能描述 | 优先级 | 状态 |
+|----------|----------|--------|------|
+| FOCUS-001 | 简单模式:10/15/20分钟可选 | P1 | ✅ |
+| FOCUS-002 | 番茄钟模式:25分钟+5分钟休息 | P1 | ✅ |
+| FOCUS-003 | 大字体倒计时圆环显示 | P1 | ✅ |
+| FOCUS-004 | 训练中禁止退出(可选,需家长开启) | P1 | ✅ |
+| FOCUS-004A | 计时方式:手机倒计时(孩子自行控制) | P1 | ✅ |
+| FOCUS-005 | 完成后自评1-5颗星 | P1 | ✅ |
+| FOCUS-006 | 获得积分数=星数(1-5分) | P1 | ✅ |
+| FOCUS-007 | 满分5星额外奖励+1分 | P1 | ✅ |
+| FOCUS-008 | 每日训练次数上限(默认3次,可配置) | P1 | ✅ |
+
+### 3.7 主题皮肤模块
+
+| 需求编号 | 功能描述 | 优先级 | 状态 |
+|----------|----------|--------|------|
+| THEME-001 | 默认主题 | P1 | ✅ |
+
+### 3.8 小游戏模块
+
+| 需求编号 | 功能描述 | 优先级 | 状态 |
+|----------|----------|--------|------|
+| GAME-001 | 数独游戏 | P2 | ✅ |
+| GAME-002 | 舒尔特方格(注意力训练) | P2 | ✅ |
+| GAME-003 | 1A2B猜数字 | P2 | ✅ |
+| GAME-004 | 游戏列表页面 | P2 | ✅ |
+
+### 3.9 DAN测评记录模块
+
+| 需求编号 | 功能描述 | 优先级 | 状态 |
+|----------|----------|--------|------|
+| DAN-001 | 通过接口获取DAN测评数据 | P1 | ✅ |
+| DAN-002 | 测评记录存储与历史查看 | P1 | ✅ |
+| DAN-003 | 测评记录与任务模板关联 | P1 | ✅ |
+| DAN-013 | 根据DAN等级生成推荐任务列表 | P1 | ✅ |
+| DAN-014 | 家长可编辑/调整模板任务 | P1 | ✅ |
+| DAN-015 | 一键启用模板生成今日任务 | P1 | ✅ |
+
+### 3.10 测评订单与预约系统(新增完成)
+
+| 需求编号 | 功能描述 | 优先级 | 状态 |
+|----------|----------|--------|------|
+| ORDER-001 | 家长申请测评(选择规划师+预约时间) | P0 | ✅ |
+| ORDER-002 | 孩子信息快照(身高/体重/学校等) | P0 | ✅ |
+| ORDER-003 | 测评订单创建与支付 | P0 | ✅ |
+| ORDER-004 | 规划师确认预约 | P0 | ✅ |
+| ORDER-005 | 规划师录入测评结果(DAN等级+报告) | P0 | ✅ |
+| ORDER-006 | 家长查看测评报告 | P0 | ✅ |
+| ORDER-007 | 家长端预约状态查看 | P0 | ✅ |
+| ORDER-008 | 规划师端预约管理 | P0 | ✅ |
+
+### 3.11 成长规划师端
+
+| 需求编号 | 功能描述 | 优先级 | 状态 |
+|----------|----------|--------|------|
+| GUIDE-001 | 规划师注册(直接注册/家长申请) | P1 | ✅ |
+| GUIDE-002 | 套餐选择与购买 | P1 | ✅ |
+| GUIDE-004 | 申请状态查看 | P1 | ✅ |
+| GUIDE-005 | 管理员审核申请(通过/拒绝) | P1 | ✅ |
+| GUIDE-009 | 家庭列表查看(以家庭为单位) | P1 | ✅ |
+| GUIDE-010 | 家庭详情查看(成员信息、任务完成情况) | P1 | ✅ |
+| GUIDE-011 | 规划师身份切换为家长 | P1 | ✅ |
+| GUIDE-WEB-001 | Web端工作台 | P1 | ✅ |
+| GUIDE-WEB-002 | Web端家庭管理 | P1 | ✅ |
+| GUIDE-WEB-003 | Web端团队管理 | P1 | ✅ |
+| GUIDE-WEB-004 | Web端套餐管理 | P1 | ✅ |
+| GUIDE-WEB-005 | Web端订单佣金 | P1 | ✅ |
+| GUIDE-WEB-006 | Web端测评管理 | P1 | ✅ |
+| GUIDE-WEB-007 | Web端消息中心 | P1 | ✅ |
+
+### 3.12 Web管理端
+
+| 需求编号 | 功能描述 | 优先级 | 状态 |
+|----------|----------|--------|------|
+| ADMIN-001 | 管理员首页/仪表板 | P0 | ✅ |
+| ADMIN-002 | 家庭管理(列表/孩子/积分) | P0 | ✅ |
+| ADMIN-003 | 任务管理(列表/模板) | P0 | ✅ |
+| ADMIN-004 | 奖励管理 | P0 | ✅ |
+| ADMIN-005 | 用户管理 | P0 | ✅ |
+| ADMIN-006 | 成长规划师管理(套餐/审核/咨询) | P1 | ✅ |
+| ADMIN-007 | 测评管理 | P1 | ✅ |
+| ADMIN-008 | 服务类型/内容/套餐模板管理 | P1 | ✅ |
+| ADMIN-009 | 操作日志 | P1 | ✅ |
+| ADMIN-010 | 双角色侧边栏(admin + teacher布局) | P0 | ✅ |
+| ADMIN-011 | 路由权限守卫(角色分流) | P0 | ✅ |
+
+### 3.13 数据迁移
+
+| 需求编号 | 功能描述 | 优先级 | 状态 |
+|----------|----------|--------|------|
+| MIGRATE-001 | sfms 多数据源配置 | P0 | ✅ |
+| MIGRATE-002 | 家庭/用户迁移 | P0 | ✅ |
+| MIGRATE-003 | 孩子/规划师迁移 | P0 | ✅ |
+| MIGRATE-004 | 订单/测评结果/成长档案迁移 | P0 | ✅ |
+
+### 3.14 安全与基础设施
+
+| 需求编号 | 功能描述 | 优先级 | 状态 |
+|----------|----------|--------|------|
+| SEC-001 | 敏感词过滤 | P0 | ✅ |
+| SEC-002 | JWT认证拦截 | P0 | ✅ |
+| SEC-003 | 操作日志记录 | P1 | ✅ |
+| SEC-004 | 四级地址结构(省市区街道) | P1 | ✅ |
+| SEC-005 | 孩子快照(测评时保存身高/体重/学校等动态数据) | P0 | ✅ |
+
+---
+
+## 4. 待完成功能(按优先级排序)
+
+### P0 — 核心链路必须(当前开发重点)
+
+| 需求编号 | 功能描述 | 涉及模块 | 前置依赖 |
+|----------|----------|----------|----------|
+| PAY-001 | 微信支付真实回调处理 | 后端 | 微信商户号配置 |
+| PAY-002 | 支付成功后续流程(通知/状态更新) | 后端 | PAY-001 |
+
+### P1 — 增强功能
+
+| 需求编号 | 功能描述 | 涉及模块 | 前置依赖 |
+|----------|----------|----------|----------|
+| REPORT-001 | 每周自动生成报告 | 后端+小程序 | 无 |
+| REPORT-002 | 展示内容:完成任务数、按时完成率 | 后端+小程序 | REPORT-001 |
+| REPORT-003 | 展示内容:与上周对比(进步/退步) | 后端+小程序 | REPORT-001 |
+| REPORT-004 | 展示内容:表现最佳日期 | 后端+小程序 | REPORT-001 |
+| REPORT-005 | 周报推送通知(可选) | 后端+小程序 | REPORT-001 |
+| REVIEW-001 | 任务需要审核时,孩子拍照上传完成凭证 | 后端+小程序 | AI服务配置 |
+| REVIEW-002 | AI自动识别照片内容,判断完成质量 | AI服务 | 大模型API |
+| REVIEW-003 | AI给出审核建议(三档:通过/疑似/需人工确认) | AI服务 | REVIEW-002 |
+| REVIEW-004 | 家长可选AI审核或手动审核(AI仅付费会员) | 后端+小程序 | REVIEW-002 |
+| REVIEW-005 | 家长可修改AI审核结果 | 后端+小程序 | REVIEW-002 |
+| REVIEW-007 | AI审核阈值可自定义(严格/一般/宽松) | 后端+小程序 | REVIEW-002 |
+| GUIDE-003 | 付款凭证上传 | 小程序 | 无 |
+| GUIDE-006 | 规划师等级查看 | 小程序 | 无 |
+| GUIDE-007 | 升级服务购买(升中级/直升高级/升高级) | 小程序 | 无 |
+| GUIDE-008 | 升级可见性控制(根据当前等级显示对应选项) | 小程序 | 无 |
+| GUIDE-012 | 规划师不能切换为孩子 | 小程序 | 无 |
+| ORDER-009 | 测评预约家长端入口(首页快捷入口) | 小程序 | 无 |
+| VOICE-001 | 语音转文字:用于AI审核时识别孩子语音说明 | AI服务 | 语音API |
+
+### P2 — 增值功能
+
+| 需求编号 | 功能描述 | 涉及模块 | 前置依赖 |
+|----------|----------|----------|----------|
+| THEME-002~006 | 阳光橙/恐龙探险/太空冒险/梦幻城堡/海洋世界主题 | 小程序 | 无 |
+| EXPORT-001 | 任务历史导出(Excel格式) | 后端+小程序 | 无 |
+| EXPORT-002 | 错题本图片生成 | 后端+小程序 | 无 |
+| EXPORT-003 | 成长周报导出 | 后端+小程序 | REPORT-001 |
+| GAME-005 | 推理训练游戏(找规律) | 小程序 | 无 |
+| GAME-006 | 空间训练游戏(图形拼接) | 小程序 | 无 |
+| GAME-007 | 反应训练游戏(记忆翻牌) | 小程序 | 无 |
+
+---
+
+## 5. 角色与权限矩阵
+
+| 角色 | 可登录端 | 核心权限 |
+|------|----------|----------|
+| **管理员** | Web管理端 | 全部系统管理、配置、审核 |
+| **成长规划师** | Web管理端 + 小程序 | 查看家庭、管理测评、录入结果、套餐管理 |
+| **家长** | 小程序 | 发布任务、审批奖励、申请测评、查看成长档案 |
+| **孩子** | 小程序 | 查看任务、完成任务、查看积分、兑换奖励 |
+
+### 规划师特殊规则
+- 规划师可切换为家长身份(再切换到孩子),但不能直接用规划师身份切换为孩子
+- 规划师数据范围:以家庭为单位查看,进入家庭后才可见成员和任务详情
+- 规划师等级:初级/中级/高级,升级服务根据当前等级动态可见
+
+---
+
+## 6. 优先级总结
+
+### 第一阶段:P0 (已完成)
+- ✅ 任务管理(创建/执行/审核/历史统计)
+- ✅ 积分系统(含年龄分级扣分、有效期)
+- ✅ 奖励/心愿单(含自定义分类、多孩子隔离、家庭奖励库)
+- ✅ 双模式切换(含密码保护、规划师角色)
+- ✅ 多孩支持
+- ✅ 连续打卡 + 勋章墙
+- ✅ 专注训练
+- ✅ DAN测评记录 + 任务模板
+- ✅ 测评订单与预约(完整P0链路)
+- ✅ 成长规划师Web端(7页面+路由权限)
+- ✅ 数据迁移(sfms多数据源 + 全量迁移)
+- ✅ 基础安全(敏感词过滤/JWT/操作日志)
+
+### 第二阶段:P1 (待完成)
+- 成长周报(每周统计报告)
+- AI辅助审核(大模型API调用)
+- 规划师付款凭证上传 + 等级查看 + 升级
+- 微信支付真实回调集成
+
+### 第三阶段:P2 (未来规划)
+- 多主题皮肤
+- 数据导出
+- 更多小游戏
+- 语音功能增强
+
+---
+
+## 7. 关键概念定义
+
+| 概念 | 定义 | 备注 |
+|------|------|------|
+| **DAN测评** | 素质能力测评体系 | A1-B6共9个等级 |
+| **孩子快照** | 测评时保存的孩子动态信息 | 身高/体重/学校/年级等 |
+| **测评订单** | 家长申请→规划师确认→支付→录入结果 | 完整B2B2C链路 |
+| **成长规划师** | 经认证的专业服务人员 | 可切换家长身份 |
+| **双培强基工程** | 青少年教育项目 | 通过科技、数据、AI、心理科学揭示成长规律 |
+
+---
+
+## 8. 验收标准
+
+### 8.1 已完成的P0验收
+
+| 功能 | 验收条件 | 状态 |
+|------|----------|------|
+| 任务发布与执行 | 家长创建任务,孩子完成,积分自动变动 | ✅ |
+| 积分系统 | 加减分规则正确,年龄分级开关生效,流水可查 | ✅ |
+| 奖励兑换 | 孩子添加心愿→家长审批→扣减积分 | ✅ |
+| 模式切换 | 家长/孩子/规划师密码切换正常 | ✅ |
+| 测评申请 | 选择规划师→填写信息→支付→查看报告,流程完整 | ✅ |
+| 预约管理 | 规划师确认/录入结果,家长查看状态 | ✅ |
+| 数据迁移 | curl POST /api/migration/run 执行全量迁移 | ✅ |
+| Web侧边栏 | 管理员和规划师看到不同的菜单 | ✅ |
+
+*本文档版本 V2.0,已完成功能与待完成功能分离。后续随开发进展持续更新。*

+ 17 - 8
zxyj-backend/AGENTS.md

@@ -6,13 +6,14 @@ Spring Boot 2.7.18 后端服务,MyBatis-Plus ORM,JWT 认证。
 
 | Task | Location | Notes |
 |------|----------|-------|
-| REST API 端点 | `src/main/java/com/zxyj/controller/` | 按功能分组: admin/, auth/, family/, guide/, task/, reward/ |
+| REST API 端点 | `src/main/java/com/zxyj/controller/` | 按功能分组: admin/, auth/, assessment/, family/, guide/, task/, reward/ |
 | 业务逻辑 | `src/main/java/com/zxyj/service/` | Service 命名: `XxxService.java` |
 | 数据实体 | `src/main/java/com/zxyj/entity/` | 使用 MyBatis-Plus 注解 |
 | MyBatis Mapper | `src/main/java/com/zxyj/mapper/` | 接口文件,与XML映射对应 |
 | SQL 映射文件 | `src/main/resources/mapper/` | MyBatis XML 文件 |
 | 配置类 | `src/main/java/com/zxyj/config/` | JWT, Security, Swagger, DatabaseInitializer |
 | DTO传输对象 | `src/main/java/com/zxyj/dto/` | 请求/响应数据结构 |
+| 数据迁移 | `src/main/java/com/zxyj/service/DataMigrationService.java` | sfms → zxyj |
 
 ## CODE MAP (关键符号)
 
@@ -20,9 +21,14 @@ Spring Boot 2.7.18 后端服务,MyBatis-Plus ORM,JWT 认证。
 |--------|------|----------|------|
 | `AuthController` | Controller | `controller/auth/AuthController.java` | 微信登录、JWT 认证 |
 | `TaskService` | Service | `service/TaskService.java` | 任务业务逻辑核心 |
+| `AssessmentOrderController` | Controller | `controller/assessment/AssessmentOrderController.java` | 测评订单(创建/详情/支付) |
+| `AssessmentAppointmentController` | Controller | `controller/assessment/AssessmentAppointmentController.java` | 测评预约管理 |
+| `DataMigrationService` | Service | `service/DataMigrationService.java` | sfms → zxyj 全量数据迁移 |
 | `User` | Entity | `entity/User.java` | 用户实体 (parent/child/teacher) |
 | `Task` | Entity | `entity/Task.java` | 任务实体 |
+| `DanAssessmentResult` | Entity | `entity/DanAssessmentResult.java` | DAN测评结果(含孩子快照字段) |
 | `DatabaseInitializer` | Config | `config/DatabaseInitializer.java` | 数据库迁移和初始化 |
+| `SfmsDataSourceConfig` | Config | `config/SfmsDataSourceConfig.java` | sfms 多数据源配置 |
 
 ## CONVENTIONS
 
@@ -31,14 +37,12 @@ Spring Boot 2.7.18 后端服务,MyBatis-Plus ORM,JWT 认证。
 - **响应包装:** 统一 `Result<T>` 返回,包含 code/message/data
 - **认证:** JWT Token,Header `Authorization: Bearer {token}`
 - **命名:** Controller 以 `Controller` 结尾,Service 以 `Service` 结尾
-- **控制器分组:** 按功能模块分为 admin, auth, family, guide, task, reward 子目录
+- **控制器分组:** 按功能模块分为 admin, auth, assessment, family, guide, task, reward 子目录
 - **DI注解:** 使用 `@Resource` 代替 `@Autowired`,字段名必须与类型默认 Bean Name 一致(如 `PaymentService` 的字段名必须为 `paymentService`)
 - **接口方法:** 所有接口统一使用 `@PostMapping`(POST 方法),禁止使用 `@GetMapping`/`@PutMapping`/`@DeleteMapping`
 - **新增接口前:** 必须运行 mvn clean compile 并启动项目验证无冲突;使用以下命令检查重复路由:
   ```
   grep -rn '@GetMapping\|@PostMapping\|@PutMapping\|@DeleteMapping' src/main/java/com/zxyj/controller/ | grep -oP '@\w+Mapping\("\K[^"]*' | sort -u
-  # 或者更全面的检查
-  grep -rn '@RequestMapping\|@GetMapping\|@PostMapping\|@PutMapping\|@DeleteMapping' src/main/java/com/zxyj/controller/ --include='*.java'
   ```
 - **Bean名冲突检查:** 新增 Controller/Service 时,确保类名不与其他包中的类重名(Spring 默认 Bean Name 为类名首字母小写)
 
@@ -61,15 +65,18 @@ Spring Boot 2.7.18 后端服务,MyBatis-Plus ORM,JWT 认证。
 - 成长规划师角色系统:成长规划师是个单独的角色,经过认证的成长规划师可以以成长规划师身份登录,成长规划师可切换自己作为家长端
 - 积分机制:完成任务加分、超时扣分,逻辑在 `PointsService`
 - 心愿审批流程:孩子创建 → 家长审批 → 扣减积分
+- 测评订单:家长申请 → 选择规划师 → 孩子信息快照 → 支付 → 规划师录入结果
 - 街道地址匹配:四级地址结构(省市区街道),区域回退匹配逻辑
+- 孩子快照:每次测评时保存孩子身高/体重/学校等动态信息到 DanAssessmentResult
+- 多数据源:zxyj 主库 `spring.datasource.*` + sfms 源库 `sfms.datasource.*`(只读)
 
 ## COMMANDS
 
 ```bash
-mvn clean install       # 编译打包
-mvn spring-boot:run   # 启动开发服务器 (localhost:8080)
-                        # 注意:每次完成后端任务后,必须通过此命令启动验证应用能正常启动
-mvn test              # 运行测试 (目前只有1个测试类)
+mvn clean compile        # 编译验证
+mvn spring-boot:run      # 启动开发服务器 (localhost:8080)
+                         # 注意:每次完成后端任务后,必须通过此命令启动验证应用能正常启动
+mvn test                 # 运行测试 (目前只有1个测试类)
 ```
 
 ## 工作流程
@@ -85,3 +92,5 @@ mvn test              # 运行测试 (目前只有1个测试类)
 - 后端端口:8080,JWT 密钥在 `application.yml`
 - 街道数据:使用静态种子数据,街道匹配有回退机制
 - API冲突已修复:检查所有Controller确保无重复路径映射
+- sfms 源库连接信息在 `application.yml` 的 `sfms.datasource.*`
+- 数据迁移 POST `/api/migration/run`