HaniBlindBox/.kiro/specs/float-ball-migration/tasks.md
2026-01-03 21:06:26 +08:00

2.8 KiB

Implementation Plan: Float Ball Migration

Overview

将悬浮球功能从 PHP 后端迁移到 .NET 10 后端,包括数据库表创建、数据迁移脚本和 API 接口实现。

Tasks

  • 1. 创建数据库表和 Entity 配置

    • 1.1 创建 SQL Server 表 float_ball_configs

      • 在 SQL Server 中执行建表语句
      • 包含所有必要字段和约束
      • Requirements: 1.1, 1.2, 1.3, 1.4
    • 1.2 创建 FloatBallConfig 实体类

      • HoneyBox.Model/Entities/ 目录创建 FloatBallConfig.cs
      • 定义所有属性和数据类型
      • Requirements: 4.1, 4.4
    • 1.3 配置 DbContext

      • HoneyBoxDbContext.cs 中添加 DbSet<FloatBallConfig>
      • 配置 Fluent API 映射
      • Requirements: 4.2, 4.3
  • 2. 创建数据迁移脚本

    • 2.1 创建 migrate_float_ball.js 迁移脚本

      • 参考 migrate_coupons.js 的模式
      • 实现 MySQL 到 SQL Server 的数据迁移
      • 支持增量迁移(跳过已迁移记录)
      • 包含错误处理和日志记录
      • Requirements: 2.1, 2.2, 2.3, 2.5, 2.6
    • 2.2 执行数据迁移并验证

      • 运行迁移脚本
      • 验证记录数一致性
      • Requirements: 2.4
  • 3. 实现 API 接口

    • 3.1 创建 FloatBallResponse DTO

      • HoneyBox.Model/Models/FloatBall/ 目录创建响应模型
      • 排除 status, created_at, updated_at 字段
      • Requirements: 3.3, 3.4
    • 3.2 创建 IFloatBallService 接口和实现

      • HoneyBox.Core/Interfaces/ 创建接口
      • HoneyBox.Core/Services/ 创建实现
      • 实现 GetEnabledFloatBallsAsync 方法
      • Requirements: 3.1, 3.2
    • 3.3 创建 API 端点

      • ConfigController.cs 或新建 FloatBallController.cs 添加端点
      • 实现 GET /api/getFloatBall 接口
      • 设置 [AllowAnonymous] 属性
      • Requirements: 3.5, 3.6, 5.1, 5.2, 5.3
    • 3.4 注册服务依赖

      • 在 Autofac 模块中注册 IFloatBallService
      • Requirements: 4.3
  • 4. Checkpoint - 验证功能

    • 确保所有代码编译通过
    • 测试 API 接口返回正确数据
    • 验证响应格式与 PHP 后端一致
    • 如有问题请询问用户
  • * 5. 编写测试

    • * 5.1 编写单元测试

      • 测试 FloatBallService 只返回启用的配置
      • 测试空结果场景
      • Property 4: API Returns Only Enabled Configurations
      • Validates: Requirements 3.1, 3.2
    • * 5.2 编写集成测试

      • 测试完整 API 端点
      • 验证响应格式
      • Property 6: API Response Format Consistency
      • Validates: Requirements 5.1, 5.2

Notes

  • 任务标记 * 为可选任务,可跳过以加快 MVP 开发
  • 每个任务引用具体需求以便追溯
  • 数据迁移脚本参考现有的 migrate_coupons.js 模式
  • API 端点无需认证,使用 [AllowAnonymous] 属性