mi-assessment/.kiro/specs/admin-missing-modules/tasks.md
2026-02-08 11:31:08 +08:00

110 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 安装