HaniBlindBox/.kiro/specs/user-auth-migration/tasks.md
2026-01-02 17:17:30 +08:00

7.3 KiB
Raw Blame History

Implementation Plan: 用户认证系统迁移

Overview

本任务列表将PHP用户认证系统迁移到.NET 8按照接口优先级逐个迁移每完成一个接口都需要更新API接口文档标记迁移状态。

Tasks

  • 1. 基础设施准备

    • 1.1 创建认证相关的DTO和Request/Response模型
      • 在HoneyBox.Model/Models目录下创建Auth相关的请求响应模型
      • 包括WechatLoginRequest、MobileLoginRequest、ApiResponse等
      • Requirements: 1.1-1.8, 2.1-2.7
    • 1.2 创建服务接口定义
      • 在HoneyBox.Core/Interfaces目录下创建IAuthService、IJwtService、IWechatService、IUserService、IIpLocationService接口
      • Requirements: 1.1-1.8, 2.1-2.7, 3.1-3.6
    • 1.3 配置JWT认证中间件
      • 在Program.cs中配置JWT Bearer认证
      • 添加JwtSettings配置类
      • Requirements: 3.1-3.6
    • 1.4 配置Redis服务
      • 添加StackExchange.Redis依赖
      • 配置Redis连接和服务注入
      • Requirements: 1.6, 2.1, 2.2, 2.6
  • 2. JWT服务实现

    • 2.1 实现JwtService
      • 实现Token生成、验证、刷新功能
      • 实现从Token中提取用户ID
      • Requirements: 3.1-3.5
    • 2.2 编写JwtService单元测试
      • 测试Token生成和验证
      • Property 3: 登录成功Token生成
      • Validates: Requirements 3.1, 3.2
    • 2.3 编写Token验证属性测试
      • Property 7: Token验证与授权
      • Validates: Requirements 3.3, 3.4
  • [-] 3. 用户服务实现

    • 3.1 实现UserService基础功能
      • 实现用户查找ByOpenId、ByUnionId、ByMobile
      • 实现用户创建
      • 实现UID生成策略
      • Requirements: 1.2, 1.3, 2.3
    • 3.2 实现用户信息获取和更新
      • 实现GetUserInfoAsync
      • 实现UpdateUserAsync
      • 实现VIP等级计算
      • Requirements: 4.1-4.5
    • 3.3 编写UserService属性测试
      • Property 2: 新用户创建完整性
      • Property 9: 用户信息完整性
      • Property 10: 昵称更新验证
      • Property 11: VIP等级计算
      • Validates: Requirements 1.3, 2.3, 4.1, 4.2, 4.4, 4.5
  • 4. 微信服务实现

    • 4.1 实现WechatService
      • 实现GetOpenIdAsync调用微信API获取openid/unionid
      • 实现GetMobileAsync获取微信授权手机号
      • Requirements: 1.1, 5.1
    • 4.2 编写WechatService单元测试
      • Mock微信API测试
      • Requirements: 1.1, 1.7
  • 5. IP地理位置服务实现

    • 5.1 实现IpLocationService
      • 调用高德地图API解析IP地址
      • 返回省份、城市、区域编码
      • Requirements: 6.2
  • 6. 认证服务实现

    • 6.1 实现AuthService - 微信登录
      • 实现WechatMiniProgramLoginAsync
      • 包含防抖机制、用户查找/创建、Token生成
      • Requirements: 1.1-1.8
    • 6.2 实现AuthService - 手机号登录
      • 实现MobileLoginAsync
      • 包含验证码验证、用户查找/创建、Token生成
      • Requirements: 2.1-2.7
    • 6.3 实现AuthService - 手机号绑定
      • 实现BindMobileAsync和WechatBindMobileAsync
      • 包含账户合并逻辑
      • Requirements: 5.1-5.5
    • 6.4 实现AuthService - 登录记录
      • 实现RecordLoginAsync
      • 记录登录日志、更新UserAccount
      • Requirements: 6.1, 6.3, 6.4
    • 6.5 实现AuthService - 账号注销
      • 实现LogOffAsync
      • Requirements: 7.1-7.3
    • 6.6 编写AuthService属性测试
      • Property 1: 微信登录用户查找优先级
      • Property 4: 登录防抖机制
      • Property 5: 推荐关系记录
      • Property 6: 验证码验证与清理
      • Property 8: 数据库Token兼容存储
      • Validates: Requirements 1.2, 1.6, 1.8, 2.1, 2.2, 2.6, 2.7, 3.6
    • 6.7 编写手机号绑定属性测试
      • Property 12: 手机号绑定验证码验证
      • Property 13: 账户合并正确性
      • Property 14: 直接绑定手机号
      • Validates: Requirements 5.1-5.5
    • 6.8 编写登录记录属性测试
      • Property 15: 登录日志记录
      • Property 16: recordLogin接口返回值
      • Property 17: 账号注销类型处理
      • Validates: Requirements 6.1, 6.3, 6.4, 7.1-7.3
  • 7. Checkpoint - 服务层测试验证

    • 确保所有服务层单元测试通过
    • 确保所有属性测试通过
    • 如有问题请询问用户
  • 8. 控制器实现 - AuthController

    • 8.1 实现微信小程序登录接口 POST /login
      • 调用AuthService.WechatMiniProgramLoginAsync
      • 更新API接口文档标记迁移状态
      • Requirements: 1.1-1.8
    • 8.2 实现手机号登录接口 POST /mobileLogin
      • 调用AuthService.MobileLoginAsync
      • 更新API接口文档标记迁移状态
      • Requirements: 2.1-2.7
    • 8.3 实现微信授权绑定手机号接口 POST /login_bind_mobile
      • 调用AuthService.WechatBindMobileAsync
      • 更新API接口文档标记迁移状态
      • Requirements: 5.1-5.5
    • 8.4 实现验证码绑定手机号接口 POST /bindMobile
      • 调用AuthService.BindMobileAsync
      • 更新API接口文档标记迁移状态
      • Requirements: 5.1-5.5
    • 8.5 实现登录记录接口 GET|POST /login_record
      • 调用AuthService.RecordLoginAsync
      • 更新API接口文档标记迁移状态
      • Requirements: 6.1-6.4
  • 9. 控制器实现 - UserController

    • 9.1 实现获取用户信息接口 POST /user
      • 调用UserService.GetUserInfoAsync
      • 更新API接口文档标记迁移状态
      • Requirements: 4.1-4.5
    • 9.2 实现更新用户信息接口 POST /update_userinfo
      • 调用UserService.UpdateUserAsync
      • 支持Base64头像上传到腾讯云COS
      • 更新API接口文档标记迁移状态
      • Requirements: 4.2, 4.3
    • 9.3 实现账号注销接口 POST /user_log_off
      • 调用AuthService.LogOffAsync
      • 更新API接口文档标记迁移状态
      • Requirements: 7.1-7.3
  • 10. Checkpoint - 控制器测试验证

    • 确保所有控制器接口可正常访问
    • 使用Postman或HTTP文件测试各接口
    • 如有问题请询问用户
  • 11. 集成测试

    • 11.1 编写微信登录集成测试
      • 测试完整的微信登录流程
      • Requirements: 1.1-1.8
    • 11.2 编写手机号登录集成测试
      • 测试完整的手机号登录流程
      • Requirements: 2.1-2.7
    • 11.3 编写用户信息接口集成测试
      • 测试用户信息获取和更新流程
      • Requirements: 4.1-4.5
  • 12. 文档更新和最终验证

    • 12.1 更新API接口文档
      • 确认所有迁移接口都已标记
      • 记录新接口地址
      • Requirements: 8.1-8.3
    • 12.2 创建HTTP测试文件
      • 在HoneyBox.Api目录下创建auth.http测试文件
      • 包含所有认证相关接口的测试请求
  • 13. Final Checkpoint - 完整功能验证

    • 确保所有测试通过
    • 确保API文档已更新
    • 确保与前端兼容性
    • 如有问题请询问用户

Notes

  • All tasks are required for comprehensive testing from the start
  • Each task references specific requirements for traceability
  • Checkpoints ensure incremental validation
  • Property tests validate universal correctness properties
  • Unit tests validate specific examples and edge cases
  • 每迁移完成一个接口都需要在docs/API接口文档.md中标记迁移状态和新接口地址