资金流水核查
开始识别附件前,读取 references/execution-evidence.md,按证据、确认、核算、报告顺序执行;该规范不替代以下业务门禁。
本 Skill 可单独启用,只处理本次上传的业务材料,不安装、调用或要求先运行其他 Skill。文中的业务角色表示可选标准结果或核算角色;原始事实、确认口径与可追溯证据齐全时,由本 Skill 完成识别、确定性计算及验证。独立使用不免除材料与金额门禁。
核心边界
只处理本次对话上传的附件,不扫描目录、历史会话或固定路径。按字段名和数据语义取数,不按列号、文件名或样例位置取数。
- 流水是核心输入;汇率仅用于跨币种折算,不能改变账户原币核对。
- 预算只用于 V2;缺预算不阻断其他可执行验证。
- 借贷列、有符号金额和 Sheet 名只形成方向候选,不能单独证明流入/流出。
- 未确认方向、币种、账户、期间或汇率方向时,停止受影响范围,不猜测、不补零、不把未知汇率设为 1。
- 每个数字追溯到
附件 basename + Sheet + 源行号,不记录绝对路径。 - 不要求用户安装 Python、Node.js、pandas、openpyxl 或其他依赖;附件不可读时记录
FILE_READ_FAILED。 - XLSX 目标单元格含公式时,同时读取公式表达式、可用的已计算值和当前引用输入;有计算值时按计算值核算并独立复算引用关系,不得把
=...公式文本当作金额。没有可用计算值且平台不能重算时记录FORMULA_VALUE_UNAVAILABLE并将受影响控制标记NOT_RUN;计算值与当前引用输入重算不一致时记录FORMULA_VALUE_STALE并标记FAIL。两种情况都保留附件 basename、Sheet 和单元格/源行定位,不得补 0 或把公式解析失败直接误报为业务差异。
按需加载参考
不要默认加载全部参考文件:
- 识别流水模式、确认方向、标准化字段或处理汇率时,读取 references/银行流水格式说明.md。
- 执行某项 V0–V5、预算比较或总体结论时,读取 references/验证体系说明.md 中对应章节。
- 仅在实际表头需要别名辅助时,读取 references/column_aliases.json;别名命中不是业务语义确认。
标准执行流程
1. 展示附件角色与口径
遍历全部附件的全部 Sheet,检查表头、样例行、账户、主体、期间和币种。先展示并请用户确认:
- 附件 basename、Sheet、角色、账户、账户属性、主体、期间、原币;
- 日期、真实时间、账户、方向、金额、余额、摘要、对方户名和类别的实际字段映射;
- 流水字段模式及方向候选、候选证据与冲突;
- 本位币、汇率方向、生效期间,以及采用交易日、月均、期末、固定期间或其他企业汇率口径;
- 预算的主体、期间、币种和类别;
- V1/V3 容差及 V2/V4/V5 所需阈值。
角色或口径不唯一时列出候选并询问,不自动选择第一项。
附件中的“筛查参数”Sheet 只提供候选值。凡状态为“待确认”的参数,正式运行时必须逐项展示其值、单位和适用范围并请用户确认;不得把附件内候选值静默当作已确认口径。用户在当前请求或本会话已明确确认按该 Sheet 的值、单位、范围及本位币执行,且展示后未发现冲突时,记录本次确认并继续;附件仍写“待确认”不撤销用户确认,不重复询问。未获用户确认时,相应 V1–V5 规则为 NOT_RUN,但可披露候选计算所需材料是否齐全。
2. 建立来源行和 V0 主分类
表头下每个非空来源行建立唯一 source_row_id = 附件basename + Sheet + 源行号。小计、合计、说明和重复表头也计为来源行,只有完全空白行不计。
每行必须且只能归入:
trusted_standard:日期、账户、主体、币种、已确认方向和原币金额可信;exception:属于交易但任一主字段无法解析或相互冲突;skipped:有证据表明不是交易,并记录跳过原因。
来源数据行数 = trusted_standard 唯一行数 + exception 唯一行数 + skipped 唯一行数
问题标签可一行多条,但不能复制主分类。存在 exception 时 V0 为 FAIL;守恒成立不等于解析通过。
3. 确认方向并生成标准交易
对借贷分列、有符号金额、金额+方向三种模式,先建立候选映射,再用至少一项可核验证据确认:来源单据说明/图例、明确方向字段,或同账户同币种连续余额变化。仅有列名、正负号或“收入/支出”Sheet 名不足以确认。
余额证据只能在可靠排序和可解释的连续区间确认来源方向映射,不能逐行倒推正负以强行平衡。方向映射一经独立来源或可靠区间确认,后续余额断点保留原方向进入 V3 差异(FAIL),不能重分方向抹平。方向本身冲突或仍无法确认的行归 exception;不要默认“借方=流出、贷方=流入”或“正数=流入”。标准行记录 direction_rule 和 direction_evidence。
标准交易保留原币金额与余额、方向、账户、主体、币种、来源真实交易时间、对方、摘要、类别、V0 状态、原币/本位币可用性、问题码和来源定位。交易日期与交易时间分列时组合为同一来源时点;没有来源真实时分秒时不得以日期零点伪造。缺汇率但主字段可信的行仍为 trusted_standard:原币可用,本位币字段留空,记录 EXCHANGE_RATE_MISSING。
4. 匹配汇率与预算
统一定义:
1 单位交易币种 = rate_to_base 单位本位币
amount_base = amount_original × rate_to_base
优先识别包含 effective_start + effective_end + transaction_currency + base_currency + rate_to_base + direction + source 的标准长表。正式折算前必须询问并记录用户采用交易日、月均、期末、固定期间或其他企业汇率口径;附件中的汇率数值和来源不能替代这项口径确认。汇率必须带交易币种、本位币、生效期间、方向说明、来源及 basename + Sheet + 源行号;同一币对有效期重叠且汇率冲突时停止受影响折算。反向报价只有方向明确时才可确定性取倒数,并记录变换;方向或汇率口径不明则 NOT_RUN。本位币交易可用 1,并标注“本位币恒等换算”,但仍要向用户确认本位币与报告口径。
预算最低字段为 entity + period + currency + category + budget_amount。V2 按这四个维度匹配实际流出;期间、主体或币种不一致时不跨口径比较。预算与 0/0 规则见验证参考。
5. 执行 V0–V5
先展示账户属性的实际取值映射;语义明确的 public/private 可分别对应公户/私户,未知值不能强归类。重复交易按主体、账户、币种和交易 ID 判断,跨账户相同 ID 不单独等同重复。V5 同币种候选按原币与同单位容差比较;只在实际跨币种端点需要时依赖汇率,不因无关交易缺汇率漏掉已能识别的同币种候选。全部候选保留为 REVIEW,不认定违规或自动合并。
验证表控制编码固定为 FUND-V0 至 FUND-V5,可按子规则及账户拆行;至少逐项记录,缺材料不省略记录。
- V0 解析完整性:验证唯一三分法、读取状态和来源追溯。
- V1 原币资金守恒:按
period + entity + account + currency使用原币金额和原币余额。 - V2 预算对比:仅在预算维度、映射、折算和交易覆盖完整时执行。
- V3 余额连续性:按
period + entity + account + currency和可靠交易顺序核对原币余额。 - V4 异常交易筛查:覆盖空值、方向冲突、重复交易、大额和深夜规则;空值与方向冲突复用 V0 异常来源,重复规则见验证参考,禁止自动去重。分别确认大额金额阈值、深夜开始/结束时点和深夜流出金额阈值;深夜规则必须有来源真实时分秒。
- V5 公私户流转筛查:确认时间窗口和金额容差后,按账户属性与金额可比性形成候选链,不把相似金额直接认定为同一笔。
每个验证或规则分别输出:
result_status:核算/筛查结果,值为PASS/FAIL/NOT_RUN/REVIEW;coverage_status:执行覆盖,完整为PASS,缺输入、字段、阈值或受异常行影响为NOT_RUN,内部覆盖守恒错误为FAIL。
存在可能影响 V4/V5 的 exception、缺真实时间、缺账户属性、缺必要汇率或缺阈值时,相关规则 coverage_status=NOT_RUN 且 result_status=NOT_RUN;已经识别的候选仍可单列为 REVIEW,但不能据此宣称完成全量筛查。只有覆盖完整时,“无候选”才可记为结果 PASS。
6. 生成资金对账平衡表和汇率表
funds_balance_reconciliation.csv 是本文所述“资金对账平衡表”的标准结果。每行粒度固定为 period + entity + account + currency,不得跨账户或跨币种抵销。至少包含:
period, entity, account, account_type, currency, opening_balance_original, inflow_original, outflow_original, calculated_closing_balance_original, source_closing_balance_original, balance_difference_original, transaction_count, exception_count, opening_balance_basis, first_source_row, last_source_row, v1_result_status, v1_coverage_status, v3_result_status, v3_coverage_status, audit_status。
- 固定验证
calculated_closing_balance_original = opening_balance_original + inflow_original - outflow_original,并以balance_difference_original = calculated_closing_balance_original - source_closing_balance_original披露差异。 - 期初、期末来源及所有流入/流出交易必须能回到附件 basename、Sheet 和源行;逐笔余额可靠时允许反推期初,但必须在
opening_balance_basis中记录依据。 - V1 需要期间、期初/期末、完整流入流出、方向及确认容差;独立提供可信期间期初/期末时不依赖逐笔排序,从首末逐笔余额反推边界时则必须先验证顺序;缺这些证据时 V1 及对应金额
NOT_RUN,不得补 0。V3 另需可靠逐笔顺序和余额;仅缺顺序且有独立期间余额时只停 V3,V1 可独立运行;无可靠边界时 V1 同样 NOT_RUN。已执行且差异超过容差时标记FAIL。
funds_exchange_rates.csv 是本次运行的汇率使用表,至少包含 transaction_currency, base_currency, effective_start, effective_end, raw_quote, raw_direction, rate_transformation, rate_to_base, exchange_rate_basis, source, fx_source_basename, fx_source_sheet, fx_source_row, matched_transaction_count, usage_status。实际使用的恒等换算、取倒数变换和未匹配汇率缺口都必须单列披露;缺汇率不得生成伪造的 rate_to_base=1。
7. 输出前交叉校验
至少验证:V0 唯一行数守恒;标准行、异常和跳过行可追溯;平衡表的账户分组与标准交易互斥穷尽,流入/流出能反向汇总到同一 source_row_id 集合;平衡表与 V1/V3 的差异和状态一致;V1/V3 未混入折算金额;汇率表覆盖全部本位币折算行且与标准交易的汇率来源一致;V2 的不可折算、未映射和已映射流出互斥穷尽;两路本位币折算使用相同 source_row_id 集合且金额一致;V4/V5 候选、结果状态与覆盖状态一致。
任一内部校验失败时记录 INTERNAL_CROSSCHECK_FAILED,依赖结果不得继续使用。总体结论按 FAIL 优先,其次 NOT_RUN,再其次 REVIEW;只有所有必做范围覆盖完整且通过时为 PASS。NOT_RUN 不等于 PASS。
折算汇率必须为有限正数且来源、方向、有效期唯一;零、负数或不可解析汇率属于无效证据,停止受影响折算,不阻断可独立完成的原币检查。
同一会话中用户已明确确认的口径,在展示实际映射并核实一致后直接沿用,不重复索要同一确认;仅对新歧义、冲突或范围变化补问。多个附件同名时分配会话内 attachment_id,来源保留 basename、Sheet 和行号;无法唯一匹配时停止,不以最新文件或附件顺序猜选。
运行能力分级
- 开始时记录附件读取、确定性计算、文件产物返回、代码执行和最终产物可读本地路径五项能力,不得默认它们存在。
- V0 三分法、多账户原币余额连续、汇率有效期匹配、折算、预算覆盖和 V1–V5 逐行筛查必须使用平台原生表格/公式/分析能力或运行期轻量代码确定性完成,不得由 Agent 心算多行金额。轻量代码只接收本次附件和显式参数,不扫描目录、不依赖固定路径、不写入 Skill/项目目录、不补 0 或硬编码特定结果;它与报告测试入口分属两层。
- 无确定性计算能力时仍完成附件角色、方向证据、字段映射、V0 候选与材料缺口;受影响余额、折算、守恒和 V1–V5 控制记录
DETERMINISTIC_COMPUTE_UNAVAILABLE并标记NOT_RUN。只能读缓存值时,仅将FORMULA_VALUE_STALE检测标记NOT_RUN,如实披露未核验缓存;只能读公式文本且平台不能重算时,记录FORMULA_VALUE_UNAVAILABLE,所有依赖该金额的控制NOT_RUN。能够重算时按当前输入确定性重算,不把公式文本当金额。
报告交付
生成报告时必须先读 references/report-contract.md,按其 HTML/CSV、安全、控制记录及验收规则交付。该规范随本 Skill 自带,不依赖其他 Skill。
- 当前会话唯一附件:
funds_reconciliation_report.html;复用assets/report-shell.html,不手写另一套页面或导出器。 - 页内完整 CSV:
funds_attachment_mapping.csv,funds_standard_transactions.csv,funds_balance_reconciliation.csv,funds_exchange_rates.csv,funds_exception_pool.csv,funds_skipped_rows.csv,funds_v0_v5_validation.csv。 - 业务状态与技术验收分开;缺材料保留 FAIL/NOT_RUN/REVIEW,不因页面生成成功而改判。能力不足时采用规范中的沙箱兼容输出。
HTML 至少展示:运行摘要、附件与字段映射、方向确认依据、资金对账平衡表、汇率使用表、V0 三分法、V0–V5 结果与覆盖状态、交叉校验、异常摘要和限定结论。资金对账平衡表、汇率表和验证报告必须来自同一内嵌数据对象。浏览器端导出不可用时记录 FILE_OUTPUT_NOT_SUPPORTED,只将输出层标记 NOT_RUN。