gcx/backend/migrations
hailin 8adead23b6 feat: 设备推送系统 — FCM/APNs/HMS/小米/OPPO/vivo 多通道推送 + PROMOTION广告类型
新增设备推送通道架构,支持6大推送平台的多通道路由:

【SQL迁移】
- 039_create_device_tokens.sql: device_tokens表 (userId, platform, channel, token, deviceId等)
- announcements表新增 PROMOTION 类型约束

【Domain层 — 实体/接口/端口】
- DeviceToken实体: DevicePlatform枚举(ANDROID/IOS) + PushChannel枚举(FCM/APNS/HMS/XIAOMI/OPPO/VIVO)
- IDeviceTokenRepository: 6个仓储方法 (findActive/upsert/deactivate/countByChannel)
- IPushChannelProvider端口: PushPayload/PushResult类型 + 6个DI Symbol
- AnnouncementType枚举: 新增 PROMOTION (广告/促销推送)

【Infrastructure层 — 持久化/推送通道】
- DeviceTokenRepositoryImpl: TypeORM实现,支持批量IN查询(每批500)、token upsert
- 6个推送通道Provider (mock骨架,结构完整可直接替换为真实SDK):
  · FcmPushProvider — Google FCM (firebase-admin)
  · ApnsPushProvider — Apple APNs (HTTP/2直连,中国区必需)
  · HmsPushProvider — 华为HMS Push Kit
  · XiaomiPushProvider — 小米Mi Push
  · OppoPushProvider — OPPO Push
  · VivoPushProvider — vivo Push
- PushNotificationProvider重构: 从mock改为委托PushDispatcherService

【Application层 — 服务】
- PushDispatcherService: 核心调度器
  · sendToUser/sendToUsers → 查device tokens → 按channel分组 → 路由到对应provider
  · 自动清理无效token (shouldDeactivateToken)
- DeviceTokenService: 设备token注册/注销/查询
- AnnouncementService: 公告创建后自动触发设备推送
  · BY_TAG → 解析tag对应userIds → pushDispatcher.sendToUsers
  · SPECIFIC → 直接推送指定userIds

【Interface层 — DTO/Controller】
- RegisterDeviceTokenDto/UnregisterDeviceTokenDto: Swagger + class-validator
- DeviceTokenController: POST/DELETE/GET /device-tokens (JWT认证)

【Module注册】
- notification.module.ts: 新增DeviceToken实体、DEVICE_TOKEN_REPOSITORY、
  6个push channel provider DI绑定、PushDispatcherService、DeviceTokenService、
  DeviceTokenController

推送链路: 公告创建 → triggerPush → PushDispatcher → 查token → 按channel分组 → FCM/APNs/HMS/小米/OPPO/vivo

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 23:48:52 -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_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
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