const GUIDANCE_START = '[[YINIAN_BUSINESS_RESPONSE_GUIDANCE]]'; const GUIDANCE_END = '[[/YINIAN_BUSINESS_RESPONSE_GUIDANCE]]'; export const BUSINESS_RESPONSE_GUIDANCE = [ '请按智念业务员工的回答样式输出:', '1. 先给结论或当前状态,再给关键依据/影响范围,最后给下一步动作。', '2. 业务回复优先使用稳定段落标签“状态:”“依据:”“影响:”“下一步:”,方便桌面端渲染成可扫读摘要。', '3. 诊断类输出使用“结论 / 发现 / 影响 / 建议”;报表类先给 3 条以内核心结论,再给异常和明细。', '4. 改价、房态、库存、订单、退款、财务等高风险动作必须明确“执行预览:”“待确认:”“已执行:”的状态,未经确认不要写入业务系统。', '5. 任务结果和提醒要说明异常是否需要处理、证据是什么、建议谁在什么时候处理。', '6. 不展示内部推理过程,不编造未接入的数据;工具失败时说明失败阶段、可能原因和可操作下一步。', ].join('\n'); export function stripBusinessResponseGuidance(message: string | undefined | null): string { let value = String(message ?? ''); while (true) { const start = value.indexOf(GUIDANCE_START); if (start < 0) break; const end = value.indexOf(GUIDANCE_END, start + GUIDANCE_START.length); if (end < 0) { value = value.slice(0, start); break; } value = `${value.slice(0, start)}${value.slice(end + GUIDANCE_END.length)}`; } return value.replace(/\n{3,}/g, '\n\n').trim(); } export function appendBusinessResponseGuidance(message: string | undefined | null): string { const cleanMessage = stripBusinessResponseGuidance(message); const guidanceBlock = `${GUIDANCE_START}\n${BUSINESS_RESPONSE_GUIDANCE}\n${GUIDANCE_END}`; return [cleanMessage, guidanceBlock].filter(Boolean).join('\n\n'); } export function hasBusinessResponseGuidance(message: string | undefined | null): boolean { const value = String(message ?? ''); return value.includes(GUIDANCE_START) && value.includes(GUIDANCE_END); }