本计划的每一个数字都来自生产库直查(2026-07-25/26/27 快照)。 总策略三句话:CRM 先上、不碰旧系统;只迁 delivery 存量, 谈判上游继续跑、向新系统投递 pick;每一批都可回退, 回退开关(suppress_received_channel_agent_runs)今天已存在。
| 事实 | 数据 | 对迁移的含义 |
|---|---|---|
| 身份层已存在且填满 | contacts 247 万(person/agency)· creator_profiles 445 万(带粉丝/中位播放)· 经纪关系 15 万条 · 合并机制在用(complete 6.9 万) | 不建新身份体系,只接线 |
| coordinator 与身份层零外键 | 旧表用 kol_id / creator_handle 文本;39,064 个 kol_id 中 39,053 个只有 1 条记录 | 回填是核心工程(见 §04) |
| 身份可解析性 | 邮箱身份覆盖 34,348 条,其余 17,054 条全部有 handle,孤儿 0 | 存量 100% 有键可回填 |
| handle+platform 撞 creator_profiles | 唯一命中 contact 39,409(76.6%) · 命中 profile 但未挂人 11,184 · 双命中 373 · 未命中 489 | 76.6% 全自动;1.1 万条脚本挂人;仅 862 条需人工 |
| deliverable 状态无信息量 | 实测单合作 15 条全部 in_progress,日期 0、金额 0;实付有记录的全库仅 16 条 | 阶段要靠映射+运营快速补录,不指望旧数据 |
| 会话重复投影 | 实测单达人 20 条记录 × 各挂 30 条同样会话 = 608 行投影 | 新模型 thread 只存一份 + 绑定,迁移时去重 |
| Campaign 容器碎裂 | Java 侧 455 条(88% 重开)→ 87 组 → 112 product | 归类在 product 层做:112 行 → 60–80 个 Campaign,运营半天 |
| 切换开关已存在 | suppress_received_channel_agent_runs,逐 engagement 粒度 | 按批暂停→迁移→比对→切回,不停机 |
33,169 条谈判中的合作不迁。谈判上游(现系统 + 外呼)继续运行, 议价成功的由运营 pick 进新系统。旧系统随谈判存量自然收敛,不需要「大迁移日」。
P0 止血(可立即,与重构无依赖) P1 身份接线 + CRM 上线(L0) P2 Campaign 归类 + 建档管线 + delivery 存量迁入 P3 Studio 手动看板(泳道/引用/快捷操作) P4 L1 只读理解 + 付款采集确认 P5 Campaign 变更发布 → L2 起草待审 → L3 全自动
| 项 | 内容 | 验收 |
|---|---|---|
| 催办停摆 bug | 旧提醒唯一索引加 deliverable_id;isMilestoneActive() 补交付物谓词 | 多交付物合作各自催办互不掐断 |
| 沙箱隔离 | 沙箱停用生产 referenceId 与出站;为 P2 起的 env='sim' 打底 | 拔掉沙箱代码,生产零变化 |
| 旧系统消息清洗 | 入库剥追踪链接/UI 状态 + 群发/自动回复分类(纯规则) | legacy 谈判侧 prompt 尺寸显著下降;新 CRM 直接受益 |
| 级 | 键 | 覆盖(实测) | 处置 |
|---|---|---|---|
| 1 | scouting 来源 / platform_user_id | 确定性 | 自动 |
| 2 | 唯一 handle+platform → 唯一 contact | 39,409(76.6%) | 自动 |
| 3 | 命中 profile 但 creator_id 为空 | 11,184 | 脚本先挂 profile→contact(机械),再回填 |
| 4 | 双命中 373 + 未命中 489 | 862 | 人工队列,绝不猜;邮箱/手机只出候选 |
铁律:允许「身份未解析」长期存在;错误合并会把一个达人的记录暴露给另一个,比留白严重得多。 写入前先解 merged_into;contacts 合并事务同步收敛新表(先于任何新表写入上线)。
| 旧(deliverable 级) | 新阶段 | 备注 |
|---|---|---|
| S1 选品 | product_pick | B3 合同签署 → collaboration.agreed_at; A/B/F/G/N 系(engagement 级)不迁, 谈判语义留在旧系统 |
| L1 寄样 / L2 签收 | sampling / logistics | |
| C1 脚本 / C2 脚本改 | script / script_rev | |
| D1 样片 / D2 样片改 | cut / cut_rev | |
| E1 发布 / P1 打款 | publish / payment |
映射只定「当前阶段」初值;历史轮次(哪一版脚本改了几次)旧数据没有,不伪造 —— 从 P3 起真实累积。 distribute 初值从旧 crossPosts 带入。
P1 依赖 P0 的消息清洗;P2 依赖 P1 的身份接线与运营归类;P3 依赖 P2 的建档; P4 依赖 P3 的人工基线;P5 依赖 P4 的采纳率数据。P0 和 P1 今天就能开工。
数据快照:2026-07-25/26/27 生产库直查;方法与明细存 Research/coordinator-vnext/evidence/。
设计定稿:《设计文档》 · 周会版:presentation