gcx/backend/migrations
hailin e89ec82406 feat(auth): 完整实现 SMS 手机注册/登录/验证系统
参考 rwadurian 项目的成熟实现,在 Genex auth-service 上全面增强短信验证体系。

## 新增功能

### Domain 层
- Phone Value Object: E.164 标准化、中国大陆格式自动补+86、掩码显示(138****8000)
- SmsCode Value Object: crypto 安全随机6位生成、格式验证
- SmsVerification Entity: 验证码记录持久化,支持4种类型(REGISTER/LOGIN/RESET_PASSWORD/CHANGE_PHONE)
- SmsLog Entity: SMS发送日志审计追踪(provider/status/error)
- User Entity 增强: loginFailCount + lockedUntil 字段,指数退避锁定策略(1→2→4→8...→1440分钟)
- 5个新 Domain Events: SmsCodeSent, SmsCodeVerified, AccountLocked, PhoneChanged, PasswordReset

### Infrastructure 层
- 3个 SQL 迁移: users表锁定字段(041), sms_verifications表(042), sms_logs表(043)
- SmsVerification/SmsLog TypeORM Repository 实现
- SMS Provider 抽象层: ISmsProvider 接口 + ConsoleSmsProvider(开发) + AliyunSmsProvider(生产)
- Redis SmsCodeService 增强: 类型前缀 auth:sms:{type}:{phone},保留向后兼容

### Application 层
- 独立 SmsService: 发送验证码(日限额10条+业务规则校验) + 验证验证码(尝试限制5次)
- AuthService 重构: 注册需SMS验证、密码登录带锁定检查、+resetPassword/changePhone

### Interface 层
- 新端点: POST /auth/sms/send, POST /auth/reset-password, POST /auth/change-phone
- DTO 更新: RegisterDto 增加 smsCode 必填, SendSmsCodeDto 增加 type 枚举
- 全部端点 Swagger 文档

### 配置
- .env.example: SMS_ENABLED, ALIYUN_SMS_*, SMS_DAILY_LIMIT, LOGIN_MAX_FAIL_ATTEMPTS
- auth.module: SMS_PROVIDER 按 SMS_ENABLED 环境变量自动切换

## API 端点一览
- POST /api/v1/auth/sms/send — 发送验证码(4种类型)
- POST /api/v1/auth/register — 手机注册(phone+smsCode+password)
- POST /api/v1/auth/login — 密码登录(带锁定检查)
- POST /api/v1/auth/login-phone — 短信验证码登录
- POST /api/v1/auth/reset-password — 重置密码
- POST /api/v1/auth/change-phone — 换绑手机(需登录)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 19:12:57 -08:00
..
000_extensions.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
001_create_users.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
002_create_wallets.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
003_create_transactions.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
004_create_issuers.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
005_create_address_mappings.sql feat: 全12服务DDD重构 + 公告定向推送系统 (移植自rwadurian) 2026-02-12 21:11:24 -08:00
006_create_coupons.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
007_create_coupon_rules.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
008_create_stores.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
009_create_orders.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
010_create_trades.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
011_create_kyc_submissions.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
012_create_credit_metrics.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
013_create_aml_alerts.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
014_create_ofac_screening.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
015_create_travel_rule_records.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
016_create_breakage_records.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
017_create_journal_entries.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
018_create_settlements.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
019_create_refunds.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
020_create_messages.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
021_create_disputes.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
022_create_audit_logs.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
023_create_sar_reports.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
024_create_outbox.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
025_create_distributed_config.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
026_create_refresh_tokens.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
027_create_notifications.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
028_create_disputes.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
029_create_audit_logs.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
030_create_insurance_claims.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
031_create_reports.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
032_create_stores_employees_redemptions.sql feat: 全平台API对齐 — 4个前端应用55+页面接入真实后端API 2026-02-22 22:53:07 -08:00
032_create_telemetry_events.sql feat: 新增用户遥测(Telemetry)与移动端OTA版本管理功能 2026-02-12 17:53:50 -08:00
033_create_daily_active_stats.sql feat: 新增用户遥测(Telemetry)与移动端OTA版本管理功能 2026-02-12 17:53:50 -08:00
034_create_online_snapshots.sql feat: 新增用户遥测(Telemetry)与移动端OTA版本管理功能 2026-02-12 17:53:50 -08:00
035_create_app_versions.sql feat: 新增用户遥测(Telemetry)与移动端OTA版本管理功能 2026-02-12 17:53:50 -08:00
036_create_blocks.sql feat: 全12服务DDD重构 + 公告定向推送系统 (移植自rwadurian) 2026-02-12 21:11:24 -08:00
037_create_chain_transactions.sql feat: 全12服务DDD重构 + 公告定向推送系统 (移植自rwadurian) 2026-02-12 21:11:24 -08:00
038_create_announcements.sql feat: 全12服务DDD重构 + 公告定向推送系统 (移植自rwadurian) 2026-02-12 21:11:24 -08:00
039_create_device_tokens.sql feat: 设备推送系统 — FCM/APNs/HMS/小米/OPPO/vivo 多通道推送 + PROMOTION广告类型 2026-02-12 23:48:52 -08:00
040_create_debezium_support.sql feat: Debezium CDC 安全加固 + WAL 防护 (来自 rwadurian 生产事故经验) 2026-02-15 06:42:03 -08:00
041_add_user_lockout_fields.sql feat(auth): 完整实现 SMS 手机注册/登录/验证系统 2026-02-23 19:12:57 -08:00
042_create_sms_verifications.sql feat(auth): 完整实现 SMS 手机注册/登录/验证系统 2026-02-23 19:12:57 -08:00
043_create_sms_logs.sql feat(auth): 完整实现 SMS 手机注册/登录/验证系统 2026-02-23 19:12:57 -08:00
seed.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
seed_data.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00