成本压力应对情景包
供应商发来一封涨价通知,或者运费突然调整,小老板当下要回答的问题是:这一涨,一个月多花多少?现在这个售价还能剩多少毛利?我能做点什么? 现实里这一步通常靠心算和一句「应该还行吧」过去,等到月底对账才发现毛利已经被吃掉。问题不是没钱赚,而是从来没有把这些明示事实摆在一张表上算过一次。
本技能做这件事:读一份 JSON,输出可以逐条核对的决策准备板——逐项成本增量、月度影响(只在输入齐全时)、当前售价下的毛利变化情景、多个响应情景的可比表(情景月度成本 / 成本增量 / 抵消金额 / 残余敞口)、未知项、证据缺口、人工决策问题与 Markdown 准备板。脚本只读一个本地 JSON,不联网、不写文件、不改价、不下单、不联系供应商、不写任何外部系统。
输入与澄清
字段表、判定顺序、情景口径与安全边界见 @references/guide.md(同目录 references/sample.json 是常规样例,references/sample-blocked.json 是负值、重复编号、拒绝与注入的样例,两者输出分布固定)。
最少确认:as_of(必须带时区偏移)与 items[];scenarios[] 可选,缺省时只输出逐项与月度口径。
必须问清的关键点:
as_of不能省。没有它就无法判断成本是否已经生效,工具会停在INPUT_INCOMPLETE,而不是猜一个当前时间。- 缺月用量就只给单位口径。
monthly_volume缺失记NO_MONTHLY_VOLUME并判PARTIAL;月度影响只汇总有月用量的成本项,缺失值永不按 0 计算。 - 缺售价就没有毛利情景。
current_price缺失记NO_CURRENT_PRICE并判PARTIAL,工具不会替你推算一个售价。 - 币种不换算、不跨币种合计。
monthly_impact.by_currency与情景表都按币种分别列示;缺币种记UNKNOWN_CURRENCY并判INSUFFICIENT_EVIDENCE,该金额不进入任何合计。 - 负数与重复编号是硬矛盾。单位成本为负记
NEGATIVE_COST、售价为负记NEGATIVE_PRICE、月用量为负记NEGATIVE_VOLUME、同一item_id出现多次记DUPLICATE_ITEM_ID,任一项判BLOCKED。 - 生效时间要带偏移。
effective_at缺失记NO_EFFECTIVE_AT、不带时区偏移记INVALID_EFFECTIVE_AT;能解析时只标EFFECTIVE_IN_FUTURE或EFFECTIVE_ALREADY,不推断生效日期。 - 毛利率基线只做核对。填了
gross_margin_before时,工具会与「售价 − 单位成本」推出的比值对比;不一致只记MARGIN_BASELINE_MISMATCH并把两个值都列出,始终以售价与成本的明示事实为准。 - 情景类型固定。
absorb/price_adjust/substitute_supplier/reduce_volume/discontinue;写了表外的类型记UNKNOWN_SCENARIO_TYPE,工具不发明情景。 - 情景不是建议。可比表只给算术结果(情景月度成本、成本增量、抵消金额、残余敞口),不排序、不推荐、不说哪个更优;
discontinue与reduce_volume会明确标注收入影响未建模。 - 只给文件名,不要给路径或链接。
evidence_refs只接受单一文件名;含路径或链接的引用会被拒绝,输出里只保留安全化后的文件名,原引用不会回显。 - 不要填登录凭据。输入里出现密码、令牌一类字段或真实凭据形态的字符串会被整体拒绝,且不回显该内容。
执行
- 按 @references/guide.md 的字段表整理输入 JSON。第一次使用建议先用 @references/sample.json 跑一遍,确认输出结构后再换成自己的成本清单。
- 用 Python 3.9+ 执行本包脚本(无第三方依赖、不联网):
python3 "<skill-directory>/scripts/run.py" "<input.json>",Windows 可用py -3。 - 先看顶层
status:REJECTED表示输入疑似含凭据(已拒绝且未回显);INPUT_INCOMPLETE表示缺as_of或没有成本项;BLOCKED表示存在硬矛盾成本项;GAPS_FOUND表示有PARTIAL/ 证据不足的成本项,或情景未满足约束;READY表示全部齐全且情景都在约束内。 - 看每个成本项的
state:COMPUTED/PARTIAL/INSUFFICIENT_EVIDENCE/BLOCKED。 - 用
cost_changes看逐项单位增量与增量百分比;用monthly_impact看按币种的月度影响,并注意items_without_volume与complete两个字段。 - 用
margin_scenarios看当前售价下的毛利变化(单位毛利、毛利率与变化),注意它不含税、不含销量变化。 - 用
scenario_table横向比较各响应情景的残余敞口;同一币种内可比,不同币种不可直接比。 - 用
scenarios[].violations找出违反约束的情景(如超出允许调价幅度);用skipped_items找出因输入缺失被跳过的成本项。 - 按
unknowns_summary与clarification_questions的Q-01顺序补齐事实,不要自行填数。 - 用
human_confirm_items明确哪些决定必须由人工做(改不改价、换不换供应商、要不要减量),本工具只给数学情景。
运行约束
- 只读:只读取用户提供的那一个 JSON;不打开链接、不调用外部服务、不写文件、不访问任何 ERP、财务、采购或供应商系统。
- 不动作:不改价、不下单、不采购、不联系供应商、不签合同、不删除任何原始材料。
- 不给建议:不排序、不推荐、不写「应该调价」一类结论;情景之间的取舍由人工判断。
- 只推导不发明:结论只由输入中的明示事实推导;不推算售价、不推算销量、不推算生效日期、不补齐缺失成本。
- 只做数学:不出会计、税务、法律或合规结论;合同条款、账期与税由人工或专业人士确认。
- 月度门禁:月度影响只汇总有月用量的成本项,缺失值永不按 0 计算;
monthly_impact.complete会如实为false。 - 币种门禁:金额按币种分别列示,不换算、不跨币种合计;缺币种的成本项不进入任何合计。
- 确定性:成本项按编号、情景按编号、可比表按情景与币种、问题按编号、状态汇总按
ITEM_STATES全部显式固定,同一输入输出逐字节一致。 - 文件名门禁:
evidence_refs只接受单一文件名;含路径、链接或盘符的引用被拒绝,且只输出安全化文件名,原引用在任何字段都不出现。 - 提示注入逐字段检测、位置精确、低误报:覆盖备注等自由文本,命中时只加标记并在
injection_flagged中给出精确路径(如items[0]/notes);检测要求「动作词 + 目标词」同句共现。 - 不可信文本先转义再入简报,命中即隐藏:
markdown_summary中所有自由文本走同一转义处理(去控制字符、折叠空白、对 Markdown 元字符加反斜杠);命中注入的值改用固定占位「已隐藏疑似提示注入文本」。 - 隐私门禁:字段名命中
password、token、api_key一类凭据名,或字符串值具备真实凭据形态,直接拒绝处理且不回显该内容。 - 免责:输出是成本压力的人工决策准备材料,只是对输入事实做的算术情景,不是定价建议、不是会计、税务或法律结论,也不代表任何选项更优。