gcx/backend/migrations
hailin ce9cc5b72e feat(telemetry): 完整实现 presence-service 迁移 + Flutter 遥测接入
## 后端 (backend/services/telemetry-service)

### 修复骨架中的关键缺陷
- 创建本地 JwtAuthGuard / AdminGuard,替换不存在的 @genex/common 包
- 修复 req.user.sub → req.user.id(与 JwtStrategy.validate() 返回值对齐)
- 重写 Dockerfile,移除对不存在的 packages/common 目录的引用
- 更新 telemetry.module.ts,将 JwtAuthGuard / AdminGuard 注册为 providers
- admin-telemetry.controller.ts 改用本地 AdminGuard(检查 role === 'admin')

### 新增功能
- GET /api/v1/telemetry/config:公开配置下发接口
  Flutter TelemetryConfig.syncFromRemote() 每小时拉取,返回全局开关、采样率、
  心跳间隔等配置,所有字段支持环境变量覆盖(TELEMETRY_GLOBAL_ENABLED 等)
- 设备字段(deviceBrand/deviceModel/deviceOs/appVersion/locale)提升为顶层列
  BatchEventsDto / TelemetryEvent 实体 / recordEvents() 全链路补齐
  原因:JSONB 内字段无法走 B-tree 索引,千万级数据分组查询需独立列

### DB 迁移
- 050_add_device_fields_to_telemetry_events.sql:为已有 telemetry_events 表
  新增 5 个设备字段列和 device_brand / app_version 索引

### docker-compose 环境变量
- telemetry-service 新增 TELEMETRY_GLOBAL_ENABLED / SAMPLING_RATE /
  HEARTBEAT_INTERVAL / CONFIG_VERSION 环境变量,支持生产环境热调整

## 前端

### genex-mobile (Flutter 消费者端)
- 复制 lib/core/telemetry/ 模块(11个文件):TelemetryService、
  HeartbeatService、SessionManager、TelemetryUploader、TelemetryStorage 等
- 修正 API 路径:presence/heartbeat → telemetry/heartbeat,
  analytics/events → telemetry/events
- pubspec.yaml 新增依赖:uuid ^4.3.3、equatable ^2.0.5、device_info_plus ^10.1.0
- main.dart:initState 首帧回调初始化 TelemetryService(需 BuildContext 采集设备信息)
  已登录时自动注入 accessToken
- auth_service.dart:_setAuth() 登录成功后注入 userId + accessToken;
  _clearAuth() 退出时清除(同时覆盖 Token 过期自动清除场景)

### admin-app (Flutter 发行方控制台)
- 复制 lib/core/telemetry/ 模块(同上)
- pubspec.yaml 新增依赖:uuid、equatable、device_info_plus、shared_preferences
- IssuerLoginPage:initState 首帧初始化 + 登录成功后注入 userId/token
  使用 api.gogenex.cn(与 UpdateService 域名一致)
- settings_page.dart:退出登录时调用 clearUserId() + clearAccessToken()

## 架构说明
- 在线人数:Redis Sorted Set (genex:presence:online),心跳 60s/次,180s 窗口判定在线
- DAU:app_session_start 事件写入 telemetry_events,每天凌晨 1 点聚合到
  daily_active_stats 表,同时每小时滚动更新当日 DAU
- 设备字段采用 Amplitude 风格:前端本地队列存 properties 内,
  toServerJson() 上传时自动提升为顶层字段,后端写入独立索引列
- 心跳需要 JWT 认证(未登录用户自动跳过,不报错)
- 遥测完全异步,任何失败只打 debug 日志,不影响主流程

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 23:33:13 -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 fix(schema): 统一 disputes + audit_logs 迁移与实体定义 2026-02-23 22:01:20 -08:00
029_create_audit_logs.sql fix(schema): 统一 disputes + audit_logs 迁移与实体定义 2026-02-23 22:01:20 -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
044_add_users_version_column.sql fix(auth): 补全部署前置条件 — version列迁移 + docker-compose优化 2026-02-23 21:49:31 -08:00
045_align_disputes_audit_logs.sql fix(schema): 统一 disputes + audit_logs 迁移与实体定义 2026-02-23 22:01:20 -08:00
046_add_app_type_to_app_versions.sql feat(admin): App 版本管理 — 多应用支持 + 管理后台页面 2026-03-03 06:09:55 -08:00
047_create_referral_profiles.sql feat(referral): 推荐服务全链路实现 2026-03-04 00:58:28 -08:00
048_create_email_verifications.sql feat(auth): 邮箱注册完整实现 — Gmail SMTP + 邮件验证码全链路 2026-03-04 02:27:43 -08:00
049_create_social_accounts.sql feat(auth): 微信登录 / 注册完整实现 — social_accounts + fluwx 全链路 2026-03-04 03:37:51 -08:00
050_add_device_fields_to_telemetry_events.sql feat(telemetry): 完整实现 presence-service 迁移 + Flutter 遥测接入 2026-03-05 23:33:13 -08:00
seed.sql feat: 完成全部后端微服务开发 (10服务/373文件/15586行代码) 2026-02-12 17:09:12 -08:00
seed_data.sql fix(seed): 修复 address_mappings 种子数据匹配实际 schema 2026-02-23 22:06:26 -08:00