This repository has been archived on 2026-09-13. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
BPOS-TMP-REPO/activities/quote-negotiate/src/skills.ts
T
ChaiHaoandClaude Opus 5 ade0fa5a94 A2-A7 全部补齐到验收线;顺手把几处「门拦住却不给路」的坑填了
活动:A2 选型 / A3 寻源 / A4 定价 / A6 议价 / A7 归档五件各补成真活动包 ——
契约宽进(input.required 空,归一在活动内)、台账必填声明(含行级 requiredWhen)、
入场哨兵与 L1/L2 判据一律读基座数、两份件(在办可编辑 + 办结静态快照)、
三案例常备、包内自测。e2e 各三案例 released、行动被拒 0、发口正确、提交闸每单真拦。

基座(共享面,改一处影响所有活动,故每处都带回归):
· 重发判断走在站上场之前 —— 人答完那步常已收掉,readyToWork 先抛「不能再往它上面挂活」,
  于是「重发已答过的卡 = 无事发生」这条唯一活路在最需要时够不着,A1 基线当场熔断;
· 决策卡补幂等兜底(与执行工单同一把尺):头两次无事发生,第三次起才算被拒;
· 输出没成形先就地重问一次,原话进工作日志、不再摆上卡面;
· 工具调用读数 tool_<名>_calls —— 「机检只读基座数」这条纪律第一次覆盖到工具;
· 执行卡 steps/standard 补进出参 schema(从前能到卡面全靠厂商 JSON 模式宽松);
· 件的就地更新改逐节点 morph,保存先把新值镜像进只读那份 —— 不闪、不等回声。

A1(基线,全程守住):措辞三档对齐(必填/建议/选填)、禁止拿历史价当客户目标价、
卡骨架从步骤剧本搬进说明书(压成一拍连做时剧本没摊开,会发出没有指导书的裸卡)。

契约两处**新增可选字段**(非破坏):FieldDeclaration.requiredWhen、工单 finalHtml;
api-report 同批更新。docs/adr 与 docs/archive 的 13 份文件在工作树里不见了,
本次予以恢复而非提交删除。

门禁:typecheck / lint / depcruise / test(1366)全绿。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 12:28:31 +08:00

57 lines
3.0 KiB
TypeScript

/**
* A6 技能 —— 议价的方法经验。载方法,不载权力。
*
* 与剧本的分工:剧本写「这一步做什么、写哪几列」,技能写「为什么这么谈、
* 拿不准时按哪条走」。剧本改了口径,技能里同一句要跟着改(规范 §5.9)。
*/
import { skillIdSchema } from '@contracts';
import type { Skill } from '@contracts';
export const NEGOTIATE_SKILLS: Skill[] = [
{
id: skillIdSchema.parse('negotiate.read-reply'),
label: '读懂客户的那一句回音',
applicability: '客户回话了,要把它落成一个表态时。',
method: [
'客户的话落到系统里只有四种表态,别的都是这四种的说法之一:',
'· ACCEPT —— 明确接受这个价:「按这个价走」「下单吧」「PO 稍后发」。',
'· COUNTER —— 还了一个价,或明确说「贵了多少」「对标某某家便宜多少」。',
' **还价必须落下客户报的那个数**:没有数字的「太贵了」先追问,追不到才按无回复落。',
'· REJECT —— 明确不做了:选了别家、项目取消、规格不匹配。',
'· NOREPLY —— 催到有效期过仍不表态。**客户不回不是结论**:',
' D+3 第一轮催问确认收到探态度,D+7 最后一催,催过了才轮到按超时定案。',
'',
'两条别做的事:',
'· 不要替客户表态。他只回了一部分料的,没回的那几行就是 NOREPLY ——',
' 把「大概是接受了吧」写成 ACCEPT,是在系统里伪造一份客户承诺。',
'· 不要把口头承诺留在脑子里。每轮反馈当天记回备注,',
' 下一轮谈判、事后复盘、情报归档读的都是这一格。',
].join('\n'),
crystallized: [],
knowledgeRefs: ['议价结果 N-01'],
version: '2.0.0',
},
{
id: skillIdSchema.parse('negotiate.concede'),
label: '让价守线',
applicability: '客户还了价,要决定让不让、让多少时。',
method: [
'先弄清争的是什么:价格、交期、MOQ,还是走过场压一轮 ——',
'**对症再谈,不上来就让**。争交期的用交期换,争 MOQ 的用包装换;',
'一上来就降价,后面每一轮就都只剩降价这一招。',
'',
'让步梯度 N-02 是尺,不是台阶(不必逐档走下去):',
'· 三个点以内 —— 意思意思的压价,接了拿单,来回一轮的时间成本比这三个点贵;',
'· 三到十个点 —— 授权内回旋:让一半再报回去,把让出去的换成量或账期;',
'· 超过一成 —— 超出授权,**交回成本定价重批,不私自破线**。',
' 破线不是勇气是事故:底价线以下的单,每补一次货都在亏。',
'',
'让了就要说清为什么让:客户长单、带单品、竞对压价 ——',
'理由随定案一起交给签字的人。没有理由的让价,到复盘那一关同样过不去。',
].join('\n'),
crystallized: [],
knowledgeRefs: ['让步梯度 N-02', '底价门禁 P-02'],
version: '2.0.0',
},
];