Files
Auto-Finance/.agents/skills/reimbursement/SKILL.md
T
wandering e1acf2de84 docs: 文档全面对齐 MCP 架构,并脱敏公开操作指南
接口与入门:
- 新增 docs/MCP.md:注册方法(DSH patch + 通用 client)、返回信封、会话目录布局、标准流程、
  硬约束与未实现清单;工具参考段由**运行时 input_schema 自动生成**,与代码同源不会漂移
- 删除 docs/API.md(856 行 Flask 路由/SSE 文档,描述的端点已不存在)
- 重写根 README.md:为什么放弃自带前端、职责分工表、快速开始、注册配置、流程链、结构与风险
- 重写 AGENTS.md:命令表换成 mcp/mcp-smoke/upload;mypy 目标改 src;新增「提交纪律」
  (pre-commit 的 stash 窗口会回滚未暂存改动)、COM 与 Playwright 线程约束、多进程共存提醒

包文档:src/README.md 与各包 README 按现状重写;新增 src/mcp/README.md(写工具的规矩、
宿主侧四个坑)与 src/upload/README.md(路由表与安全边界);tests/scripts/config 三处索引更新。

提示词迁移:src/infra/llm/ 整个删除,三份系统提示词迁到 .agents/skills/reimbursement/references/
(invoice-fields / travel-info-fields / normal-info-fields),删掉 can_submit 与 suggestion
(save_info 也会主动剥离),「严格只输出 JSON」改为「交给对应工具落盘」;新增 SKILL.md 作为
宿主侧操作纪律(已被 DSH 热加载为 reimbursement 技能)。

作废处理:删除 .agents/docs/guides/系统事件流全景图.md(SSE 与 file_events/agent_events 通道已整体
移除,现在没有任何事件流);给项目架构全景图与架构分析-2026-06-15 加「已过时」横幅保留历史;
config.example.json 去 consumable_storage 加 upload_pin;.env.example 去 LLM 段并说明已不再自动加载 .env。

安全:docs/报销操作指南.md 的示例配置里原来写着**真实姓名、16 位公务卡号、内网 LLM 地址与工号**
(自 9fe5d70/2026-05-25 起在版本历史里),本次全部换成占位符。历史清洗与令牌轮换另议。

门禁(改动含 src/infra/llm 删除,故重跑全部门禁):
  ruff check PASS | ruff format --check PASS(42) | mypy src PASS(34) | deptry PASS(36) |
  pytest 107 passed | scripts/mcp_smoke.py PASS(17 工具 / instructions 1449 字节 / case_list ok)
申购单在依赖清理后另已实机复测:2.4s 生成,产物单元格读回正确。
2026-10-19 22:40:06 +08:00

3.3 KiB
Raw Blame History

name, description
name description
reimbursement 财务报销自动化(阜阳师范大学):把发票、支付截图、出差申请单变成结构化报销数据, 生成低值易耗品申购单,并在财务系统填报。当用户提到报销、发票、差旅费、公务卡刷卡记录、 易耗品申购、财务系统填报时使用本技能。通过 mcp__arb__* 工具操作,禁止臆造财务数据。

财务报销(MCP 工具版)

接口细节与参数表见 docs/MCP.md。本文件只写"怎么做才对"的操作纪律。

流程

  1. mcp__arb__case_create 建会话,记下 case_id 与 upload_page(手机扫码上传入口,告诉用户)
  2. 材料入库:本地文件用 case_add_files(paths=[...])(路径必须正斜杠 D:/Code/...); 手机上传先落 inbox/,再 case_add_files(case_id, source="inbox") 收取
  3. case_render_pages:text_chars > 0 就 case_read_text 读文本层(比读图准且省 token), 否则读 pages/<stem>/p01.png。PDF 自动转正已处理,但转正角度要看 meta.json
  4. 逐张出 JSON → case_save_extraction。字段定义用 extraction_spec,判读细则见 references/invoice-fields.md
  5. match_payments:必须逐条处理 review_required(未匹配、发票总额小于支付总额、 一对多凑额)。贪心结果 ok 不等于"已核对"
  6. info_skeleton(info_type) 取骨架 → 填值 → save_info(自动跑规则校验)。 拿不准的字段用 validate_info(draft=...) 不落盘反复试;规则原文 rules_get
  7. 普通发票:doc_requisition 生成 Excel 申购单(exclude 剔除不参与申购的物品)
  8. case_status 复查态势;要重跑用 case_reset(scope)

必须遵守

  • 完整性不由你宣布:以 validate_info / save_info 返回的校验报告为准;不完整就向用户要材料, 禁止说"可以提交了"
  • 不得臆造财务数据:金额、日期、发票号、卡号读不清就标出来问用户,不要猜
  • 双通道冲突要复核:PDF 文本层与读图结论不一致时(尤其编号、卡号、金额位数),两条都不许默认采信, 重新放大该区域确认。已知文本层会把"标签"和"值"分段存储,且康熙部首类字符(⽇ ⻔)NFKC 后仍不变形
  • 不回显密码,不把凭据写进任何产物或日志
  • 产物只写 cases/<case_id>/(该目录已 gitignore,含身份证号与卡号)
  • required: true 的字段(含值为空串的备注类)必须存在于 JSON 里,这是刻意约束;用骨架别凭记忆造结构

尚未实现,不要承诺

浏览器填报(browser_*)、提交预览与执行(submit_*)还没做。用户要提交时如实说明该环节在建设中, 可临时用旧 Web 流程(代码在 git 提交 5f57400 里)。

参考

  • references/invoice-fields.md — 七类票据的字段判读细则(火车票/支付截图/酒店/普通发票/事前申请单/出入库单/其他附件)
  • references/travel-info-fields.md — 差旅报销数据:交通/住宿/会议费、支付方式、按人按天的补助清单
  • references/normal-info-fields.md — 普通报销数据:明细与支付方式
  • .agents/docs/plans/MCP化改造方案-2026-10-19.md — 架构决策与实测记录(含抽取质量闸门数据)