Files
NianToB/shared/business-guidance.ts
2026-05-13 23:52:11 +08:00

41 lines
2.1 KiB
TypeScript

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);
}