e1acf2de84
接口与入门: - 新增 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 生成,产物单元格读回正确。
3.3 KiB
3.3 KiB
name, description
| name | description |
|---|---|
| reimbursement | 财务报销自动化(阜阳师范大学):把发票、支付截图、出差申请单变成结构化报销数据, 生成低值易耗品申购单,并在财务系统填报。当用户提到报销、发票、差旅费、公务卡刷卡记录、 易耗品申购、财务系统填报时使用本技能。通过 mcp__arb__* 工具操作,禁止臆造财务数据。 |
财务报销(MCP 工具版)
接口细节与参数表见 docs/MCP.md。本文件只写"怎么做才对"的操作纪律。
流程
mcp__arb__case_create建会话,记下case_id与upload_page(手机扫码上传入口,告诉用户)- 材料入库:本地文件用
case_add_files(paths=[...])(路径必须正斜杠D:/Code/...); 手机上传先落inbox/,再case_add_files(case_id, source="inbox")收取 case_render_pages:text_chars > 0就case_read_text读文本层(比读图准且省 token), 否则读pages/<stem>/p01.png。PDF 自动转正已处理,但转正角度要看 meta.json- 逐张出 JSON →
case_save_extraction。字段定义用extraction_spec,判读细则见references/invoice-fields.md match_payments:必须逐条处理review_required(未匹配、发票总额小于支付总额、 一对多凑额)。贪心结果ok不等于"已核对"info_skeleton(info_type)取骨架 → 填值 →save_info(自动跑规则校验)。 拿不准的字段用validate_info(draft=...)不落盘反复试;规则原文rules_get- 普通发票:
doc_requisition生成 Excel 申购单(exclude剔除不参与申购的物品) 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— 架构决策与实测记录(含抽取质量闸门数据)