# Implementation Plan: 测评记录管理 & 业务介绍页内容管理 ## Overview 基于已有项目架构模式,为两个遗漏的后台管理模块实现完整的后端功能。测评记录模块基于已有数据库表提供只读查询和导出,业务介绍页模块新建数据库表并提供完整 CRUD。所有实现遵循现有的 Controller → Service → DbContext 分层架构和 RPC 风格接口规范。 ## Tasks - [x] 1. 创建实体类和数据库上下文扩展 - [x] 1.1 创建 AssessmentRecord、AssessmentAnswer、AssessmentResult 实体类 - 在 `Entities/` 目录下创建三个实体类,使用 `[Table]` 属性映射到已有的 `assessment_records`、`assessment_answers`、`assessment_results` 表 - 字段类型和约束参照数据库设计文档 - _Requirements: 1.1, 2.1, 2.2, 2.3_ - [x] 1.2 创建 BusinessPage 实体类 - 在 `Entities/` 目录下创建 BusinessPage 实体类,映射到 `business_pages` 表 - _Requirements: 5.1, 9.1_ - [x] 1.3 扩展 AdminBusinessDbContext - 在 `Data/AdminBusinessDbContext.cs` 中注册四个新的 DbSet - 在 `OnModelCreating` 中配置 AssessmentResult 的 decimal 精度和 AssessmentAnswer 的复合唯一索引 - _Requirements: 9.1, 9.2_ - [x] 2. 创建错误码和权限常量 - [x] 2.1 扩展 ErrorCodes 常量类 - 在 `Models/Common/ErrorCodes.cs` 中添加测评记录错误码 (3241-3243) 和业务介绍页错误码 (3701) - _Requirements: 2.4, 3.3, 4.3, 7.4_ - [x] 2.2 扩展 BusinessPermissions 常量类 - 在 `Constants/BusinessPermissions.cs` 中添加 AssessmentRecord 和 BusinessPage 权限定义 - _Requirements: 10.1, 10.2, 10.3_ - [x] 3. 创建 DTO 模型 - [x] 3.1 创建测评记录模块 DTO - 在 `Models/AssessmentRecord/` 目录下创建: AssessmentRecordQueryRequest, AssessmentRecordDto, AssessmentRecordDetailDto, AnswerDetailDto, ResultDetailDto, AssessmentReportDto, ReportCategoryGroup, ReportCategoryItem - _Requirements: 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.1, 2.2, 2.3, 2.5, 3.1, 3.2, 3.4_ - [x] 3.2 创建业务介绍页模块 DTO - 在 `Models/BusinessPage/` 目录下创建: BusinessPageQueryRequest, BusinessPageDto, CreateBusinessPageRequest, UpdateBusinessPageRequest - _Requirements: 5.1, 5.2, 6.1, 6.2, 6.3, 7.1, 7.2_ - [x] 4. 实现测评记录服务 - [x] 4.1 创建 IAssessmentRecordService 接口 - 在 `Services/Interfaces/` 目录下创建接口,定义 GetRecordListAsync、GetRecordDetailAsync、GetRecordReportAsync、ExportRecordsAsync 四个方法 - _Requirements: 1.1, 2.1, 3.1, 4.1_ - [x] 4.2 实现 AssessmentRecordService — 列表查询 - 实现 GetRecordListAsync,包含分页、多条件筛选、关联查询(User、AssessmentType、Order)、枚举映射 - _Requirements: 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7_ - [x] 4.3 实现 AssessmentRecordService — 详情和报告 - 实现 GetRecordDetailAsync(含答案和结果关联查询)和 GetRecordReportAsync(含分类分组和结论关联) - _Requirements: 2.1, 2.2, 2.3, 2.4, 2.5, 3.1, 3.2, 3.3, 3.4_ - [x] 4.4 实现 AssessmentRecordService — 导出 - 安装 ClosedXML NuGet 包,实现 ExportRecordsAsync,生成 Excel 文件字节数组 - 包含导出数量上限校验(10000条) - _Requirements: 4.1, 4.2, 4.3, 4.4_ - [x] 4.5 编写测评记录服务属性测试 - **Property 1: 分页查询返回记录数不超过 PageSize** - **Property 2: 筛选条件一致性** - **Property 4: 枚举显示名称映射正确性** - **Validates: Requirements 1.1, 1.2, 1.4, 1.5, 1.6, 1.7** - [x] 4.6 编写测评记录服务单元测试 - 测试记录不存在返回错误 (Requirements 2.4) - 测试未完成记录请求报告返回错误 (Requirements 3.3) - 测试导出超限返回错误 (Requirements 4.3) - [x] 5. Checkpoint — 测评记录模块验证 - Ensure all tests pass, ask the user if questions arise. - [x] 6. 实现业务介绍页服务 - [x] 6.1 创建 IBusinessPageService 接口 - 在 `Services/Interfaces/` 目录下创建接口,定义列表查询、详情、创建、更新、删除、状态更新、排序更新七个方法 - _Requirements: 5.1, 6.1, 7.1, 8.1, 8.2, 8.4_ - [x] 6.2 实现 BusinessPageService - 实现完整 CRUD 功能,包含验证逻辑(Title/ImageUrl 必填、ActionButton 条件验证)、软删除、状态管理、排序管理 - _Requirements: 5.1, 5.2, 5.3, 5.4, 6.1, 6.2, 6.3, 7.1, 7.2, 7.3, 7.4, 8.1, 8.2, 8.3, 8.4_ - [x] 6.3 编写业务介绍页服务属性测试 - **Property 10: 业务介绍页验证规则** - **Property 11: 业务介绍页创建默认值** - **Property 15: 业务介绍页 CRUD 往返一致性** - **Validates: Requirements 5.1, 5.2, 5.3, 5.4, 7.1, 7.2, 6.3** - [x] 6.4 编写业务介绍页服务单元测试 - 测试页面不存在返回错误 (Requirements 7.4, 8.3) - 测试软删除后不出现在列表中 (Requirements 8.1) - [x] 7. 实现控制器层 - [x] 7.1 创建 AssessmentRecordController - 在 `Controllers/` 目录下创建控制器,实现 GetList、GetDetail、GetReport、Export 四个接口 - 使用 `[BusinessPermission]` 特性控制权限 - Export 接口返回 FileContentResult (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) - _Requirements: 1.1, 2.1, 3.1, 4.1, 10.1_ - [x] 7.2 创建 BusinessPageController - 在 `Controllers/` 目录下创建控制器,实现 GetList、GetDetail、Create、Update、Delete、UpdateStatus、UpdateSort 七个接口 - 使用 `[BusinessPermission]` 特性控制权限 - _Requirements: 5.1, 6.1, 7.1, 8.1, 8.2, 8.4, 10.2_ - [x] 8. 注册依赖注入和数据库迁移 - [x] 8.1 注册服务到 DI 容器 - 在服务注册扩展方法中添加 IAssessmentRecordService 和 IBusinessPageService 的注册 - _Requirements: 1.1, 5.1_ - [x] 8.2 创建 business_pages 表 SQL 迁移脚本 - 在 `scripts/` 目录下创建 SQL 脚本,包含建表和索引语句 - _Requirements: 9.1, 9.2_ - [~] 9. Final checkpoint — 全部模块验证 - Ensure all tests pass, ask the user if questions arise. ## Notes - All tasks including tests are required for comprehensive coverage - 测评记录模块为只读模块,不涉及数据创建和修改 - 业务介绍页模块需要先执行 SQL 迁移脚本创建数据库表 - 所有实现遵循现有项目的编码规范(中文注释、XML 文档注释、RPC 风格路由) - ClosedXML 是 Excel 导出的依赖包,需要通过 NuGet 安装