HaniBlindBox/.kiro/specs/advanced-features/tasks.md
2026-01-03 12:44:56 +08:00

5.5 KiB
Raw Blame History

Implementation Plan: 高级功能迁移

Overview

本任务列表实现阶段8的三个核心功能API文档完善、集成测试覆盖和缓存预热机制。任务按照依赖关系排序确保增量开发和验证。

Tasks

  • 1. API文档完善

    • 1.1 配置XML文档生成
      • 修改HoneyBox.Api.csproj启用GenerateDocumentationFile
      • 添加NoWarn配置忽略缺少注释的警告
      • Requirements: 1.1, 1.3
    • 1.2 完善控制器XML注释
      • 为所有控制器类添加summary注释
      • 为所有Action方法添加summary、param、returns注释
      • 添加中文描述说明
      • Requirements: 1.3, 1.6
    • 1.3 完善DTO模型XML注释
      • 为Request/Response模型添加summary注释
      • 为模型属性添加中文描述
      • 添加example示例值
      • Requirements: 1.6
    • 1.4 配置OpenAPI JWT认证
      • 在Program.cs中配置OpenAPI的SecurityScheme
      • 添加Bearer Token认证支持
      • Requirements: 1.4
    • 1.5 配置多响应状态码
      • 为需要认证的接口添加401响应定义
      • 为可能失败的接口添加400响应定义
      • 使用ProducesResponseType特性
      • Requirements: 1.5
  • 2. Checkpoint - API文档验证

    • 启动应用访问/openapi/v1.json验证文档生成
    • 访问Scalar UI验证文档展示
    • 如有问题请询问用户
  • 3. 集成测试基础设施

    • 3.1 创建WebApplicationFactory
      • 在HoneyBox.Tests项目创建HoneyBoxWebApplicationFactory类
      • 配置使用内存数据库替代SQL Server
      • 配置测试环境的服务注册
      • Requirements: 2.5
    • 3.2 创建集成测试基类
      • 创建IntegrationTestBase抽象类
      • 实现GetAuthTokenAsync方法生成测试Token
      • 实现SeedTestDataAsync方法初始化测试数据
      • Requirements: 2.5, 2.7
    • 3.3 创建测试数据种子
      • 创建TestDataSeeder类
      • 实现用户、商品、订单等测试数据初始化
      • Requirements: 2.1-2.4
  • 4. 集成测试实现

    • 4.1 实现认证模块集成测试
      • 测试微信登录流程(模拟)
      • 测试手机号登录流程
      • 测试Token验证
      • Requirements: 2.1
    • 4.2 实现商品模块集成测试
      • 测试商品列表查询
      • 测试商品详情查询
      • 测试商品收藏功能
      • Requirements: 2.2
    • 4.3 实现订单模块集成测试
      • 测试订单创建
      • 测试订单查询
      • 测试订单取消
      • Requirements: 2.3
    • 4.4 实现抽奖模块集成测试
      • 测试抽奖结果查询
      • 测试中奖记录查询
      • 测试道具卡抽奖
      • Requirements: 2.4
    • * 4.5 编写API响应格式属性测试
      • Property 3: 集成测试响应格式一致性
      • Validates: Requirements 2.6
  • 5. Checkpoint - 集成测试验证

    • 运行所有集成测试确保通过
    • 如有问题请询问用户
  • 6. 缓存预热实现

    • 6.1 创建缓存预热配置
      • 在appsettings.json添加CacheWarmup配置节
      • 创建CacheWarmupOptions配置类
      • 注册配置到DI容器
      • Requirements: 3.6
    • 6.2 创建缓存预热服务接口
      • 在HoneyBox.Core/Interfaces创建ICacheWarmupService接口
      • 定义WarmupAsync、WarmupHotGoodsAsync、WarmupSystemConfigAsync方法
      • Requirements: 3.1, 3.2
    • 6.3 实现缓存预热服务
      • 在HoneyBox.Core/Services创建CacheWarmupService类
      • 实现热门商品数据预热(按销量/浏览量排序)
      • 实现系统配置数据预热
      • 添加预热进度日志记录
      • Requirements: 3.1, 3.2, 3.4
    • 6.4 创建缓存预热后台服务
      • 在HoneyBox.Api创建CacheWarmupHostedService类
      • 继承BackgroundService实现异步预热
      • 添加错误处理确保不影响系统启动
      • Requirements: 3.3, 3.5
    • 6.5 注册缓存预热服务
      • 在Program.cs注册ICacheWarmupService
      • 注册CacheWarmupHostedService为托管服务
      • Requirements: 3.1-3.6
    • * 6.6 编写缓存预热属性测试
      • Property 4: 缓存预热异步性
      • Validates: Requirements 3.3
  • 7. Checkpoint - 缓存预热验证

    • 启动应用验证预热日志输出
    • 验证缓存中存在预热数据
    • 如有问题请询问用户
  • 8. 文档更新

    • 8.1 更新API迁移文档
      • 在docs/API迁移详细文档/阶段8-高级功能.md标记完成状态
      • 记录实现的功能和配置说明
      • Requirements: 1.1-3.6
  • 9. Final Checkpoint - 完整功能验证

    • 确保所有测试通过
    • 确保API文档完整可访问
    • 确保缓存预热正常工作
    • 如有问题请询问用户

Notes

  • Tasks marked with * are optional and can be skipped for faster MVP
  • Each task references specific requirements for traceability
  • Checkpoints ensure incremental validation
  • Property tests validate universal correctness properties
  • 集成测试使用内存数据库不依赖外部SQL Server
  • 缓存预热在后台异步执行,不阻塞应用启动
  • API文档使用.NET内置的OpenAPI支持和Scalar UI

技术说明

XML注释配置

<!-- HoneyBox.Api.csproj -->
<PropertyGroup>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
    <NoWarn>$(NoWarn);1591</NoWarn>
</PropertyGroup>

缓存预热配置

// appsettings.json
{
  "CacheWarmup": {
    "EnableWarmup": true,
    "HotGoodsCount": 100,
    "WarmupDelaySeconds": 5
  }
}

集成测试运行

cd server/C#/HoneyBox
dotnet test --filter "Category=Integration"