Files
kra-new/docs/sw6-to-kra/report-build-source-notes.md
T

3.1 KiB

日汇总和区服汇总任务迁移

核对旧 main 的两个 SwReport*BuildServiceImpl、两个 SnailJob 执行器、ReportIdentityHelper 和 ReportBuildRangeSupport。

原始数据口径

  • 日汇总注册只取 tab_user.puid=0,注册时间按原 CAST(register_time AS UNSIGNED) 语义。按平台、渠道、首次游戏分组。
  • 日汇总活跃来自 tab_user_day_login,必须能找到同平台主账号。记录无平台时,仅当全库同 ID 恰好一个主账号时才接受;跨平台存在多个主账号时跳过。缺渠道回退账号的渠道。
  • 日汇总充值取当天成功支付,金额不限制主账号;付款用户不存在时模式 0 仍计账号,模式 1 因无身份证不计身份。没有付款用户 ID 的成功单仍计金额。
  • 新增付费先取同一分组内“当日注册账号 ∩ 当日付费账号”,再转身份证;不能直接用身份证交集,否则会把同证件的其他账号误认成新增付费。
  • 区服注册取 tab_user_play_info.create_time 的创角,活跃取 play_time,不套用日注册/登录的主账号限制。区服编号去首尾空白,保留前导零;创角/活跃缺游戏 ID 时忽略,充值缺游戏 ID 沿用 0。区服汇总没有新增付费指标。
  • 两类报表均按日、平台、渠道、游戏(区服额外编号)生成模式 0/1 两行及对应身份键。模式 1 去首尾空格、仅将末尾 X 转 x,空身份证丢弃。金额两种模式相同,查询层仍固定读取模式 0。
  • 游戏名作为当前游戏资料的快照写入。游戏/用户按关联 ID 批量加载,平台作为字典键的一部分,不混淆跨平台同号。

原子替换与任务

  • 所有原始数据读取、计算和两张报表替换在同一事务。按报表类型+日期的锁表串行同分区重建,避免不同任务同时回跑同一天。读不到必要源表/目标表时拒绝重建,不清空既有数据。
  • 汇总、身份键按批写入,失败或取消回滚原有分区;其他日期不变。输出日期固定 yyyy-MM-dd,不采用驱动返回的时间格式作为写入日期。
  • 任务方法保留 swReportDayTodayTask / YesterdayTask / BackfillTask 和对应 swReportServerDay* 六个名字。已有迁移 SQL 保留旧执行器名和 _execution 参数,可直接绑定 Kra 方法执行器。
  • 回跑参数为 startDate/endDate;每个缺省日期独立取昨日,闭区间逐日重建、日间暂停一秒,最后一天不暂停。支持上下文取消,非法/倒置日期报错。
  • 不新建默认商务计划、不启用旧导入计划。原始同步表和四张业务报表表沿用旧库结构;本批只新建日期互斥锁表,不在系统库中伪造完整业务数据源。

验证边界

领域与存储测试覆盖身份/账号规则、重复构建、自然日筛选和身份明细写失败后的原子回滚。真实 TCP HTTP 使用隔离数据库和 Kra 原生任务创建、手动触发、执行日志,核对两种报表实际落库且任务仍为禁用。

当前验证状态统一见 验收与性能记录,不再维护阶段性运行报告。