docs: 添加小程序API开发规划文档

- 创建 miniapp-api spec (requirements, design, tasks)
- 添加 API开发任务清单,包含页面-API对照验证
- 规划28个待开发接口,按P0/P1/P2优先级排列
This commit is contained in:
zpc 2026-02-09 08:35:43 +08:00
parent 501bdcc999
commit af4b68c2dd
4 changed files with 2418 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,200 @@
# Requirements Document
## Introduction
本文档定义了学业邑规划MiAssessment微信小程序后端API的开发需求。系统基于多元智能理论提供学业规划测评服务包含首页展示、测评流程、订单管理、学业规划预约、分销系统等核心功能模块。
技术栈:.NET 10 Web API (C#) + SQL Server 2022 + Entity Framework Core + Redis
## Glossary
- **API_System**: 小程序后端API系统负责处理所有小程序端的请求
- **Home_Module**: 首页模块提供Banner、测评入口、宣传图等首页内容
- **Assessment_Module**: 测评模块,处理测评介绍、题目获取、答案提交、结果查询等
- **Order_Module**: 订单模块,处理订单创建、支付、查询等
- **Planner_Module**: 规划师模块,提供规划师列表和预约功能
- **Invite_Module**: 分销模块,处理邀请、佣金、提现等分销业务
- **System_Module**: 系统模块,提供协议、隐私政策、关于我们等系统配置
- **Team_Module**: 团队模块,提供团队介绍内容
- **Business_Module**: 业务详情模块,提供业务介绍页内容
- **User**: 小程序用户
- **Partner**: 合伙人用户,拥有邀请下级和获取佣金的权限
- **Invite_Code**: 邀请码,合伙人用于免费测评的凭证
## Requirements
### Requirement 1: 首页模块 (Home_Module)
**User Story:** As a 用户, I want to 查看首页内容, so that I can 了解平台信息并快速进入测评流程。
#### Acceptance Criteria
1. WHEN 用户请求Banner列表 THEN THE Home_Module SHALL 返回所有启用状态的Banner记录按Sort降序排列
2. WHEN 用户请求测评入口列表 THEN THE Home_Module SHALL 返回所有未删除的测评类型,包含状态信息(已上线/即将上线)
3. WHEN 用户请求宣传图列表 THEN THE Home_Module SHALL 返回首页位置Position=1且启用状态的宣传图
4. THE Home_Module SHALL 对所有首页接口不要求用户登录认证
### Requirement 2: 业务详情模块 (Business_Module)
**User Story:** As a 用户, I want to 查看业务详情页, so that I can 了解具体业务介绍并参与业务流程。
#### Acceptance Criteria
1. WHEN 用户请求业务详情 THEN THE Business_Module SHALL 根据ID返回业务页面内容包含背景图和参与按钮配置
2. THE Business_Module SHALL 对业务详情接口不要求用户登录认证
### Requirement 3: 测评模块 - 测评介绍与题目 (Assessment_Module)
**User Story:** As a 用户, I want to 获取测评介绍和题目, so that I can 了解测评内容并完成答题。
#### Acceptance Criteria
1. WHEN 用户请求测评介绍 THEN THE Assessment_Module SHALL 根据typeId返回测评类型的介绍内容和价格
2. WHEN 已登录用户请求题目列表 THEN THE Assessment_Module SHALL 根据typeId返回所有启用的题目按QuestionNo排序
3. THE Assessment_Module SHALL 对测评介绍接口不要求登录,对题目列表接口要求登录认证
### Requirement 4: 测评模块 - 答案提交与结果 (Assessment_Module)
**User Story:** As a 用户, I want to 提交测评答案并查看结果, so that I can 获得测评报告。
#### Acceptance Criteria
1. WHEN 已登录用户提交测评答案 THEN THE Assessment_Module SHALL 验证记录归属当前用户,保存答案并更新记录状态为"生成中"
2. WHEN 已登录用户查询报告状态 THEN THE Assessment_Module SHALL 返回测评记录的当前状态和是否完成标识
3. WHEN 已登录用户请求测评结果 THEN THE Assessment_Module SHALL 验证记录归属且已完成,返回完整的报告数据结构
4. IF 用户提交的答案数量与题目数量不匹配 THEN THE Assessment_Module SHALL 返回错误提示
5. IF 用户请求的测评记录不属于当前用户 THEN THE Assessment_Module SHALL 返回无权限错误
### Requirement 5: 测评模块 - 邀请码验证 (Assessment_Module)
**User Story:** As a 用户, I want to 使用邀请码免费测评, so that I can 无需支付即可完成测评。
#### Acceptance Criteria
1. WHEN 用户提交邀请码验证请求 THEN THE Assessment_Module SHALL 检查邀请码是否存在且未使用
2. IF 邀请码不存在 THEN THE Assessment_Module SHALL 返回"邀请码有误,请重新输入"
3. IF 邀请码已被使用 THEN THE Assessment_Module SHALL 返回"邀请码已被使用"
4. WHEN 邀请码验证通过 THEN THE Assessment_Module SHALL 返回邀请码ID供后续订单使用
### Requirement 6: 测评模块 - 往期测评 (Assessment_Module)
**User Story:** As a 用户, I want to 查看往期测评记录, so that I can 回顾历史测评结果。
#### Acceptance Criteria
1. WHEN 已登录用户请求往期测评列表 THEN THE Assessment_Module SHALL 返回该用户的测评记录,支持分页
2. THE Assessment_Module SHALL 返回测评记录的状态(生成中/已完成)和基本信息
### Requirement 7: 订单模块 - 订单查询 (Order_Module)
**User Story:** As a 用户, I want to 查看我的订单, so that I can 了解订单状态和详情。
#### Acceptance Criteria
1. WHEN 已登录用户请求订单列表 THEN THE Order_Module SHALL 返回该用户的订单,支持按类型筛选和分页
2. WHEN 已登录用户请求订单详情 THEN THE Order_Module SHALL 返回订单完整信息,包含关联的测评记录或规划预约
3. IF 用户请求的订单不属于当前用户 THEN THE Order_Module SHALL 返回无权限错误
### Requirement 8: 订单模块 - 订单创建 (Order_Module)
**User Story:** As a 用户, I want to 创建测评或规划订单, so that I can 购买服务。
#### Acceptance Criteria
1. WHEN 用户创建测评订单 THEN THE Order_Module SHALL 创建订单记录和测评记录,关联用户基本信息
2. WHEN 用户创建规划订单 THEN THE Order_Module SHALL 创建订单记录和规划预约记录
3. WHEN 用户使用邀请码创建订单 THEN THE Order_Module SHALL 将订单金额设为0并标记邀请码已使用
4. IF 创建订单过程中发生错误 THEN THE Order_Module SHALL 回滚所有数据库操作
5. THE Order_Module SHALL 使用数据库事务确保多表操作的数据一致性
### Requirement 9: 订单模块 - 支付流程 (Order_Module)
**User Story:** As a 用户, I want to 支付订单, so that I can 完成购买流程。
#### Acceptance Criteria
1. WHEN 用户发起支付请求 THEN THE Order_Module SHALL 调用微信支付统一下单接口并返回支付参数
2. WHEN 用户查询支付结果 THEN THE Order_Module SHALL 返回订单的支付状态
3. IF 订单已支付或已取消 THEN THE Order_Module SHALL 拒绝重复支付请求
### Requirement 10: 规划师模块 (Planner_Module)
**User Story:** As a 用户, I want to 查看规划师并预约, so that I can 获得学业规划服务。
#### Acceptance Criteria
1. WHEN 用户请求规划师列表 THEN THE Planner_Module SHALL 返回所有启用的规划师按Sort排序
2. THE Planner_Module SHALL 对规划师列表接口不要求用户登录认证
3. WHEN 用户预约规划师 THEN THE Planner_Module SHALL 复用订单创建流程orderType=2
### Requirement 11: 分销模块 - 邀请信息 (Invite_Module)
**User Story:** As a 合伙人, I want to 查看邀请信息和生成二维码, so that I can 邀请新用户。
#### Acceptance Criteria
1. WHEN 合伙人请求邀请信息 THEN THE Invite_Module SHALL 返回用户邀请码、余额、邀请人数等信息
2. WHEN 合伙人请求生成二维码 THEN THE Invite_Module SHALL 调用微信小程序码接口生成带参数二维码
3. THE Invite_Module SHALL 对所有分销接口要求用户登录认证
### Requirement 12: 分销模块 - 邀请记录与佣金 (Invite_Module)
**User Story:** As a 合伙人, I want to 查看邀请记录和佣金, so that I can 了解分销收益。
#### Acceptance Criteria
1. WHEN 合伙人请求邀请记录 THEN THE Invite_Module SHALL 返回直属下级用户列表及贡献佣金,支持分页
2. WHEN 合伙人请求佣金信息 THEN THE Invite_Module SHALL 返回累计收益、已提现、待提现金额
### Requirement 13: 分销模块 - 提现功能 (Invite_Module)
**User Story:** As a 合伙人, I want to 申请提现, so that I can 获得佣金收益。
#### Acceptance Criteria
1. WHEN 合伙人申请提现 THEN THE Invite_Module SHALL 验证余额充足后创建提现记录并扣减用户余额
2. IF 提现金额超过可提现余额 THEN THE Invite_Module SHALL 返回"超出待提现金额"错误
3. IF 提现金额小于最低限额1元 THEN THE Invite_Module SHALL 返回错误提示
4. IF 提现金额不是整数 THEN THE Invite_Module SHALL 返回错误提示
5. WHEN 合伙人请求提现记录 THEN THE Invite_Module SHALL 返回提现记录列表,支持分页
### Requirement 14: 系统模块 (System_Module)
**User Story:** As a 用户, I want to 查看系统配置内容, so that I can 了解用户协议、隐私政策等信息。
#### Acceptance Criteria
1. WHEN 用户请求用户协议 THEN THE System_Module SHALL 从配置表读取并返回用户协议内容
2. WHEN 用户请求隐私政策 THEN THE System_Module SHALL 从配置表读取并返回隐私政策内容
3. WHEN 用户请求关于我们 THEN THE System_Module SHALL 从配置表读取并返回关于我们内容和版本号
4. THE System_Module SHALL 对所有系统配置接口不要求用户登录认证
### Requirement 15: 团队模块 (Team_Module)
**User Story:** As a 用户, I want to 查看团队介绍, so that I can 了解团队信息。
#### Acceptance Criteria
1. WHEN 用户请求团队介绍 THEN THE Team_Module SHALL 返回团队位置Position=2的宣传图列表
2. THE Team_Module SHALL 对团队介绍接口不要求用户登录认证
### Requirement 16: API响应规范
**User Story:** As a 开发者, I want to 统一的API响应格式, so that I can 方便地处理接口返回。
#### Acceptance Criteria
1. THE API_System SHALL 对所有接口返回统一的JSON响应格式{code, message, data}
2. WHEN 请求成功 THEN THE API_System SHALL 返回code=0
3. WHEN 请求失败 THEN THE API_System SHALL 返回非0错误码和错误信息
4. THE API_System SHALL 对分页接口返回统一的分页响应格式:{list, total, page, pageSize, totalPages}
### Requirement 17: 认证与授权
**User Story:** As a 系统管理员, I want to 保护需要登录的接口, so that I can 确保数据安全。
#### Acceptance Criteria
1. WHEN 未登录用户访问需要认证的接口 THEN THE API_System SHALL 返回未授权错误code=-1或1002
2. WHEN 用户Token过期 THEN THE API_System SHALL 返回登录过期错误code=1003
3. THE API_System SHALL 使用Bearer Token方式进行认证

View File

@ -0,0 +1,268 @@
# Implementation Plan: 小程序API开发
## Overview
本任务清单将小程序API开发分为8个模块按P0→P1→P2优先级顺序实现。每个模块包含实体类、DTO、服务接口、服务实现、控制器的开发任务。
## Tasks
- [ ] 1. 项目基础设施搭建
- [ ] 1.1 创建新增实体类文件
- 在 `MiAssessment.Model/Entities/` 目录创建 Banner.cs, Promotion.cs, BusinessPage.cs, Planner.cs, PlannerBooking.cs, InviteCode.cs, Commission.cs, Withdrawal.cs
- 配置 `[Table]` 特性映射到数据库表
- _Requirements: 1.1, 2.1, 10.1, 11.1, 13.1_
- [ ] 1.2 创建DTO模型文件
- 在 `MiAssessment.Model/Models/` 目录按模块创建子目录和DTO类
- 包含 Home/, Business/, Assessment/, Order/, Planner/, Invite/, System/, Team/ 目录
- _Requirements: 16.1, 16.4_
- [ ] 1.3 更新DbContext注册实体
- 在 ApiDbContext 中添加新实体的 DbSet 属性
- _Requirements: 1.1, 2.1, 10.1, 11.1_
- [ ] 2. 首页模块 (P0)
- [ ] 2.1 创建 IHomeService 接口
- 定义 GetBannerListAsync, GetAssessmentListAsync, GetPromotionListAsync 方法
- _Requirements: 1.1, 1.2, 1.3_
- [ ] 2.2 实现 HomeService 服务
- 实现Banner列表查询过滤Status=1且未删除按Sort降序
- 实现测评类型列表查询,过滤未删除记录
- 实现宣传图列表查询过滤Position=1且Status=1
- _Requirements: 1.1, 1.2, 1.3_
- [ ] 2.3 编写 HomeService 属性测试
- **Property 1: 列表查询过滤正确性**
- **Validates: Requirements 1.1, 1.2, 1.3**
- [ ] 2.4 创建 HomeController 控制器
- 实现 GET /api/home/getBannerList
- 实现 GET /api/home/getAssessmentList
- 实现 GET /api/home/getPromotionList
- 所有接口不需要 [Authorize] 特性
- _Requirements: 1.1, 1.2, 1.3, 1.4_
- [ ] 2.5 注册首页模块依赖注入
- 在 Program.cs 中注册 IHomeService 和 HomeService
- _Requirements: 1.1_
- [ ] 3. Checkpoint - 首页模块验证
- 确保首页模块所有接口可正常调用,返回格式正确
- 确保所有测试通过,如有问题请询问用户
- [ ] 4. 测评模块 (P0)
- [ ] 4.1 创建 IAssessmentService 接口
- 定义测评介绍、题目列表、答案提交、结果查询、邀请码验证、往期测评等方法
- _Requirements: 3.1, 3.2, 4.1, 4.2, 4.3, 5.1, 6.1_
- [ ] 4.2 实现 AssessmentService - 查询功能
- 实现 GetIntroAsync: 根据typeId查询测评介绍
- 实现 GetQuestionListAsync: 根据typeId查询启用题目按QuestionNo排序
- 实现 GetResultStatusAsync: 查询测评记录状态
- 实现 GetHistoryListAsync: 分页查询用户测评记录
- _Requirements: 3.1, 3.2, 4.2, 6.1, 6.2_
- [ ] 4.3 编写测评查询属性测试
- **Property 2: 列表查询排序正确性**
- **Property 3: 分页查询一致性**
- **Validates: Requirements 3.2, 6.1**
- [ ] 4.4 实现 AssessmentService - 邀请码验证
- 实现 VerifyInviteCodeAsync: 验证邀请码存在性和使用状态
- 返回正确的错误信息(不存在/已使用)
- _Requirements: 5.1, 5.2, 5.3, 5.4_
- [ ] 4.5 编写邀请码验证属性测试
- **Property 6: 邀请码使用一次性**
- **Validates: Requirements 5.1, 5.3, 5.4**
- [ ] 4.6 实现 AssessmentService - 答案提交
- 实现 SubmitAnswersAsync: 验证记录归属,保存答案,更新状态
- 验证答案数量与题目数量匹配
- _Requirements: 4.1, 4.4_
- [ ] 4.7 编写答案提交属性测试
- **Property 9: 测评答案提交状态变更**
- **Validates: Requirements 4.1, 4.2**
- [ ] 4.8 实现 AssessmentService - 结果查询
- 实现 GetResultAsync: 验证记录归属和完成状态,组装报告数据
- 组装八大智能、个人特质、细分能力等多层嵌套数据
- _Requirements: 4.3, 4.5_
- [ ] 4.9 编写结果查询属性测试
- **Property 4: 用户数据隔离**
- **Validates: Requirements 4.3, 4.5**
- [ ] 4.10 创建 AssessmentController 控制器
- 实现所有7个测评接口
- getIntro 不需要认证,其他接口需要 [Authorize]
- _Requirements: 3.1, 3.2, 3.3, 4.1, 4.2, 4.3, 5.1, 6.1_
- [ ] 4.11 注册测评模块依赖注入
- _Requirements: 3.1_
- [ ] 5. Checkpoint - 测评模块验证
- 确保测评模块所有接口可正常调用
- 确保认证逻辑正确getIntro无需认证其他需要
- 确保所有测试通过,如有问题请询问用户
- [ ] 6. 订单模块 (P0)
- [ ] 6.1 创建 IOrderService 接口
- 定义订单列表、详情、创建、支付、支付结果查询方法
- _Requirements: 7.1, 7.2, 8.1, 9.1, 9.2_
- [ ] 6.2 实现 OrderService - 查询功能
- 实现 GetListAsync: 分页查询用户订单,支持类型筛选
- 实现 GetDetailAsync: 查询订单详情,关联测评记录或规划预约
- 实现 GetPayResultAsync: 查询订单支付状态
- _Requirements: 7.1, 7.2, 7.3, 9.2_
- [ ] 6.3 编写订单查询属性测试
- **Property 3: 分页查询一致性**
- **Property 4: 用户数据隔离**
- **Validates: Requirements 7.1, 7.2, 7.3**
- [ ] 6.4 实现 OrderService - 订单创建
- 实现 CreateAsync: 使用事务创建订单和关联记录
- 支持测评订单创建assessment_record和规划订单创建planner_booking
- 支持邀请码抵扣金额设为0标记邀请码已使用
- _Requirements: 8.1, 8.2, 8.3, 8.4, 8.5_
- [ ] 6.5 编写订单创建属性测试
- **Property 5: 订单创建完整性**
- **Property 10: 订单事务回滚**
- **Validates: Requirements 8.1, 8.2, 8.3, 8.4**
- [ ] 6.6 实现 OrderService - 支付功能
- 实现 PayAsync: 调用已有的PayService发起微信支付
- 验证订单状态(待支付才能发起支付)
- _Requirements: 9.1, 9.3_
- [ ] 6.7 创建 OrderController 控制器
- 实现所有5个订单接口全部需要 [Authorize]
- _Requirements: 7.1, 7.2, 8.1, 9.1, 9.2_
- [ ] 6.8 注册订单模块依赖注入
- _Requirements: 7.1_
- [ ] 7. Checkpoint - P0核心模块验证
- 确保首页、测评、订单三个核心模块全部可用
- 验证完整的测评购买流程:首页→测评介绍→创建订单→支付→答题→查看结果
- 确保所有测试通过,如有问题请询问用户
- [ ] 8. 业务详情模块 (P1)
- [ ] 8.1 创建 IBusinessService 接口和 BusinessService 实现
- 实现 GetDetailAsync: 根据ID查询业务页面详情
- _Requirements: 2.1_
- [ ] 8.2 创建 BusinessController 控制器
- 实现 GET /api/business/getDetail不需要认证
- _Requirements: 2.1, 2.2_
- [ ] 8.3 注册业务详情模块依赖注入
- _Requirements: 2.1_
- [ ] 9. 规划师模块 (P1)
- [ ] 9.1 创建 IPlannerService 接口和 PlannerService 实现
- 实现 GetListAsync: 查询启用的规划师按Sort排序
- _Requirements: 10.1_
- [ ] 9.2 编写规划师列表属性测试
- **Property 1: 列表查询过滤正确性**
- **Property 2: 列表查询排序正确性**
- **Validates: Requirements 10.1**
- [ ] 9.3 创建 PlannerController 控制器
- 实现 GET /api/planner/getList不需要认证
- _Requirements: 10.1, 10.2_
- [ ] 9.4 注册规划师模块依赖注入
- _Requirements: 10.1_
- [ ] 10. 分销模块 (P1)
- [ ] 10.1 创建 IInviteService 接口
- 定义邀请信息、二维码、邀请记录、佣金、提现等方法
- _Requirements: 11.1, 11.2, 12.1, 12.2, 13.1, 13.5_
- [ ] 10.2 实现 InviteService - 查询功能
- 实现 GetInfoAsync: 返回用户邀请码、余额、邀请人数
- 实现 GetQrcodeAsync: 调用微信小程序码接口生成二维码
- 实现 GetRecordListAsync: 分页查询直属下级用户
- 实现 GetCommissionAsync: 返回累计收益、已提现、待提现
- 实现 GetWithdrawListAsync: 分页查询提现记录
- _Requirements: 11.1, 11.2, 12.1, 12.2, 13.5_
- [ ] 10.3 编写分销查询属性测试
- **Property 3: 分页查询一致性**
- **Validates: Requirements 12.1, 13.5**
- [ ] 10.4 实现 InviteService - 提现功能
- 实现 ApplyWithdrawAsync: 验证余额,创建提现记录,扣减余额
- 验证提现金额≥1元且为整数
- 使用事务确保数据一致性
- _Requirements: 13.1, 13.2, 13.3, 13.4_
- [ ] 10.5 编写提现属性测试
- **Property 7: 提现余额一致性**
- **Validates: Requirements 13.1**
- [ ] 10.6 创建 InviteController 控制器
- 实现所有6个分销接口全部需要 [Authorize]
- _Requirements: 11.1, 11.2, 11.3, 12.1, 12.2, 13.1, 13.5_
- [ ] 10.7 注册分销模块依赖注入
- _Requirements: 11.1_
- [ ] 11. Checkpoint - P1重要模块验证
- 确保业务详情、规划师、分销三个模块全部可用
- 验证分销流程:查看邀请信息→生成二维码→查看邀请记录→申请提现
- 确保所有测试通过,如有问题请询问用户
- [ ] 12. 系统模块 (P2)
- [ ] 12.1 创建 ISystemService 接口和 SystemService 实现
- 实现 GetAgreementAsync: 从configs表读取用户协议
- 实现 GetPrivacyAsync: 从configs表读取隐私政策
- 实现 GetAboutAsync: 从configs表读取关于我们和版本号
- _Requirements: 14.1, 14.2, 14.3_
- [ ] 12.2 编写系统配置属性测试
- **Property 8: 响应格式一致性**
- **Validates: Requirements 14.1, 14.2, 14.3, 16.1, 16.2, 16.3**
- [ ] 12.3 创建 SystemController 控制器
- 实现所有3个系统接口不需要认证
- _Requirements: 14.1, 14.2, 14.3, 14.4_
- [ ] 12.4 注册系统模块依赖注入
- _Requirements: 14.1_
- [ ] 13. 团队模块 (P2)
- [ ] 13.1 创建 ITeamService 接口和 TeamService 实现
- 实现 GetInfoAsync: 查询Position=2的宣传图列表
- _Requirements: 15.1_
- [ ] 13.2 编写团队模块属性测试
- **Property 1: 列表查询过滤正确性**
- **Validates: Requirements 15.1**
- [ ] 13.3 创建 TeamController 控制器
- 实现 GET /api/team/getInfo不需要认证
- _Requirements: 15.1, 15.2_
- [ ] 13.4 注册团队模块依赖注入
- _Requirements: 15.1_
- [ ] 14. Final Checkpoint - 全部模块验证
- 确保所有28个API接口可正常调用
- 验证认证逻辑需要认证的接口返回401不需要认证的接口正常返回
- 验证响应格式统一性
- 确保所有测试通过,如有问题请询问用户
## Notes
- 开发顺序按P0→P1→P2优先级进行
- 每个模块完成后进行Checkpoint验证
- 属性测试使用FsCheck框架每个测试运行100次迭代
- 所有接口遵循RPC风格仅使用GET和POST请求

View File

@ -0,0 +1,751 @@
# 学业邑规划 - 小程序 API 开发任务清单
本文档列出了小程序后端 API 的开发任务,按模块和优先级组织。
---
## 〇、需求与设计图对照验证
### 0.1 页面-API 对照表
| 页面 | 设计图 | 需求章节 | 所需API | 状态 |
|------|--------|----------|---------|------|
| 首页 | 首页.png | 二、首页 | getBannerList, getAssessmentList, getPromotionList | ✅ 已规划 |
| 团队页 | 团队.png | 四、团队页 | getTeamInfo | ✅ 已规划 |
| 我的页 | 我的-登录页.png | 七、我的页 | getProfile | ✅ 已有 |
| 登录页 | 登录页.png | 七、我的页 | login | ✅ 已有 |
| 个人资料 | 个人资料.png | 八、个人信息页 | getProfile, updateProfile, updateAvatar | ✅ 已有 |
| 测评-信息填写 | 测评-个人信息填写.png | 五.1 基本信息填写 | getIntro, verifyInviteCode, createOrder, pay | ✅ 已规划 |
| 测评-答题 | 测评-题目.png | 五.2 答题页 | getQuestionList, submitAnswers | ✅ 已规划 |
| 测评-生成中 | 测评-等待测评.png | 五.3 测评生成中 | getResultStatus | ✅ 已规划 |
| 测评-结果 | - | 五.4 测评结果页 | getResult | ✅ 已规划 |
| 我的订单 | 我的订单.png | 九、我的订单页 | getOrderList, getOrderDetail | ✅ 已规划 |
| 往期测评 | 往期测评-空状态.png | 十、往期测评页 | getHistoryList | ✅ 已规划 |
| 学业规划-规划师 | 学业规划.png | 六.1 规划师选择 | getPlannerList | ✅ 已规划 |
| 学业规划-预约 | 学业规划2.png | 六.2 规划时间预约 | createOrder (orderType=2), pay | ✅ 已规划 |
| 邀请新用户 | 邀请新用户.png | 十一、邀请新用户 | getInviteInfo, getQrcode, getRecordList, getCommission, applyWithdraw, getWithdrawList | ✅ 已规划 |
| 关于页 | 关于.png | 十二、关于页 | getAbout | ✅ 已规划 |
| 用户协议 | 用户/隐私协议.png | 十三、用户协议 | getAgreement | ✅ 已规划 |
| 隐私政策 | 用户/隐私协议.png | 十三、隐私政策 | getPrivacy | ✅ 已规划 |
| 业务详情页 | 业务详情页.png | 三、介绍详情页 | **需补充** | ⚠️ 缺失 |
### 0.2 需求功能点验证
| 需求点 | 需求描述 | 对应API | 状态 |
|--------|----------|---------|------|
| Banner跳转 | 点击可跳转到指定页面 | getBannerList (含linkType, linkUrl) | ✅ |
| 测评入口状态 | 即将上线提示"该测评暂未开放" | getAssessmentList (含status字段) | ✅ |
| 邀请码验证 | 验证邀请码是否存在/已使用 | verifyInviteCode | ✅ |
| 微信支付 | 拉起微信支付 | createOrder + pay | ✅ |
| 题目未答检测 | 提交时检测未选题目 | 前端逻辑无需API | ✅ |
| 报告轮询 | 等待报告生成 | getResultStatus | ✅ |
| 保存PDF | 保存测评报告到本地 | getResult (前端生成PDF) | ✅ |
| 订单状态 | 待测评/测评中/已测评/退款 | getOrderList (含status) | ✅ |
| 合伙人权限 | 邀请新用户入口仅合伙人可见 | getProfile (含userLevel) | ✅ |
| 佣金规则 | 40%/30%+10%分成 | 后端计算逻辑 | ✅ |
| 提现规则 | 最低1元整数 | applyWithdraw | ✅ |
| 联系我们 | 跳转小程序客服 | 前端调用wx.openCustomerServiceChat | ✅ |
### 0.3 发现的遗漏项
#### ⚠️ 需要补充的API
1. **业务详情页接口** - 需求第三章
- 接口:`GET /api/business/getDetail?id=1`
- 功能:获取业务介绍页内容(背景长图、是否有参与按钮)
- 来源Banner跳转到业务详情页
2. **发送短信验证码** - 如果支持手机号验证码登录
- 接口:`POST /api/sms/sendCode`
- 功能:发送短信验证码
- 说明:当前登录方式为微信授权,如需支持验证码登录则需要
### 0.4 已有接口确认(无需开发)
以下接口在 AuthController/UserController 中已实现:
- `POST /api/login` - 微信登录 ✅
- `GET /api/user/getProfile` - 获取用户信息 ✅
- `POST /api/user/updateProfile` - 更新用户信息 ✅
- `POST /api/user/updateAvatar` - 更新头像 ✅
- `POST /api/logout` - 退出登录 ✅
- `POST /api/refresh` - 刷新Token ✅
---
## 一、开发概述
### 1.1 项目位置
- 控制器:`server/MiAssessment/src/MiAssessment.Api/Controllers/`
- 服务接口:`server/MiAssessment/src/MiAssessment.Core/Interfaces/`
- 服务实现:`server/MiAssessment/src/MiAssessment.Core/Services/`
- 数据模型:`server/MiAssessment/src/MiAssessment.Model/Models/`
- 实体类:`server/MiAssessment/src/MiAssessment.Model/Entities/`
### 1.2 已完成模块
| 模块 | 控制器 | 状态 |
|------|--------|------|
| 认证 | AuthController | ✅ 已完成 |
| 用户 | UserController | ✅ 已完成 |
| 地址 | AddressController | ✅ 已完成 |
| 配置 | ConfigController | ✅ 已完成 |
| 支付 | PayController | ✅ 已完成 |
| 通知 | NotifyController | ✅ 已完成 |
### 1.3 待开发模块
| 模块 | 控制器 | 优先级 | 接口数 |
|------|--------|--------|--------|
| 首页 | HomeController | P0 | 3 |
| 测评 | AssessmentController | P0 | 7 |
| 订单 | OrderController | P0 | 5 |
| 业务详情 | BusinessController | P1 | 1 |
| 规划师 | PlannerController | P1 | 2 |
| 分销 | InviteController | P1 | 6 |
| 系统 | SystemController | P2 | 3 |
| 团队 | TeamController | P2 | 1 |
---
## 二、代码规范参考
### 2.1 控制器模板
```csharp
[ApiController]
[Route("api")]
public class XxxController : ControllerBase
{
private readonly IXxxService _xxxService;
private readonly ILogger<XxxController> _logger;
public XxxController(IXxxService xxxService, ILogger<XxxController> logger)
{
_xxxService = xxxService;
_logger = logger;
}
/// <summary>
/// 接口描述
/// </summary>
[HttpGet("actionName")]
[Authorize] // 需要登录的接口
public async Task<ApiResponse<T>> ActionName([FromQuery] Request request)
{
// 实现
}
}
```
### 2.2 响应格式
- 成功:`ApiResponse<T>.Success(data, "message")`
- 失败:`ApiResponse<T>.Fail("error message")`
- 未授权:`ApiResponse<T>.Unauthorized()`
---
## 三、开发任务详情
### 3.1 首页模块 (HomeController) - P0
#### 任务 H-1获取 Banner 列表
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/home/getBannerList` |
| 认证 | 否 |
| 数据库表 | banners |
| 实体类 | Banner.cs |
| DTO | BannerDto.cs |
| 服务接口 | IHomeService.GetBannerListAsync() |
| 业务逻辑 | 查询 Status=1 且未删除的记录,按 Sort 降序 |
#### 任务 H-2获取测评入口列表
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/home/getAssessmentList` |
| 认证 | 否 |
| 数据库表 | assessment_types |
| 实体类 | AssessmentType.cs已存在 |
| DTO | AssessmentTypeDto.cs |
| 服务接口 | IHomeService.GetAssessmentListAsync() |
| 业务逻辑 | 查询未删除的记录,按 Sort 降序 |
#### 任务 H-3获取宣传图列表
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/home/getPromotionList` |
| 认证 | 否 |
| 数据库表 | promotions |
| 实体类 | Promotion.cs |
| DTO | PromotionDto.cs |
| 服务接口 | IHomeService.GetPromotionListAsync() |
| 业务逻辑 | 查询 Position=1, Status=1 且未删除的记录 |
---
### 3.2 业务详情模块 (BusinessController) - P1
#### 任务 B-1获取业务详情
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/business/getDetail?id=1` |
| 认证 | 否 |
| 数据库表 | business_pages需新建或复用 banners |
| 实体类 | BusinessPage.cs |
| DTO | BusinessDetailDto.cs |
| 服务接口 | IBusinessService.GetDetailAsync(id) |
| 业务逻辑 | 根据ID获取业务介绍页内容背景图、是否显示参与按钮、跳转链接 |
| 需求来源 | 需求文档第三章"介绍详情页" |
**说明**:此接口用于 Banner 跳转到业务介绍页时获取详情内容。
---
### 3.3 测评模块 (AssessmentController) - P0
#### 任务 A-1获取测评介绍
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/assessment/getIntro?typeId=1` |
| 认证 | 否 |
| 数据库表 | assessment_types |
| DTO | AssessmentIntroDto.cs |
| 服务接口 | IAssessmentService.GetIntroAsync(typeId) |
| 业务逻辑 | 根据 typeId 查询测评类型的介绍内容和价格 |
#### 任务 A-2获取题目列表
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/assessment/getQuestionList?typeId=1` |
| 认证 | 是 |
| 数据库表 | questions |
| 实体类 | Question.cs已存在 |
| DTO | QuestionDto.cs |
| 服务接口 | IAssessmentService.GetQuestionListAsync(typeId) |
| 业务逻辑 | 根据 typeId 查询启用的题目,按 QuestionNo 排序 |
#### 任务 A-3提交测评答案
| 项目 | 内容 |
|------|------|
| 接口 | `POST /api/assessment/submitAnswers` |
| 认证 | 是 |
| 数据库表 | assessment_answers, assessment_records |
| 实体类 | AssessmentAnswer.cs, AssessmentRecord.cs |
| 请求模型 | SubmitAnswersRequest.cs |
| 响应模型 | SubmitAnswersResponse.cs |
| 服务接口 | IAssessmentService.SubmitAnswersAsync(userId, request) |
| 业务逻辑 | 1. 验证记录归属当前用户<br>2. 保存答案到 assessment_answers<br>3. 更新记录状态为"生成中"<br>4. 触发报告生成(异步) |
#### 任务 A-4查询报告生成状态
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/assessment/getResultStatus?recordId=1` |
| 认证 | 是 |
| 数据库表 | assessment_records |
| DTO | ResultStatusDto.cs |
| 服务接口 | IAssessmentService.GetResultStatusAsync(userId, recordId) |
| 业务逻辑 | 查询记录状态,返回是否完成 |
#### 任务 A-5获取测评结果
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/assessment/getResult?recordId=1` |
| 认证 | 是 |
| 数据库表 | assessment_records, assessment_results, report_categories, report_conclusions |
| DTO | AssessmentResultDto.cs复杂结构 |
| 服务接口 | IAssessmentService.GetResultAsync(userId, recordId) |
| 业务逻辑 | 1. 验证记录归属且已完成<br>2. 组装完整报告数据 |
| 复杂度 | 高 - 需要组装多层嵌套数据 |
#### 任务 A-6验证邀请码
| 项目 | 内容 |
|------|------|
| 接口 | `POST /api/assessment/verifyInviteCode` |
| 认证 | 是 |
| 数据库表 | invite_codes |
| 实体类 | InviteCode.cs |
| 请求模型 | VerifyInviteCodeRequest.cs |
| 响应模型 | VerifyInviteCodeResponse.cs |
| 服务接口 | IAssessmentService.VerifyInviteCodeAsync(code) |
| 业务逻辑 | 验证邀请码是否存在且未使用 |
#### 任务 A-7获取往期测评列表
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/assessment/getHistoryList?page=1&pageSize=20` |
| 认证 | 是 |
| 数据库表 | assessment_records, orders |
| DTO | AssessmentHistoryDto.cs |
| 服务接口 | IAssessmentService.GetHistoryListAsync(userId, page, pageSize) |
| 业务逻辑 | 分页查询用户的测评记录 |
---
### 3.4 订单模块 (OrderController) - P0
#### 任务 O-1获取订单列表
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/order/getList?page=1&pageSize=20&orderType=1` |
| 认证 | 是 |
| 数据库表 | orders |
| 实体类 | Order.cs已存在 |
| DTO | OrderItemDto.cs |
| 服务接口 | IOrderService.GetListAsync(userId, page, pageSize, orderType) |
| 业务逻辑 | 分页查询用户订单,支持按类型筛选 |
#### 任务 O-2获取订单详情
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/order/getDetail?orderId=1` |
| 认证 | 是 |
| 数据库表 | orders, assessment_records, planner_bookings |
| DTO | OrderDetailDto.cs |
| 服务接口 | IOrderService.GetDetailAsync(userId, orderId) |
| 业务逻辑 | 查询订单详情,关联测评记录或规划预约 |
#### 任务 O-3创建订单
| 项目 | 内容 |
|------|------|
| 接口 | `POST /api/order/create` |
| 认证 | 是 |
| 数据库表 | orders, assessment_records, planner_bookings, invite_codes |
| 请求模型 | CreateOrderRequest.cs |
| 响应模型 | CreateOrderResponse.cs |
| 服务接口 | IOrderService.CreateAsync(userId, request) |
| 业务逻辑 | 1. 创建订单记录<br>2. 根据类型创建测评记录或规划预约<br>3. 处理邀请码(如有) |
| 复杂度 | 高 - 涉及多表操作和事务 |
#### 任务 O-4发起支付
| 项目 | 内容 |
|------|------|
| 接口 | `POST /api/order/pay` |
| 认证 | 是 |
| 数据库表 | orders |
| 请求模型 | PayRequest.cs |
| 响应模型 | PayResponse.cs微信支付参数 |
| 服务接口 | IOrderService.PayAsync(userId, orderId) |
| 业务逻辑 | 调用微信支付统一下单接口 |
| 依赖 | 已有 PayController/PayService |
#### 任务 O-5查询支付结果
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/order/getPayResult?orderId=1` |
| 认证 | 是 |
| 数据库表 | orders |
| DTO | PayResultDto.cs |
| 服务接口 | IOrderService.GetPayResultAsync(userId, orderId) |
| 业务逻辑 | 查询订单支付状态 |
---
### 3.5 规划师模块 (PlannerController) - P1
#### 任务 P-1获取规划师列表
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/planner/getList` |
| 认证 | 否 |
| 数据库表 | planners |
| 实体类 | Planner.cs |
| DTO | PlannerDto.cs |
| 服务接口 | IPlannerService.GetListAsync() |
| 业务逻辑 | 查询启用的规划师,按 Sort 排序 |
#### 任务 P-2预约规划
| 项目 | 内容 |
|------|------|
| 接口 | `POST /api/planner/book` |
| 认证 | 是 |
| 说明 | 复用订单创建接口orderType=2 |
---
### 3.6 分销模块 (InviteController) - P1
#### 任务 I-1获取邀请信息
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/invite/getInfo` |
| 认证 | 是 |
| 数据库表 | users |
| DTO | InviteInfoDto.cs |
| 服务接口 | IInviteService.GetInfoAsync(userId) |
| 业务逻辑 | 返回用户邀请码、余额、邀请人数等 |
#### 任务 I-2生成邀请二维码
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/invite/getQrcode` |
| 认证 | 是 |
| DTO | QrcodeDto.cs |
| 服务接口 | IInviteService.GetQrcodeAsync(userId) |
| 业务逻辑 | 调用微信小程序码接口生成带参数二维码 |
| 依赖 | 微信 API |
#### 任务 I-3获取邀请记录
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/invite/getRecordList?page=1&pageSize=20` |
| 认证 | 是 |
| 数据库表 | users, commissions |
| DTO | InviteRecordDto.cs |
| 服务接口 | IInviteService.GetRecordListAsync(userId, page, pageSize) |
| 业务逻辑 | 查询下级用户列表及贡献佣金 |
#### 任务 I-4获取佣金信息
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/invite/getCommission` |
| 认证 | 是 |
| 数据库表 | users |
| DTO | CommissionInfoDto.cs |
| 服务接口 | IInviteService.GetCommissionAsync(userId) |
| 业务逻辑 | 返回累计收益、已提现、待提现 |
#### 任务 I-5申请提现
| 项目 | 内容 |
|------|------|
| 接口 | `POST /api/invite/applyWithdraw` |
| 认证 | 是 |
| 数据库表 | withdrawals, users |
| 实体类 | Withdrawal.cs |
| 请求模型 | ApplyWithdrawRequest.cs |
| 响应模型 | ApplyWithdrawResponse.cs |
| 服务接口 | IInviteService.ApplyWithdrawAsync(userId, amount) |
| 业务逻辑 | 1. 验证余额充足<br>2. 创建提现记录<br>3. 扣减用户余额 |
#### 任务 I-6获取提现记录
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/invite/getWithdrawList?page=1&pageSize=20` |
| 认证 | 是 |
| 数据库表 | withdrawals |
| DTO | WithdrawRecordDto.cs |
| 服务接口 | IInviteService.GetWithdrawListAsync(userId, page, pageSize) |
| 业务逻辑 | 分页查询用户提现记录 |
---
### 3.7 系统模块 (SystemController) - P2
#### 任务 S-1获取用户协议
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/system/getAgreement` |
| 认证 | 否 |
| 数据库表 | configs |
| DTO | AgreementDto.cs |
| 服务接口 | ISystemService.GetAgreementAsync() |
| 业务逻辑 | 从配置表读取用户协议内容 |
#### 任务 S-2获取隐私政策
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/system/getPrivacy` |
| 认证 | 否 |
| 数据库表 | configs |
| DTO | PrivacyDto.cs |
| 服务接口 | ISystemService.GetPrivacyAsync() |
| 业务逻辑 | 从配置表读取隐私政策内容 |
#### 任务 S-3获取关于我们
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/system/getAbout` |
| 认证 | 否 |
| 数据库表 | configs |
| DTO | AboutDto.cs |
| 服务接口 | ISystemService.GetAboutAsync() |
| 业务逻辑 | 从配置表读取关于我们内容和版本号 |
---
### 3.8 团队模块 (TeamController) - P2
#### 任务 T-1获取团队介绍
| 项目 | 内容 |
|------|------|
| 接口 | `GET /api/team/getInfo` |
| 认证 | 否 |
| 数据库表 | promotions |
| DTO | TeamInfoDto.cs |
| 服务接口 | ITeamService.GetInfoAsync() |
| 业务逻辑 | 查询 Position=2 的宣传图列表 |
---
## 四、开发顺序建议
### 第一阶段:核心流程 (P0)
1. **首页模块** - 简单,快速完成
- H-1 Banner 列表
- H-2 测评入口列表
- H-3 宣传图列表
2. **订单模块** - 支付流程核心
- O-3 创建订单(最复杂,优先)
- O-1 订单列表
- O-2 订单详情
- O-4 发起支付
- O-5 支付结果
3. **测评模块** - 业务核心
- A-1 测评介绍
- A-2 题目列表
- A-6 验证邀请码
- A-3 提交答案
- A-4 报告状态
- A-7 往期列表
- A-5 测评结果(最复杂)
### 第二阶段:分销功能 (P1)
4. **规划师模块**
- P-1 规划师列表
5. **分销模块**
- I-1 邀请信息
- I-4 佣金信息
- I-3 邀请记录
- I-5 申请提现
- I-6 提现记录
- I-2 邀请二维码
### 第三阶段:辅助功能 (P2)
6. **系统模块**
- S-1 用户协议
- S-2 隐私政策
- S-3 关于我们
7. **团队模块**
- T-1 团队介绍
---
## 五、需要新建的文件清单
### 5.1 实体类 (Entities)
| 文件 | 对应表 | 说明 |
|------|--------|------|
| Banner.cs | banners | 轮播图 |
| Promotion.cs | promotions | 宣传图 |
| Planner.cs | planners | 规划师 |
| PlannerBooking.cs | planner_bookings | 规划预约 |
| InviteCode.cs | invite_codes | 邀请码 |
| Commission.cs | commissions | 佣金记录 |
| Withdrawal.cs | withdrawals | 提现记录 |
### 5.2 DTO 模型 (Models)
#### Home 模块
- `Models/Home/BannerDto.cs`
- `Models/Home/AssessmentTypeDto.cs`
- `Models/Home/PromotionDto.cs`
#### Assessment 模块
- `Models/Assessment/AssessmentIntroDto.cs`
- `Models/Assessment/QuestionDto.cs`
- `Models/Assessment/SubmitAnswersRequest.cs`
- `Models/Assessment/SubmitAnswersResponse.cs`
- `Models/Assessment/ResultStatusDto.cs`
- `Models/Assessment/AssessmentResultDto.cs`
- `Models/Assessment/VerifyInviteCodeRequest.cs`
- `Models/Assessment/VerifyInviteCodeResponse.cs`
- `Models/Assessment/AssessmentHistoryDto.cs`
#### Order 模块
- `Models/Order/OrderItemDto.cs`
- `Models/Order/OrderDetailDto.cs`
- `Models/Order/CreateOrderRequest.cs`
- `Models/Order/CreateOrderResponse.cs`
- `Models/Order/PayRequest.cs`
- `Models/Order/PayResponse.cs`
- `Models/Order/PayResultDto.cs`
#### Planner 模块
- `Models/Planner/PlannerDto.cs`
#### Invite 模块
- `Models/Invite/InviteInfoDto.cs`
- `Models/Invite/QrcodeDto.cs`
- `Models/Invite/InviteRecordDto.cs`
- `Models/Invite/CommissionInfoDto.cs`
- `Models/Invite/ApplyWithdrawRequest.cs`
- `Models/Invite/ApplyWithdrawResponse.cs`
- `Models/Invite/WithdrawRecordDto.cs`
#### System 模块
- `Models/System/AgreementDto.cs`
- `Models/System/PrivacyDto.cs`
- `Models/System/AboutDto.cs`
#### Team 模块
- `Models/Team/TeamInfoDto.cs`
### 5.3 服务接口 (Interfaces)
- `IHomeService.cs`
- `IAssessmentService.cs`
- `IOrderService.cs`(扩展已有)
- `IPlannerService.cs`
- `IInviteService.cs`
- `ISystemService.cs`
- `ITeamService.cs`
### 5.4 服务实现 (Services)
- `HomeService.cs`
- `AssessmentService.cs`
- `OrderService.cs`(扩展已有)
- `PlannerService.cs`
- `InviteService.cs`
- `SystemService.cs`
- `TeamService.cs`
### 5.5 控制器 (Controllers)
- `HomeController.cs`
- `AssessmentController.cs`
- `OrderController.cs`
- `PlannerController.cs`
- `InviteController.cs`
- `SystemController.cs`
- `TeamController.cs`
---
## 六、复杂任务说明
### 6.1 创建订单 (O-3)
这是最复杂的接口,需要处理:
1. 测评订单:创建 order + assessment_record
2. 规划订单:创建 order + planner_booking
3. 邀请码处理:验证并标记使用
4. 事务管理:确保数据一致性
```csharp
// 伪代码
public async Task<CreateOrderResponse> CreateAsync(int userId, CreateOrderRequest request)
{
using var transaction = await _dbContext.Database.BeginTransactionAsync();
try
{
// 1. 创建订单
var order = new Order { ... };
// 2. 根据类型创建关联记录
if (request.OrderType == 1) // 测评
{
var record = new AssessmentRecord { ... };
}
else // 规划
{
var booking = new PlannerBooking { ... };
}
// 3. 处理邀请码
if (request.InviteCodeId.HasValue)
{
// 标记邀请码已使用
// 订单金额设为0
}
await transaction.CommitAsync();
return new CreateOrderResponse { ... };
}
catch
{
await transaction.RollbackAsync();
throw;
}
}
```
### 6.2 获取测评结果 (A-5)
需要组装复杂的嵌套数据结构:
1. 基本信息(来自 assessment_record
2. 八大智能分析(来自 assessment_result + report_category
3. 个人特质分析
4. 40项细分能力
5. 其他分析模块
建议:
- 分步骤查询,避免复杂 JOIN
- 使用 AutoMapper 简化映射
- 考虑缓存已生成的报告
### 6.3 提交测评答案 (A-3)
需要处理:
1. 批量保存答案80道题
2. 更新记录状态
3. 触发报告生成(可异步)
报告生成逻辑:
1. 根据答案计算各分类得分
2. 计算排名和星级
3. 匹配结论内容
4. 保存到 assessment_result
---
## 七、测试要点
### 7.1 单元测试
- 服务层方法的业务逻辑测试
- 边界条件测试(空数据、分页边界等)
### 7.2 集成测试
- API 端到端测试
- 数据库事务测试
### 7.3 关键测试场景
| 场景 | 测试点 |
|------|--------|
| 创建订单 | 测评订单、规划订单、使用邀请码 |
| 提交答案 | 完整答案、部分答案、重复提交 |
| 申请提现 | 余额充足、余额不足、最低金额 |
| 分页查询 | 首页、末页、空数据 |
---
## 八、注意事项
1. **认证**:需要登录的接口添加 `[Authorize]` 特性
2. **软删除**:查询时过滤 `IsDeleted = false`
3. **分页**:使用统一的分页响应格式
4. **日志**:关键操作记录日志
5. **异常**:使用 try-catch 包装,返回友好错误信息
6. **事务**:多表操作使用事务
7. **验证**:参数验证在控制器层完成
---
## 九、进度跟踪
| 任务ID | 任务名称 | 状态 | 负责人 | 完成日期 |
|--------|----------|------|--------|----------|
| H-1 | Banner 列表 | ⬜ 待开发 | | |
| H-2 | 测评入口列表 | ⬜ 待开发 | | |
| H-3 | 宣传图列表 | ⬜ 待开发 | | |
| B-1 | 业务详情 | ⬜ 待开发 | | |
| A-1 | 测评介绍 | ⬜ 待开发 | | |
| A-2 | 题目列表 | ⬜ 待开发 | | |
| A-3 | 提交答案 | ⬜ 待开发 | | |
| A-4 | 报告状态 | ⬜ 待开发 | | |
| A-5 | 测评结果 | ⬜ 待开发 | | |
| A-6 | 验证邀请码 | ⬜ 待开发 | | |
| A-7 | 往期列表 | ⬜ 待开发 | | |
| O-1 | 订单列表 | ⬜ 待开发 | | |
| O-2 | 订单详情 | ⬜ 待开发 | | |
| O-3 | 创建订单 | ⬜ 待开发 | | |
| O-4 | 发起支付 | ⬜ 待开发 | | |
| O-5 | 支付结果 | ⬜ 待开发 | | |
| P-1 | 规划师列表 | ⬜ 待开发 | | |
| I-1 | 邀请信息 | ⬜ 待开发 | | |
| I-2 | 邀请二维码 | ⬜ 待开发 | | |
| I-3 | 邀请记录 | ⬜ 待开发 | | |
| I-4 | 佣金信息 | ⬜ 待开发 | | |
| I-5 | 申请提现 | ⬜ 待开发 | | |
| I-6 | 提现记录 | ⬜ 待开发 | | |
| S-1 | 用户协议 | ⬜ 待开发 | | |
| S-2 | 隐私政策 | ⬜ 待开发 | | |
| S-3 | 关于我们 | ⬜ 待开发 | | |
| T-1 | 团队介绍 | ⬜ 待开发 | | |
**状态说明**:⬜ 待开发 | 🔄 开发中 | ✅ 已完成 | ❌ 已取消