import { z } from 'zod';
import { ToneEnum, TONE_DESCRIBE } from '../../shared/tone';

/**
 * 稳健档 4 段输出 schema(顺序固定:开场白 → 告知应治未治 → 复查建议 → 结束回访语)。
 *
 * ⚠️ describe 会被注入 system,所以这里**只描述段用途 + 格式 + 关键硬约束**,
 *   详细写法(开场顺序 / 句位 / 措辞)以 system 提示词(format.md + 人群句位模板)为单一源,
 *   不在 describe 里复述,避免与模板冲突(历史教训:describe 写反了开场顺序、写死了"下周")。
 */
export const DraftPlanScriptSchema = z.object({
  tone: ToneEnum.describe(TONE_DESCRIBE),

  opening: z
    .string()
    .min(50)
    .max(600)
    .describe('第一部分·开场白。markdown,`• ` 短句分行。内容/顺序按系统提示词的模板,不要大标题/分隔符/表情。'),

  informMissed: z
    .string()
    .min(80)
    .max(900)
    .describe('第二部分·告知应治未治。**只讲本次一个 {应治未治项}**,温和提醒非推销;markdown `• ` 短句分行。'),

  reviewAdvice: z
    .string()
    .min(80)
    .max(900)
    .describe('第三部分·复查建议。引导预约用【时间段1】【时间段2】占位、**不写死具体时间**;markdown `• ` 短句分行。'),

  closing: z
    .string()
    .min(40)
    .max(500)
    .describe('第四部分·结束回访语。含【预约成功】/【预约不成功】两种;时间用【具体预约时间】占位、不承诺、不写死。'),
});

export type DraftPlanScriptOutputZ = z.infer<typeof DraftPlanScriptSchema>;
