import type { ScriptContext } from '../draft-plan-script/shared/input.types';
import { buildRichFactBlock, buildDeepExtensions } from '../draft-plan-script/shared/fact-block';

/**
 * 企微话术的 user prompt。
 *
 * ⭐ **事实块直接复用电话档那一份**(buildRichFactBlock + buildDeepExtensions)——
 *   患者是谁、哪颗牙、医生说了什么、上次什么时候来的…… 这些与"用电话还是企微说"完全无关。
 *   ⛔ 别复制一份改改:安全护栏(不报价/福利不得加码/高龄不主推种植)全在里面,
 *   复制出去之后改了一处另一处会悄悄留在旧版本,而漏了哪条要等客服发出去才发现。
 *
 * ⚠️ 差异全部集中在**任务段**(--- 之后):电话是"拆几段讲",企微是"写成一条能直接发的消息"。
 */
function facts(ctx: ScriptContext): string {
  const ext = buildDeepExtensions(ctx);
  return ext ? `${buildRichFactBlock(ctx)}\n\n${ext}` : buildRichFactBlock(ctx);
}

/**
 * 唯一一步:一次性写出整块正文。
 *
 * ⚠️ 2026-08 砍掉了 plan(要点顺序)与 repair(按 issue 回喂改写)两条分支 ——
 *   企微稿是一整块几百字、没有分段结构,"先列大纲再写"收益极小;而修订那条要多花
 *   一次调用和 30 秒,换来的东西客服自己过一遍就能发现(界面一直写着"请核对后使用")。
 *   安全没有放松:机器硬扫(禁词/承诺/占位残留)仍在 wecom.strategy 里把关。
 */
export function buildWecomWritePrompt(input: { ctx: ScriptContext }): string {
  return `${facts(input.ctx)}

---
# 你的任务
写**一条能直接发给患者微信的消息**,复制粘贴即可发送,不用再删改。

# 写的时候保持
- **层层递进**:从"想起他"到"点出问题"到"说清后果"到"给出路",句与句承上启下,
  别并列罗列或跳跃。
- **后果说清但有分寸**:不处理的后果客观讲明(结合病历 + 牙科常识),让患者理解严重性;
  但**不夸大、不吓唬**(别下"会掉光""很危险"式结论)、**不推销促单报价**。
- ⭐ **像微信不像公文**:适度用表情(全文 2-4 个,句末缓和语气),
  ⛔ 不要每句都带,⛔ 不用夸张促销类表情。
- ⛔ 除自报家门的 \`【回访客服】\` 外,**不许出现任何其他 \`【】\` 占位**;
  也不要自己编具体时间("周三上午")—— 这条消息整段复制直发,
  占位会原样进患者微信,编的时间到时对不上。约时间就写
  "您方便的时候回我一下,我帮您安排"。`;
}
