/** * 统一报价 A7 · 情报归档 —— 活动包代码入口(ADR-004)。 * 「不成交也留资产」:把归档结果摆给人看,确认无空档再提交放行。 */ import { defineActivity } from '@sdk'; import type { ActivityBase, ActivityOutcome } from '@sdk'; export default defineActivity({ name: 'quote-archive', paradigm: 'flow', async run(base: ActivityBase): Promise { const history = await base.ledger.read('shared.history_price'); const stats = await base.ledger.read('shared.landing_stats'); await base.interaction.pushView([ { t: 'kv', title: '归档闭环', items: [ { k: '情报回写', v: `${history.length} 条` }, { k: '落地率', v: stats.length > 0 ? String(stats[0]?.['landing_rate'] ?? '—') : '—' }, { k: '客户', v: String(base.contract.data['customerCode'] ?? '') }, ], }, ]); // 不得空归档 —— 每一单不成交的报价也是情报资产 if (history.length === 0) { await base.interaction.say('情报尚未回写,继续登记结果。', 'conclusion'); return { kind: 'await', reason: '等待结果登记步完成' }; } await base.interaction.say('拒绝原因与竞对价位已回写,画像与落地率已落账。', 'criterion'); return { kind: 'submit', deliverable: 'history-archive', rationale: '情报、画像、落地率三样齐备' }; }, });