Commit a96424b5 by luoqi

feat(recall): 宿主回访模式 — 回访 URL 插槽三态 + 关闭机会闭环

宿主动作派发(host-message 重写):
- actionUrls.OPEN_RETURN_VISIT / OPEN_POTENTIAL_TREATMENT 值形态定模式:
  未配置=按钮不渲染 / URL 模板=跳转(推荐) / 哨兵 postMessage=喊宿主父页(需 HOST_ORIGIN)
- 哨兵比较大小写不敏感(裸词不可能是合法 URL,宽容拼写零误伤)
- 管理页:配哨兵缺 HOST_ORIGIN 时黄条提示

宿主回访模式布局(有回访按钮时):
- 通话结果整列隐藏(xl 收 2 列,窄屏去「操作」tab);召回反馈拇指隐藏,宠物引导同停
- 顶栏「关闭」危险按钮 → 关闭机会弹窗(7 原因,PAC UI 标准)

关闭机会闭环(CLOSE_REASON_META 单一真理源,前后端同表):
- 原因→outcome 映射:无意愿/价格=refused(90d)、竞品=external_treatment(永久)、
  无法联系=abandoned(30d 熔断口径)、已治/其他=abandoned(14d 默认档)、
  识别不准=marked_invalid(覆写永久→14d)+ 双写召回反馈 down
- resolveSnoozedUntil 优先级链插入 closeReason 覆写档(熔断 > 覆写 > outcome 自带)
- 复用 execution 通道(channel=other),状态机/触达账本/跨栏同步全继承
- 关闭后自动跳下一位(我的进行中 → 召回池,与 /plans 入口解析器同规则)

列表口径对齐:
- 终态单(completed/abandoned)在 pool/mine 视图原地剔除(与服务端过滤一致)
- 「我的」显式 status=assigned(服务端 view=mine 返全状态是旧列表页设计)

其他:全局细滚动条(Windows 默认过粗);删 spec 中引用已重构掉的
computeLikelihoodBonus 的过时测试块(main 上即已编译失败);新增 7 个
closeReason 抑制覆写测试(19/19 过)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
parent e1697a0d
Pipeline #3399 failed in 0 seconds