# 新 App 上线配置检查清单 本文档定义 HyApp 新 App 从租户注册到正式运营的配置边界、业务 owner、开启条件和验收标准。它不是“把旧 App 数据全量复制一遍”的脚本说明;每项数据必须按 owner service 和业务键管理,不能跨租户复用原始自增 ID。 ## 1. 使用方式 每次新 App 上线前,先建立一份当次上线记录,填写: | 字段 | 说明 | | --- | --- | | `app_code` | 后端租户编码,全链路使用同一个小写值 | | App 名称 | 用户可见品牌名 | | Android package | Android 包名,必须和 Firebase、Google Play 一致 | | iOS bundle ID | iOS bundle identifier,必须和 Firebase、Apple 后台一致 | | 对照 App | 只用于确定初始产品口径,不代表可以直接复制原始 ID | | 计划开服时间 | UTC epoch milliseconds,用于活动、版本和内容生效时间 | | 支持国家/区域 | 国家、区域、内容和价格配置的权威范围 | | 负责人 | 后端、客户端、运营、支付、IM/RTC 各自验收人 | 状态只使用以下四种: - `NOT_STARTED`:尚未配置。 - `CONFIGURED`:已写入,但未经过真实请求验证。 - `VERIFIED`:已用新 `app_code` 走通生产链路并保留证据。 - `BLOCKED`:存在会阻断上线的问题,必须写明 owner 和解决动作。 ## 2. 上线硬性原则 1. 新 App 数据必须使用新 `app_code`;不能依赖代码中的 `lalu` 默认值维持运行。 2. 复制配置必须按 `resource_code`、`group_code`、`region_code`、`product_code` 等业务键重建引用,不能复制旧 App 的自增 ID。 3. 礼物、活动、VIP、游戏等只有主配置表不算完成;所有价格、区域、资源、奖励和 worker 必须一起验证。 4. 敏感值只能写入线上环境变量或已忽略的运行时 env,不能写入可提交 YAML、SQL、文档或代码。 5. 全部时间使用 UTC,范围统一使用 `[start_ms, end_ms)`。 6. 共享 RocketMQ topic 不代表多 App 已经就绪;必须确认消息 payload、consumer context、幂等表和 outbox claim 都保留 `app_code`。 7. 只有完成“配置写入 → 服务加载 → 真实 API/IM/RTC/MQ 请求 → 日志与数据回查”才能标记 `VERIFIED`。 ## 3. App 注册与租户基础 Owner:`user-service`、`gateway-service`。 | 配置项 | 数据/配置入口 | 开启条件 | 验收标准 | | --- | --- | --- | --- | | App 注册 | `hyapp_user.apps` | `status=active`,`app_code` 和包名唯一 | 按 `X-App-Code` 和 package 都能解析到同一 App | | Android/iOS 包信息 | `apps` 及客户端 flavor | 与应用商店、Firebase 完全一致 | 真实安装包登录成功 | | Firebase 项目 | `user-service.third_party.firebase.projects.` | 项目 ID、凭据和签名指纹都属于新 App | Google/Firebase token 在新 App 成功,不被其他 App 接受 | | JWT/请求元数据 | gateway → gRPC `RequestMeta.app_code` | 所有需要租户隔离的 RPC 透传 | 下游日志和数据行均为新 `app_code` | | 登录风控 | `auth_risk_configs`、`login_risk_country_blocks` | 明确复制或新建策略 | 允许国家可登录,拦截国家返回预期错误 | ## 4. 国家、区域与数据可见性 Owner:`user-service`。 | 配置项 | 主表 | 开启条件 | 验收标准 | | --- | --- | --- | --- | | 国家 | `countries` | 运营国家 `enabled=1` | `/api/v1/countries` 只返回新 App 允许的国家 | | 区域 | `regions` | `status=active` | 后台和 App 能查到预期区域 | | 国家归属 | `region_countries` | 每个启用国家有且只有一个有效业务区域 | 新注册用户的 `region_id` 正确 | | 存量用户重建 | `user_region_rebuild_tasks` | 只在映射变更或补历史数据时执行 | task 完成且 `UserRegionChanged` outbox 已投递 | 不能根据服务器所在地、IP 或容器时区推断业务国家/区域。 ## 5. 管理后台与 App 内容入口 Owner:`server/admin`。 | 配置项 | 主表 | 开启条件 | 验收标准 | | --- | --- | --- | --- | | App 通用配置 | `admin_app_configs` | 新 App 必须有自己的 `group + key` | H5 入口和功能跳转不读取其他 App 值 | | Banner | `admin_app_banners` | 至少一个符合首页/区域/国家口径的 active 内容 | `/api/v1/app/banners` 在目标国家返回预期内容 | | 弹窗 | `admin_app_popups` | 按产品需求设为 active,并配置生效时间 | `/api/v1/app/popups` 可见且跳转正确 | | 开屏 | `admin_app_splash_screens` | 按 platform/国家/区域生效 | `/api/v1/app/splash-screens` 返回预期素材 | | 版本控制 | `admin_app_versions` | Android/iOS 当前生产版本均有记录 | `/api/v1/app/version` 返回正确版本、build 和强更策略 | | Explore Tab | `admin_app_explore_tabs` | 显式启用并配置预期顺序 | App 探索入口与后台一致 | 内容 API 返回 `200` 但 `items=[]` 只证明接口可用,不代表运营配置已完成。 ## 6. 腾讯云 IM、RTC 与播报 Owner:`gateway-service`、`activity-service`、`room-service`;客户端长连属于腾讯云 IM。 | 配置项 | 配置/链路 | 开启条件 | 验收标准 | | --- | --- | --- | --- | | IM UserSig | `gateway-service.tencent_im` | SDKAppID、secret、admin identifier 与线上 IM 应用一致 | 新 App 真实用户能登录 IM | | IM callback | gateway callback | callback 能从合法 GroupID/请求中确定 `app_code` | Fami/Lalu 回调不会互相落库 | | RTC UserSig | `gateway-service.tencent_rtc` | SDKAppID、secret、room ID 类型与客户端一致 | 真实设备进房、上麦、发流成功 | | RTC callback | `tencent_rtc.callback_url` | 不能把 `app_code` 写死为其他 App | 回调日志与房间租户一致 | | 全局/区域播报群 | `activity-service.broadcast` | 为新 App 和所有 active region 建立群 | 群 ID 含新 `app_code`,客户端能加入 | | 播报 outbox | `im_broadcast_outbox` | worker 必须按记录 `app_code` claim、发送和 mark | 新 App 消息从 pending 到 delivered,无跨 App 更新 | 至少实测一条全局播报、一条区域播报和一条房间系统消息。 ## 7. 房间配置 Owner:`room-service`。Room Cell 仍然是房间核心状态 owner;新 App 上线不得把房间状态复制到其他服务。 | 配置项 | 主表 | 开启条件 | 验收标准 | | --- | --- | --- | --- | | 麦位 | `room_seat_configs` | 有新 App 配置,否则明确接受代码默认值 | 创房后麦位数量与客户端一致 | | 火箭 | `room_rocket_configs` | `enabled=1` 且奖励、油箱、频控已设定 | 完成加油、发射、奖励和 MQ 验证 | | 宝箱 | `room_treasure_configs` | 产品需要时显式开启 | 开关与 App 入口一致 | | 人机房 | `room_human_robot_configs` | 只有配好机器人账号和策略后才能开启 | 机器人加入/离开不污染真人 presence | | 区域置顶 | `room_region_pins` | 按新 App 运营需求单独配置 | 房间变更区域后重新建立置顶 | ## 8. 礼物、资源与装扮 Owner:`wallet-service`。 礼物上线是一组不可拆分的配置: | 配置项 | 主表 | 开启条件 | | --- | --- | --- | | 资源定义 | `resources` | 依赖资源必须 `status=active`,素材 URL 可访问 | | 资源组 | `resource_groups`、`resource_group_items` | 所有活动/VIP/成就引用必须映射到新 App 资源 | | 资源商店 | `resource_shop_items` | 价格、有效期和上架状态已审核 | | 礼物类型 | `gift_type_configs` | 礼物分类已按产品口径启用 | | 礼物配置 | `gift_configs` | `status=active`,生效时间正确 | | 礼物价格 | `wallet_gift_prices` | 每个 active 礼物都有有效价格 | | 礼物区域 | `gift_config_regions` | 地区限制和新 App 的 region 映射一致 | | 钻石分成 | `gift_diamond_ratio_configs` | 送礼所在区域有唯一有效分成规则 | 验收必须使用新 App 真实账号执行:礼物列表 → 余额校验 → 扣款 → Room Cell 表现 → `RoomGiftSent` outbox → 统计/活动/通知下游。 ## 9. 充值、支付与兑换 Owner:`wallet-service`。 | 配置项 | 主表/运行配置 | 开启条件 | 验收标准 | | --- | --- | --- | --- | | 充值商品 | `wallet_recharge_products` | 新 App 商品 active,币种、金额、金币数正确 | App 返回商品和后台一致 | | 商品区域 | `wallet_recharge_product_regions` | 用新 App `product_id` 和 `region_id` 重建 | 每个运营区域都有预期商品 | | Google Play | `google_play` 及包名/服务账号 | 新 package 和验单凭据正确 | 测试购买、验单、发币、consume 均成功 | | 第三方支付 | `third_party_payment_channels/methods` | 渠道、国家、币种和回调签名已配置 | 下单和回调的 `app_code` 一致 | | USDT/币安等外部充值 | service YAML/env 的 per-App 映射 | 必须有新 App 账户/地址,不能回落到 Lalu | 创单、归集、确认数和入账正确 | | 钻石兑换 | `wallet_diamond_exchange_rules` | active 规则已按运营口径配置 | 边界值和余额流水一致 | | 红包 | `red_packet_configs` 及档位表 | 开关、金额、份数、过期 worker 均支持新 App | 发、抢、退、播报完整闭环 | ## 10. VIP Owner:`wallet-service`;行为唯一依据是 `vip_program_configs`。 | 配置项 | 主表 | 开启条件 | 验收标准 | | --- | --- | --- | --- | | VIP 方案 | `vip_program_configs` | `program_type`、等级数、购买/升降级、发放模式明确 | API 返回的方案与后台一致 | | VIP 等级 | `vip_levels` | 只有完成价格、时长和资源组配置的等级才能 active | `/api/v1/vip/packages` 返回预期等级 | | VIP 权益 | `vip_level_benefits` | 每个 active 等级的权益和资源引用有效 | 购买/发卡后权益生效 | | 日奖励 | cron `vip_daily_coin_rebate` | cron `app_codes` 含新 App,金额和 UTC 日切口径已确认 | 当日 run、领取和钱包流水一致 | | 进房/上线播报 | activity IM broadcast | 用户开关、VIP 级别和广播群完整 | 真实设备收到新 App 播报 | 等级处于 `disabled` 时,套餐接口返回空数组是正确保护行为,但该 App 不能因此被认为“VIP 已上线”。 ## 11. 活动与奖励 Owner:`activity-service`。 | 能力 | 主表/配置 | 上线必须同时确认 | | --- | --- | --- | | 注册奖励 | `registration_reward_configs` | 开关、奖励类型、金额/资源组、每日限制 | | 首充奖励 | `first_recharge_reward_configs/tiers` | 主开关和至少一个 active 档位 | | 累充奖励 | `cumulative_recharge_reward_configs/tiers` | 主开关、周期口径和 active 档位 | | 邀请奖励 | `invite_activity_reward_configs/tiers` | 邀请关系、有效邀请和充值事件消费就绪 | | 七日签到 | `seven_day_checkin_configs/versions/rewards` | 开关、一个当前版本和 1–7 天完整奖励 | | 每日任务 | `task_definitions/versions` | active 任务、周期、指标和奖励口径一致 | | 成就 | `achievement_definitions/conditions` | active 成就引用的徽章资源属于新 App | | 成长等级 | `growth_level_tracks/rules/tiers` | 财富/魅力/游戏轨道及展示资源完整 | | CP 周榜 | `cp_weekly_rank_configs/rewards` | 开关、排名数、关系类型和奖励齐全 | | 周星 | `weekly_star_cycles/gifts/rewards` | 当前 UTC 时间命中 active 周期,礼物和 Top 奖励完整 | | 房间流水奖励 | `room_turnover_reward_configs/tiers` | 开关、周期、档位和钱包发放链路完整 | | 转盘 | `wheel_rule_versions/prize_tiers` | 当前规则版本 active,奖品和 RTP 口径已审核 | 主开关、奖励档位和奖励资源缺任何一项,该活动都不得标记上线。 ## 12. 幸运礼物 Owner:`lucky-gift-service`。`activity-service` 中的旧副本不能作为正式运行依据。 | 配置项 | 主表/链路 | 验收标准 | | --- | --- | --- | | 规则版本 | `lucky_gift_rule_versions` | 每个运营奖池有 active 规则 | | 阶段档位 | `lucky_gift_stage_tiers` | 规则对应的 stage/tier 完整且 enabled | | 独立奖池 | `lucky_pools` | 按 `app_code + pool_id` 初始化;只复制规则时不能复制对照 App 的余额、累计入池/出池或用户运行态 | | 礼物映射 | 礼物配置与 pool 映射 | 只有新 App active 礼物才能进入抽奖 | | owner outbox | `lucky_gift_outbox` | 抽奖事实持久化并发布到独立 MQ topic | | 区域飘屏 | activity 独立 consumer group | 不得复用其他 consumer group,且保留 `app_code` | 真实验收要覆盖:普通奖、大奖、幂等重试、钱包入账、outbox 投递和区域飘屏。 ## 13. 游戏 Owner:`game-service`。 | 配置项 | 主表 | 开启条件 | | --- | --- | --- | | 游戏平台 | `game_platforms` | 平台 active,启动和回调参数完整 | | 游戏目录 | `game_catalog` | 新 App 明确选择要开放的游戏,不强制与对照 App 数量相同 | | 展示规则 | `game_display_rules` | 每个 active 游戏有可见规则 | | 自研游戏配置 | `game_self_game_configs`、风控/新手策略 | 游戏开关、RTP、风控参数已审核 | | 机器人 | `game_self_game_robots` | 自研对战需要补位时,必须有新 App 真实机器人用户 | | 档位奖池 | `game_self_game_stake_pools` | 每个可玩档位有 active 奖池和初始水位 | | 回调归属 | gateway JWT → `RequestMeta.app_code` | 厂商回调不能默认记入 Lalu | 第三方游戏少于对照 App 不一定是错误;必须由产品/运营给出明确游戏清单。但自研游戏已对用户开放时,机器人和奖池为空属于上线阻断。 ## 14. cron、MQ、outbox 和通知 | 配置项 | Owner | 开启条件 | 验收标准 | | --- | --- | --- | --- | | cron 任务 | `cron-service` | 所有应在新 App 运行的 task `app_codes` 含新 App | `cron_task_runs` 按 `task_name + app_code` 生成成功记录 | | owner outbox publisher | room/wallet/user/game/lucky-gift | 只有 owner 服务扫描自己的 outbox | 新 App pending 可持续转 delivered,无长时间积压 | | RocketMQ consumer group | 每个下游服务 | 不得共享 owner 的 outbox 状态或其他业务消费组 | group 存在、无异常 lag、重投幂等 | | 统计消费 | `statistics-service` | wallet/room/user/game 事实消费器已启用 | 新 App 聚合表产生 UTC 日数据 | | 私有通知 | `notice-service` | RocketMQ 消费器为主链路 | 钱包/CP/房间通知均使用新 App 租户 | | 系统/活动 inbox | `activity-service` message owner | 后台通知通过 owner API/fanout job 创建 | 不直写 inbox/fanout 表,能从 App 查看并已读 | `notice-service` 的旧轮询 worker 关闭、RocketMQ consumer 开启是正常迁移状态,不能只看一个 `enabled=false` 就判定新 App 未开通。 ## 15. 统计与数据大屏 Owner:`statistics-service`;后台查询入口在 `server/admin`。 1. 确认 `WalletRechargeRecorded`、`GameOrderSettled`、`RoomGiftSent`、`RoomUserJoined`、`UserRegistered` 事件都带新 `app_code`。 2. 确认消费幂等表已记录新 App 事件。 3. 确认充值、游戏、礼物、活跃、注册和留存聚合表在 UTC 边界正确生成。 4. 确认 admin 大屏选择新 App 时只查聚合表,不回查 owner 明细库。 5. 使用可控测试账号产生一组注册、进房、充值、游戏、送礼事实,核对次日聚合。 ## 16. 客户端与发布 | 项目 | 必须验证 | | --- | --- | | flavor/品牌 | App 名称、图标、包名、bundle ID、深链、主题和隐私页均为新 App | | API host | 生产包指向生产 API,不得混入测试 host | | Firebase | flavor 使用自己的 `google-services.json`/iOS 配置 | | IM/RTC | SDKAppID、UserSig 及回调链路完整 | | 支付 | package/product ID/签名与商店后台一致 | | 版本 API | 首个生产 build 已写入 `admin_app_versions` | | 埋点 | 心跳、页面、社交漏斗和游戏事件使用新 `app_code` | 必须在真实 Android/iOS 设备上执行最终验收,不能只用 curl 代替 IM、RTC、支付和客户端跳转验证。 ## 17. 正式上线验收清单 ### 17.1 配置一致性 - [ ] 新 App 在所有 owner 库的 `app_code` 一致。 - [ ] 所有跨表引用已按业务键重建,不存在指向对照 App ID 的记录。 - [ ] 全部敏感配置只存在运行时 env/密钥管理系统。 - [ ] 两台或多台副本的 YAML、镜像 tag 和配置 hash 一致。 ### 17.2 业务冒烟 - [ ] 注册、登录、刷新 token、用户资料、国家/区域归属正常。 - [ ] IM 登录、单聊、房间群、全局/区域播报正常。 - [ ] RTC 进房、上麦、发流、回调和离开正常。 - [ ] 创房、进房、麦位、踢人、锁房、房间恢复正常。 - [ ] 礼物列表、送礼扣款、房间表现、收礼统计正常。 - [ ] 充值商品、真实测试购买、回调验单、钱包入账正常。 - [ ] VIP/活动/签到/任务/成就/周星等已宣布上线的能力全部真实验证。 - [ ] 第三方游戏启动、回调归属和余额一致;自研游戏机器人/奖池可用。 ### 17.3 异步与数据 - [ ] owner outbox 无新 App 长时间 pending/failed 积压。 - [ ] RocketMQ consumer group 存在且无异常 lag。 - [ ] cron 所需 task 已产生新 App 成功运行记录。 - [ ] 通知、inbox、播报和 push 不串 App。 - [ ] 统计聚合表有新 App 真实事实,UTC 边界正确。 ### 17.4 发布结论 只有以下条件全部满足才能标记“可正式运营”: 1. P0 阻断项为 0。 2. 所有宣布上线的功能已完成真实设备和生产链路验证。 3. 运营明确接受未上线的可选功能,且 App 客户端不展示无配置入口。 4. 发布镜像、数据迁移、MQ、YAML/env、客户端版本和回滚方案均有记录。 ## 18. Fami 生产差异快照(2026-07-13) 本节是对生产 YAML、生产 MySQL、线上镜像和公网 API 的只读快照,用于保留 Fami 从试运营转正式运营前的基线。后续修复后应追加新日期的验收结果,不覆盖本快照。 ### 18.1 P0 阻断项 | 项目 | Fami 当前状态 | Lalu 对照 | 必须动作 | | --- | --- | --- | --- | | 礼物 | `gift_configs=0`、`wallet_gift_prices=0` | 95 个 active 礼物、103 个 active 价格 | 按业务键创建 Fami 礼物和价格,验证送礼闭环 | | 资源 | 535 条全部 `deleted`,有效资源/资源组/商城均为 0 | 501 active 资源、56 active 资源组 | 重建 Fami 资源体系和全部引用 | | VIP | 方案 active,但 VIP1–VIP10 全部 disabled | VIP1–VIP8 active | 只启用已完成价格、权益和资源配置的 VIP1–VIP9 | | RTC callback | 两台 gateway 回调 URL 都写死 `app_code=lalu` | Lalu 符合当前值 | 调整回调归属,分别验证 Fami/Lalu RTC 事件 | | IM 播报 worker | 线上 `activity-service:20260712-main-7d011ce` 仍以默认 Lalu context claim/reconcile | Lalu 已投递 71,564 条 | 发布多 App claim/建群逻辑,实测 Fami 全局和区域播报 | | 幸运礼物 owner | `lucky-gift-service` 规则版本和档位均为 0 | 15 个规则版本、255 个档位 | 在 owner 库配置,不使用 activity 旧副本代替 | | 首充奖励 | 开关 0,3 个档位全部 disabled | 开关 1,3 个 active | 确认奖励后启用并走真实充值事实 | | 累充奖励 | 开关 0,8 个档位全部 disabled | 开关 1,8 个 active | 确认周期和奖励后启用 | | 七日签到 | 开关 0,无生效版本,无奖励 | 开关 1,有生效版本和 7 天奖励 | 创建 Fami 版本和 7 天奖励后启用 | | CP 周榜 | 开关 0,无奖励 | 开关 1,3 个奖励 | 确认关系类型和奖励后启用 | | 周星 | 当前 UTC 时间无 active 周期 | Lalu 有 1 个 active 周期 | 创建 Fami 周期、指定礼物和 Top 奖励 | | 自研游戏运行数据 | 机器人 0,档位奖池 0 | dice 机器人 80,dice/rock 奖池 8 | 如 Fami 对用户开放自研游戏,先初始化机器人和奖池 | ### 18.2 运营内容缺口 | 项目 | Fami 当前状态 | Lalu 对照 | | --- | --- | --- | | 首页 Banner | 公网 API `items=0` | 相同请求返回 10 条 | | 弹窗 | 公网 API `items=0` | 1 条 | | 开屏 | 公网 API `items=0` | 1 条 | | 版本控制 | `version=""`、`build_number=0` | Android `1.0.9/109` | | H5 入口 | 只有 1 条 app config,缺 23 个 `h5-links` | 24 条 app config | | 第三方游戏目录 | 34 个 active | 37 个 active;Fami 少 `Rocket`、`TeenPattiPro`、`LavaSlot` | | 成长/成就展示资源 | 6 个头像框、25 个徽章档位和 32 个成就引用资源,但 Fami 无 active 资源 | Lalu 有 active 资源 | 第三方游戏的三个差异需产品确认,不能在没有授权和产品结论时自动复制。 ### 18.3 条件项 - 币安账户映射当前只有 Lalu。 - TRC20 USDT 收款地址当前只有 Lalu。 - Fami 已有 16 个 active 充值商品和对齐的第三方支付方式;上述两项只在产品要求 Fami 开放对应渠道时才是阻断。 ### 18.4 已就绪项 - Fami App 注册状态为 active。 - Firebase 项目已配置。 - 16 个 cron 任务均已启用且 `app_codes` 包含 `lalu/fami/huwaa`。 - Fami 和 Lalu 均有 141 个 enabled 国家,启用国家无缺口。 - Firebase、登录风控、CP 关系配置已建立。 - 红包、房间火箭、邀请奖励、注册金币奖励、房间流水奖励已开启。 - 财富/魅力/游戏成长等级的规则数量已与 Lalu 对齐,但展示资源仍受资源体系缺失阻断。 - room、wallet、user、game、statistics 的共享 MQ/outbox 主开关已开启。 ### 18.5 Fami 建议收敛顺序 1. 重建 Fami 礼物、价格、资源、资源组和商城,修复成长/成就展示引用。 2. 修复 RTC callback 的 App 归属,发布 activity 多 App 播报 claim/建群逻辑。 3. 在 `lucky-gift-service` owner 库配置 Fami 规则和档位,完成独立 MQ consumer 验证。 4. 完成 VIP 价格/权益/资源后启用 VIP1–VIP9。 5. 按产品范围启用首充、累充、七日签到、CP 周榜和周星。 6. 补齐 Banner、弹窗、开屏、版本和 H5 入口。 7. 确认 Fami 游戏清单;如开放自研游戏,初始化机器人和档位奖池。 8. 执行第 17 节的真实设备、业务、MQ、数据与统计验收,确认 P0 为 0 后再标记可正式运营。 ### 18.6 首批修复记录(2026-07-13) 本次只收敛 RTC/IM 业务租户隔离和幸运礼物初始化,不代表第 18.1 节其他 P0 已解除。 | 项目 | 修复结果 | 验证证据 | 状态 | | --- | --- | --- | --- | | RTC callback | 共享腾讯 RTC 应用不再从 URL 固定读取 `app_code=lalu`;gateway 验签后按 `room_id` 调 room-service 解析真实房间租户,再提交对应 Room Cell | 两台 gateway 的 callback URL 均已改为无查询参数地址;`rooms.room_id` 无重复并已增加唯一索引;gateway/room 双节点运行镜像 `20260713-fami-app-scope-1` 且 healthy | `CONFIGURED`;仍需 Fami/Lalu 各一次真实设备上麦、退流回调后升为 `VERIFIED` | | IM 播报 worker | 同一腾讯 IM SDKAppID 下,群 ID、outbox claim、发送、mark 和 reconcile 均按记录 `app_code` 隔离;`broadcast.app_codes` 显式配置 `lalu/fami/huwaa` | 腾讯 IM 云端已存在 `hy_fami_bc_g_v2` 及区域 24–30 的 7 个 `hy_fami_bc_r_v2_*` 群;activity 双节点运行镜像 `20260713-fami-app-scope-1` 且无 reconcile 错误 | `VERIFIED`(建群与运行态);仍需客户端真实收一条区域/全局播报完成产品验收 | | 幸运礼物规则 | 从 Lalu 复制所有规则版本和阶段档位到 Fami,只变更租户键 | Fami `lucky` 为 6 个规则版本/106 个档位;`super_lucky` 为 9 个规则版本/149 个档位,enabled 数量与 Lalu 一致 | `VERIFIED`(配置数据) | | 幸运礼物奖池 | 未复制 Lalu 奖池状态;Fami 的 `lucky`、`super_lucky` 各自独立初始化 | 两个池均为 `balance=100000`、`reserve_floor=21000`、`total_in=0`、`total_out=0`;Fami RTP 窗口、用户状态、抽奖记录和 outbox 均为 0 | `VERIFIED`(初始化数据);仍需真实普通奖/大奖/钱包/outbox 冒烟 | 发布前已执行 `make proto`、`make test` 和 `docker compose config`;发布后 6 个实例均 healthy、restart count 为 0,相关 CLB 后端权重均恢复为 100。