库存成本核算
开始识别附件前,读取 references/execution-evidence.md,按证据、确认、核算、交接顺序执行;该规范不替代以下业务门禁。
本 Skill 可单独启用,只处理本次上传的业务材料,不安装、调用或要求先运行其他 Skill。文中的业务角色表示可选标准结果或核算角色;原始事实、确认口径与可追溯证据齐全时,由本 Skill 完成识别、确定性计算及验证。独立使用不免除材料与金额门禁。
任务目标
依据本次上传的库存材料,形成可追溯的成本层、COGS、期末库存和利润核算标准交接。正式计算前确认成本法、头程分摊基础、币种精度、期初库存证据;存在退款或退货时确认库存与 COGS 处理。
输入角色与执行顺序
- 只读取当前会话上传的附件,展示 basename、Sheet、表头、期间、实体、仓库和币种。
- 识别并区分期初库存、采购入库、头程物流、销售出库、退款/退货、方案政策和参考结果;参考结果不得进入成本层。
- 按表头语义映射字段并展示采用结果;数量、单价、总额、日期、SKU 或角色不唯一时进入异常池,不按列号猜测。
- 先核实期初、采购、头程、销售出库、计价政策的实际事实与范围;零发生必须有来源证明,不能把缺附件当零。有退款/退货时增加独立退款事实与退货处置证据;无退款时按引用中的完整范围证明零调整。建议 basename 只作线索,不要求应收 Skill 结果。
- 要求用户确认成本法、头程分摊基础、币种精度、最小记账单位、退款处置,以及方案三/四的加价率、适用范围和会计口径;存在跨币种成本时,还必须确认采用交易日、入库日、月均、期末、固定期间或其他企业汇率口径。
- 先建立一份已确认的期初层、入库层、头程分摊、销售序列和退货序列,再从同源快照建立各方案的独立分支。
- 每个方案独立计算成本层消耗、退款/退货调整、COGS、期末层和控制结果,不复用其他方案金额。
- 输出前按政策字段
selected_for_profit检查每个period + entity + currency范围恰好一个true,且该方案audit_status=PASS;不得按金额高低或方案顺序自行选择。
字段、层顺序和方案细节见 references/input_schema.md。
折算汇率必须为有限正数且来源、方向、有效期唯一;零、负数或不可解析汇率属于无效证据,停止受影响折算,不阻断可独立完成的原币检查。
同一会话中用户已明确确认的口径,在展示实际映射并核实一致后直接沿用,不重复索要同一确认;仅对新歧义、冲突或范围变化补问。多个附件同名时分配会话内 attachment_id,来源保留 basename、Sheet 和行号;无法唯一匹配时停止,不以最新文件或附件顺序猜选。
执行约束
- 开始时记录附件读取、确定性计算、文件产物返回、代码执行和最终产物可读本地路径五项能力,不得默认它们存在。
- 成本层消耗、头程分摊、FIFO/加权平均、退款调整和守恒必须使用平台原生表格/公式/分析能力或运行期轻量代码确定性完成,不得由 Agent 心算多行金额。不创建、安装或扩展大型 Python/JavaScript 核算工程,不要求用户安装依赖。轻量代码只接收本次附件和显式参数,不扫描目录、不依赖固定路径、不写入 Skill/项目目录、不补 0 或硬编码特定结果;它与报告测试入口分属两层。
- 平台无法读取或无法确定性计算时记录原因,受影响控制及方案标记
NOT_RUN;不得估算或补零。 - 无确定性计算能力时仍完成附件角色、字段映射、政策确认和材料缺口;受影响金额和交接控制记录
DETERMINISTIC_COMPUTE_UNAVAILABLE。只能读缓存值时,仅将FORMULA_VALUE_STALE检测标记NOT_RUN,如实披露未核验缓存;只能读公式文本且平台不能重算时,记录FORMULA_VALUE_UNAVAILABLE,所有依赖该金额的控制NOT_RUN。能够重算时按当前输入确定性重算,不把公式文本当金额。 - 销售附件中的预计算成本、头程、毛利或参考结果列只作参考,不得作为 COGS 输入。
- XLSX 目标单元格含公式时,同时读取公式表达式、可用的已计算值和当前引用输入;有计算值时按计算值核算并独立复算引用关系,不得把
=...公式文本当作金额。没有可用计算值且平台不能重算时记录FORMULA_VALUE_UNAVAILABLE并将受影响控制标记NOT_RUN;计算值与当前引用输入重算不一致时记录FORMULA_VALUE_STALE并标记FAIL。两种情况都保留附件 basename、Sheet 和单元格/源行定位,不得补 0 或把公式解析失败直接误报为业务差异。
期初库存门禁
- 每个核算范围必须有期初数量及期初成本层证据;期初层至少包含日期或经确认的层顺序、数量、采购成本、头程及适用加价。
- 期初为零必须由上传材料、明确政策或用户确认形成可追溯证据,并记录
beginning_inventory_basis;不得因缺文件而默认零。 - 零期初证据必须逐
period + entity + warehouse + sku + currency给出数值型期初数量、采购成本、头程和加价均为 0,同时记录期初日期、层顺序、依据及确认状态;空白、缺行和无法匹配的 SKU 不是零。 - 任何声称期初为零的附件都必须按实际表头和内容识别,并逐一覆盖本次采购、销售、退款和政策共同涉及的
period + entity + warehouse + sku + currency;附件中的零值依据是来源证据,不是 Agent 补零。文件名、期间或历史范围均不得替代该动态覆盖检查。 - 缺期初证据时,加权平均、FIFO、COGS、期末库存和利润核算交接均标记
NOT_RUN。
成本法与四方案
- 加权平均:期初层与本期入库共同进入分子、分母;先确认采用期间加权还是移动加权;本 Skill 不预设默认方法,不得把简单平均当作加权平均。
- FIFO:采购、头程、加价均须保留层成本;不得把期初和本期头程重新按整个 SKU 加权。SKU 汇总头程必须先按已确认驱动落到本期实际入库层,缺层归属依据则该组件及正式 FIFO 交接
NOT_RUN。先按期初层既有顺序,再按本期实际入库日期消耗;同日才以来源行号稳定排序。顺序证据缺失时 FIFONOT_RUN。 - 方案一:加权平均,无集采加价。
- 方案二:FIFO,无集采加价。
- 方案三:加权平均,使用已确认加价政策。
- 方案四:FIFO,使用已确认加价政策。
- 方案三/四把加价落到适用层;销售消耗进入 COGS,未消耗部分留在期末库存,并独立满足加价守恒。
- 方案政策至少明确期间、实体、币种、币种精度、最小记账单位、数量/单价精度、退款口径、舍入方式、
selected_for_profit和确认状态。缺失时受影响控制NOT_RUN。 - 每个
period + entity + currency范围只采用本次上传政策中唯一selected_for_profit=true的方案;其他方案即使能够计算也只作比较,不得替换交接方案。选中方案可来自本次政策附件或完整的会话政策确认,展示依据、适用范围和确认状态后使用;Skill 不内置任何预设方案、主体或期间作为默认选择。 - 多币种缺汇率或汇率口径未确认时相关折算成本
NOT_RUN,不得默认汇率为 1,也不得替用户选择交易日、入库日、月均或期末口径。同币种恒等换算仍应记录本位币确认依据。
头程与容差
头程池只包含已确认可归属于该库存的成本;可抵扣税、已退还费项、期间费用或异常损耗不因名称自动成本化。先确认资本化范围和来源,不明项目单列待核实,不把缺口估入成本。
- 明确区分单位头程和行头程总额;若两者同时存在,验证
单位头程 × 数量 = 行头程总额,不得把总额再次乘数量。 - 整票头程只计算一次,并按用户确认的数量、货值、重量、体积或其他基础分摊。先在附件实际提供的分摊驱动粒度内计算并舍入,尾差确定性落到该驱动范围排序后的最后一条有效行;驱动只到 SKU 汇总时,不得先拆到采购明细行后再汇总,以免改变 SKU 成本归属。
- 驱动只到 SKU 汇总且采用期间加权时,头程作为该 SKU 的独立成本池按可用数量计算;先锁定 SKU 级头程 COGS 和期末头程,再把已锁定的 COGS 分配到同 SKU 销售明细,明细尾差落到稳定排序后的最后一条销售行。不得对每条销售行直接用未舍入单位成本各自舍入后再汇总。
- 金额守恒容差采用附件/政策或用户确认的精度;若无特殊政策且币种最小记账单位可确定,采用该最小单位。币种精度不能确定时相关控制
NOT_RUN,不得固定写死为 CNY 0.01。
退款、退货与 COGS 冲回
- 对退款/退货逐笔或按可追溯汇总键标记
return_disposition:RETURN_TO_STOCK、NO_PHYSICAL_RETURN或PENDING。 - 有退款时先验证两类角色分别存在:独立退款事实与退货处置。退货处置行内的退款金额、汇总键或“外部已确认”文字不构成另一份独立事实;必须读取实际上传的退款事实记录。同文件可以有不同原始记录,但不能把同一处置行同时登记为两种角色。缺事实来源时 INV-07=NOT_RUN,受影响成本与正式交接均停止,不能凭金额相等通过。
- 汇总退款优先按
period + entity + platform + store + sku + currency唯一匹配销售与独立退款证据;键缺失、重复或金额不一致时进入异常池,受影响销售成本、期末库存及交接 NOT_RUN;已执行的金额核对有确定性差异时保留 FAIL。 RETURN_TO_STOCK必须有退货日期、数量、状态和可恢复成本层;按原销售层或经确认等价依据冲回 COGS 并恢复库存,禁止按当前售价或任意平均价入库。NO_PHYSICAL_RETURN必须有退款但不退货的业务证据、实物退回数量 0、refund_cogs_adjustment=0、return_treatment_basis和确认状态;不恢复库存,也不减少原销售出库数量。PENDING、数量/层无法对应或处置证据缺失时,受影响 COGS、期末库存及利润核算交接为NOT_RUN。refund_cogs_adjustment使用有符号金额:可售退货冲回 COGS 记负数,不发生实物退回且证据充分时记 0;按purchase_cogs + first_mile_cogs + markup_cogs + refund_cogs_adjustment = cogs_total复核,并输出处理依据与状态。
利润核算标准交接
必须导出 inventory_profit_cogs.csv:
- 每个
period + entity + currency范围先独立汇总,只输出该范围唯一selected_for_profit=true且状态为PASS的方案。 - 本次完整交接范围若仍有期初、负库存、退款或来源异常,不得剔除异常商品后把剩余金额标为该完整范围 PASS;保留可计算明细,但受影响 TOTAL 不正式交接。
- 每个交接范围只接受本次政策中唯一选中且通过的方案;唯一选中方案未通过时,不得自动改用其他方案,交接标记
NOT_RUN或FAIL并说明原因。不得从样例材料、方案顺序、金额高低或历史运行结果推断选中方案。 record_type=TOTAL的handoff_key固定由规范化后的period|entity|currency组成,不拼接记录类型或维度值;同一文件中必须唯一,重复、缺失或多个选中方案均阻断交接。- TOTAL 至少包含
record_type、handoff_key、period、entity、currency、scheme、selected_for_profit、purchase_cogs、first_mile_cogs、markup_cogs、refund_cogs_adjustment、cogs_total、cogs_includes_first_mile、refund_inventory_status、return_treatment_basis、audit_status、result_dataset、result_row、source_bridge_dataset和lineage_status。 refund_inventory_status是退款库存影响控制的机器状态,只允许PASS/FAIL/NOT_RUN/REVIEW,不得填写NO_PHYSICAL_RETURN、RETURN_TO_STOCK等业务处置枚举。所有退款键已唯一匹配、处置证据完整、库存恢复与 COGS 调整守恒时才可为PASS;业务处置及其依据写入return_treatment_basis和退款明细。- 固定
result_dataset=inventory_profit_cogs.csv;result_row是不含表头、从 1 开始的稳定数据行号。原始附件定位只放在明细数据中的source_file/source_sheet/source_row,不得把来源 Sheet 冒充结果数据集。 - 固定
source_bridge_dataset=inventory_source_lineage_bridge.csv。金额来源桥接同时传递本次真实源币、币种字段定位、报告币及已确认汇率证据,按 execution-evidence.md 记录,不能把结果币种当源币。桥接行使用唯一bridge_line_key,包含handoff_key、component_type、component_amount、source_file/source_sheet/source_row/source_layer和lineage_status;按交接键及成本组件反向汇总必须等于 TOTAL 对应金额。 - 本次要求分项核算且已通过的销售成本明细具备对应维度时,应生成
record_type=DIMENSION行,不把应生成的输出当成缺少上传资料;额外列出dimension_grain/dimension_key及实际粒度字段,按组件分别汇总回 TOTAL,不能混合方案或猜分摊。它沿用所属 TOTAL 的handoff_key,另以必填dimension_grain与dimension_key定位,且后者在同一交接键及粒度内唯一。不得与 TOTAL 混加;利润核算仅在收入、库存、费用核算的粒度、完整键集合和键唯一性完全一致时使用。
来源证据覆盖
每条金额组件的源币定位必须回读本次真实表头和源行,验证字段存在且值等于声明源币;不得给所有行套同一默认“币种”字段。分摊驱动等 Sheet 若不含币种,按本次关联键定位真正的整票/金额来源,使用独立的 source_currency_file/source_currency_sheet/source_currency_row/source_currency_field 指向它。字段缺失或值不符是来源门禁失败,不能只写 IDENTITY_CONFIRMED 和 PASS。
纯 SOURCE_EVIDENCE 行只证明数量、政策或处置,不是折算金额;没有币种字段时币种/汇率定位留空并注明不适用,不虚构币种列。实际四项金额组件仍各自需要完整币种和汇率证据。evidence_role 写该来源实际角色,不统一写 COST_COMPONENT;最终导出后按角色及币种定位回读验证。
金额桥接除四项金额组件外,还需覆盖实际期初、入库、头程、销售出库、退货处置和选定政策,才能让利润核算回读重建。使用 evidence_role 区分 BEGINNING_INVENTORY/PURCHASE_RECEIPT/FIRST_MILE_DRIVER/SALES_ISSUE/RETURN_POLICY/POLICY,每行定位真实 source_file/source_sheet/source_row/source_field,记录来源值和计算依据。采购成本和头程 COGS 须关联可用数量、出库数量与对应来源层;一项结果关联多个来源时可用证据行或关联键,不用结果金额冒充原值。
MARKUP_COGS 与 REFUND_COGS_ADJUSTMENT 即使为零,也要有引用真实政策和退货行(无退款期间引用完整范围证明)的显式零组件;期初为零须引用实际期初附件。单纯辅助证据行用 component_type=SOURCE_EVIDENCE、component_amount=0,只供定位,不加入四项成本,不重复累计底层金额。缺来源不造零行。最终导出按证据角色核对覆盖,再按四个金额组件独立汇总回 TOTAL。
报告交付
生成报告时必须先读 references/report-contract.md,按其 HTML/CSV、安全、控制记录及验收规则交付。该规范随本 Skill 自带,不依赖其他 Skill。
- 当前会话唯一附件:
inventory_cost_report.html;复用assets/report-shell.html,不手写另一套页面或导出器。 - 页内完整 CSV:
inventory_attachment_mapping.csv,inventory_inbound_first_mile.csv,inventory_cogs_detail.csv,inventory_ending_inventory.csv,inventory_return_cogs_adjustment.csv,inventory_source_lineage_bridge.csv,inventory_profit_cogs.csv,inventory_exception_pool.csv,inventory_validation_results.csv。 - 业务状态与技术验收分开;缺材料保留 FAIL/NOT_RUN/REVIEW,不因页面生成成功而改判。能力不足时采用规范中的沙箱兼容输出。
必做验证
- INV-01 行级覆盖:原始行 = 已计算行 + 明确排除行 + 异常行。
- INV-02 数量守恒:期初数量 + 入库数量 + 合格退货入库 = 销售出库数量 + 其他已证实出库 + 期末数量。
- INV-03 成本守恒:期初成本 + 入库采购成本 + 头程 + 适用加价 = 调整后 COGS + 期末库存成本;退款冲回必须在两端一致反映。
- INV-04 采购组件的加权单价与同一范围全部可用采购层(含非零期初层)的单价最小/最大值比较;不得拿含头程或加价的单位总成本与裸采购价比较。再与同范围简单平均交叉验证;阈值未确认时只报告数值,相应阈值控制
NOT_RUN。 - INV-05 时点负库存:任一出库时点超过此前可用库存即
FAIL,不得用月末入库掩盖。 - INV-06 头程分摊:整票总额、行总额和单位量纲均守恒。
- INV-07 退款门禁:每个退款汇总键处置有证据;
NO_PHYSICAL_RETURN的实物退回数量和 COGS 调整均为 0,RETURN_TO_STOCK的恢复层可追溯,且 COGS 调整与库存恢复守恒。先核实独立退款事实记录确已上传且不等于处置行;仅有处置表或引用外部结果的文字时覆盖及结果均 NOT_RUN,不得发布受影响正式成本。 - INV-08 方案门禁:每个交接范围恰好一个选中方案且其所有适用必做控制为
PASS。 - INV-09 交接门禁:TOTAL 唯一、金额与选中方案一致、
result_dataset/result_row可定位,且来源桥接按组件反向汇总守恒;存在 DIMENSION 时,回读最终导出列、粒度键、唯一性及各组件回总额,缺列不得 PASS。
任一适用控制为 FAIL 时该方案不得正式交接;缺材料或口径时标记 NOT_RUN。一个方案失败不覆盖其他方案状态,但每个利润核算交接范围仍只能选择一个通过方案。
分项不能由未匹配空集合求和为0。生成 DIMENSION 前先核对实际销售明细的方案标识、平台别名及店铺键,再按每个实际粒度逐组件求和回唯一 TOTAL;金额不一致为 FAIL,修正本次计算/序列化过程后重验,不能硬写 PASS。