index.ts
326 Bytes
-
feat(embed): 打开潜在治疗的 postMessage 补三个字段 + 出一份宿主侧交付文档 · 9ba57bc9
载荷从 `{patientId}` 扩到: pendingTreatmentDesc 待治疗描述 —— 取页面顶部那句 AI 召回简报;还没生成好则退回 结构化召回原因文本;都没有 → 空串(字段一定在,别让宿主判 undefined) potentialTreatments 关联治疗项目 —— 中文标签数组,与召回池卡片同一套措辞(8 类) caseStage 病例阶段 —— 恒「已咨询」⭐ 三个字段一律取**客服此刻在页上看到的东西**,不另算一套:宿主建出来的单要和客服刚读的 那句话对得上,否则对账时说不清是谁改的。所以简报由 RecallBriefLine 拿到后回报给父层 (它本来就负责 get-or-generate),不再单独查一次 —— 否则会出现"页面显示 A、发过去 B"。⭐ 契约收在 @pac/types/host-action-message.ts 而不是组件里:它是**对外接口**,宿主照它写监听。 放在 types 意味着改字段过类型检查 + 有文档同源,而不是某个组件里悄悄多塞一个 key。 兼容纪律写进注释:只增字段、不改已有语义、不删字段。⚠ ️ 这三个字段**刻意不进 URL 模式**:长文本 + 数组塞 query string 会撞长度上限, 还会把病情描述写进浏览器历史和宿主 access log。要 URL 模式也带得宿主改成 POST。 交付文档 docs/integration/postmessage-actions.mdx(可直接给对接方): 信封 / 字段表 / 完整示例 JSON / 8 类治疗项目的中文↔ code 对照 / 宿主监听示例 (含必须校验 e.origin)/ 注意事项(URL 模式不带、单向无回调、sandbox 别漏 allow-popups)。 加防漂移测试:信封字面、caseStage 恒值、8 类标签与 code 必须在交付文档里列全 —— 这份文档是发给外部照着写的,漂了要等联调才暴露。 701 tests / 46 suites + web typecheck 通过。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>luoqi committed