核心功能与用法
rapprochement-bancaire 是 OpenClaw 会计事务所的核心财务状态引擎,专用于自动执行每日银行对账操作。其唯一正确用法是调用 shell 命令 python3 scripts/main.py <racine_clients>,随后读取生成的 rapprochement.json 及合并报告 compta_batch_report_<date>.json,并向会计师转译成可读表格。
脚本执行以下关键流程:遍历 clients/ 目录(忽略技术文件夹),处理当前月、上月及未锁定历史月份;解析标准命名格式的发票 PDF 与银行对账单;通过双阶段匹配算法(Pass 1 精确引用匹配 ±1€,Pass 2 模糊金额+标签相似度≥0.6)将支付与发票关联;验证 TVA 计算误差是否超过 5%;检测逾期发票并生成分级催款提醒;最终输出结构化 JSON 文件。
输出文件包含:按期间分组的发票状态(unpaid/paid/partial/overdue)、未匹配银行流水、期间级异常与发票级异常、以及自动计算的催款步骤。"阻塞性异常"(如重复支付、高额缺失发票、TVA 错误)会阻止期间锁定,需人工干预。
显著优点
完全自动化重构能力:rapprochement.json 是可重建缓存,PDF 原件始终为权威数据源,支持从零完全重算,确保数据可审计与灾难恢复。
严格格式契约:输出结构({client, generated_at, periods[]})是下游系统(OpenClaw 代理、配置后台、仪表板)的硬性接口,避免手工格式错误导致的数据断裂。
智能匹配引擎:双阶段匹配兼顾精确引用与模糊启发式,支持跨期间结算(如 5 月支付结清 1 月发票),减少人工对账工作量。
风险分层管理:异常区分为"阻塞性"与"非阻塞性",会计师可优先处理高影响事项;催款步骤按逾期天数自动分级(1-4 级),标准化客户沟通。
周期锁定机制:满足条件(无阻塞异常、文件哈希稳定 7 天、无不合理未付项)后自动创建 batch.lock.json,防止重复处理与数据漂移。
潜在局限与风险
单一执行路径限制:绝对禁止手工重构对账逻辑或修改输出格式——任何偏离 scripts/main.py 的行为都会导致下游工具失效。历史上曾发生代理生成错误格式(如使用 payments 而非 bank_matched)导致全链断裂的事故。
发票解析脆弱性:依赖文件名约定 (AAAA-MM-JJ_N°Facture_Contrepartie_MontantTTC.pdf),不可读文件触发 facture_illisible 异常;extract.py 的 OCR/文本提取质量直接影响数据完整性。
银行对账单格式依赖:交易解析依赖特定分隔符与引用标记(REF <id> / FACT <id>),非标准格式可能导致 releve_non_parseable 或误分类为 paiement_orphelin。
阈值刚性:TVA 5% 容差、模糊匹配 0.6 相似度阈值、高低额区分(1 000 €)均为硬编码,无法按客户灵活调整。
催款逻辑被动:仅生成状态与建议步骤,实际发送需外部决策(relances skill),存在执行断层风险。
适合人群
- 会计事务所日常运营中的持证会计师与财务助理
- 需每日监控客户现金状态与应收账款的客户经理
- 负责期间锁定与月度结账的财务控制人员
- 技术团队维护 OpenClaw 自动化流水线的 DevOps/财务工程人员
常规风险
- 脚本执行失败:未捕获的 stderr 需立即上报,禁止手工重跑批次
- 格式契约破坏:任何非
main.py生成的rapprochement.json均视为无效 - 高金额孤儿支付:
paiement_orphelin> 1 000 € 为阻塞性异常,可能隐藏欺诈或记账遗漏 - 跨期匹配盲区:支付成功匹配后,原期间发票状态更新,但交易不会出现在支付期间的未匹配列表中,需双向核查
- 锁定文件误操作:手动删除
batch.lock.json将导致历史期间重处理,可能产生数据不一致