多银行 CSV/Excel 流水归一化成统一字段与方向标记,日结余额自校验,认不出的格式直接拒绝
bank-statement-parseSKILL.md 为准。> **本地运行,零网络、免 API Key、数据不出电脑。** > 四项诚实承诺:① 算不出就说算不出,绝不编造数字;② 高危动作强制人工确认;③ 幂等断点,绝不重复副作用;④ 全程留痕可审计。 # 银行流水解析 招商导出的是「交易日期/交易金额/余额」,建行是「交易日/收入/支出/账面余额」,企业网银还喜欢把借贷方向塞进摘要里。每一家格式都不一样,但下游只需要一种:日期、摘要、对方、收入、支出、余额、方向。 本包做**归一化**:认字段、定方向、统一格式,然后做一道**日结余额连续性自校验**——如果昨天的余额 + 今天收入 - 今天支出 ≠ 今天的余额,那份流水多半被截断过或者缺行。这一步是自动的,能提前发现"这笔账对不上"的源头。 ## 输出四件套(每次运行必有) | 文件 | 内容 | |---|---| | `bank_主表.csv` | 归一化流水:交易日期/摘要/对方账户名/对方账号/收入/支出/余额/方向 | | `bank_异常表.csv` | 日期无法识别、金额非数字、方向缺失、日结不连续 | | `bank_校验表.csv` | 字段映射来源、期初余额、期末余额、人工复核声明 | | `fin-log.jsonl` | 处理日志(追加) | ## 环境准备 ```bash PY="<python 3.8+ 路径>" # 纯标准库 "$PY" <skill目录>/scripts/bank_parse.py <流水文件> [参数] ``` ## 用法 ### 单张流水 ```bash bank_parse.py 招商银行流水.xlsx ``` 真实输出: ``` 方案:招商银行流水.xlsx | 数据行=64 | 银行=招商(推断) 字段识别:日期=交易日期 收入=交易金额 支出=交易金额 余额=余额 对方=对方账户名 期初余额 1,250,000.00 | 期末余额 1,182,300.00 | 净变动 -67,700.00 收入合计 88,000.00 | 支出合计 155,700.00 ⚠ 第 32 行日结不连续(预计余额 1182000.00,实际 1182300.00,差 300.00) ``` ### 多张流水合并 ```bash bank_parse.py ./流水目录 --merge ``` 目录下多份流水合并成一张主表,附 `_来源文件` 列。**期初余额取第一张表的首行余额,后续表和它对不上会报警**——因为每家银行的余额口径可能不同。 ### 指定银行格式 ```bash bank_parse.py 某行流水.csv --bank-template 建行 ``` ## 字段是怎么认的 | 标准字段 | 候选列名 | |---|---| | 交易日期 | 交易日期 / 交易日 / 日期 / 记账日期 / 发生日期 | | 收入 | 收入 / 贷方发生额 / 收入金额 / 转入金额 | | 支出 | 支出 / 借方发生额 / 支出金额 / 转出金额 | | 余额 | 余额 / 账面余额 / 账户余额 / 交易后余额 | | 摘要 | 摘要 / 交易摘要 / 用途 / 附言 / 备注 | | 对方账户名 | 对方账户名 / 对方名称 / 交易对手 / 对方户名 | | 对方账号 | 对方账号 / 交易账号 / 对方卡号 | **收入/支出列只有一列**(很多银行合并成一列「交易金额」+ 借贷标志):本包会找借贷方向列(借贷标志/收付标志/方向),没有就**拒绝**——凭摘要猜方向是错的,会导致整表净额反号。 ## 安全与边界(拒绝权) - **源文件零改动**:输出进 `_out/`,原文件不动 - **方向列缺失不猜**:这是资金类技能最容易出错的地方,宁停不猜 - **日结不连续会报警**:不自动补数,只告诉你哪一行对不上 - **不联网查银行**:所有数据留在本地 ## 人工复核(必读) - 期初余额要手动确认,本包取的是首行余额,不一定是上期结转 - 日结不连续的拦截点要看原始流水,可能是漏行,也可能是跨行交易 - 涉及对公账户的流水,导出权限与留存期限按公司规定执行 ## 相邻路线转交 | 用户要做的事 | 转交给 | |---|---| | 流水与账面银企对账 | `bank-recon` | | 洗一遍脏流水 | `fin-table-clean` | | 检查流水里有没有泄露的账号 | `financial-secret-scan` | ## 可直接复制的说法 ```text 把这份银行流水归一成统一格式:日期、摘要、对方账户、收入、支出、余额、方向。 收入支出只有一列但有借贷标志的那种,按标志分;连标志都没有的直接告诉我不行,别猜。 顺带做个日结余额连续性检查,对不上的行列出来。期初余额我自己确认。 ``` ## 做完怎么算完成 - [ ] 每张流水都能说清用哪列认的日期和金额 - [ ] 收入/支出方向没有搞反(抽查一笔大额) - [ ] 日结不连续的拦截点已定位到行 - [ ] 期初余额经人工确认 --- 本 Skill 采用 BUSL-1.1 许可(源码可见,可自由使用)。 版权所有 © 2026 律令科技(深圳)有限公司(@lexord-technology)。 本技能由律令科技(深圳)有限公司开发,**财友云(caiyouyun.cn)**发布与展示。 允许个人及企业内部免费使用、复制、修改,包括内部生产环境。 未经书面许可,不得将本 Skill 或其修改版作为商业服务对外销售、转售或提供托管服务。 各版本发布之日起 4 年后自动转为 Apache License 2.0。详见随包 `LICENSE.md`。
流水与账面按金额+日期窗口匹配,输出已勾对/单边与余额调节表
超标/缺票/重复/连号/跨期校验 + 汇总表
按应收应付账期 + 历史收支推演未来 N 周缺口与预警
应收票据/应付账款到期日历,可触发本地通知
识别重复申请/重复发票/缺合同/缺发票/审批未完成并冻结,合格项按到期日+优先级+资金约束排期
一张票多笔付、一笔付多张票,输出已匹配/部分付/超付/预付/待确认,无法唯一确定时只给候选
按发票号码+代码+金额+日期组合查重,拦住重复报销与重复入账
进销项发票台账,按月/客户/税率汇总,导出 CSV
从业务单据表按科目映射批量生成凭证草稿,借贷平衡预检
40+ 指标(偿债/营运/盈利/成长)+ 多期趋势与同业占位
增值税/附加/个税/印花税/所得税预缴,附公式与政策依据
金额大写、含税不含税互算、价税分离、尾差分摊、百分比反算
SKILL.md 为准。