# REQUIREMENTS —— 票据合规预审助手(verify-invoice-default) > 需求来源:《核心建设内容:各部门"Skill"深度需求规格书》§4.1 财务处 Skill 001(票据合规性"秒级预审")。 > 详细设计见工作区《财务处Skill001-票据合规秒级预审-开发文档.md》;本文是该技能仓内的需求与验收主文档。 > 定位原则:辅助非决策、审慎非激进 —— AI 只做预审提示,真伪与最终结论由人确认。 ## 0. 技能标识 - 拟定 slug:`verify-invoice-default` - 中文 name:票据合规预审助手 - 中文 description:高校报销场景的发票合规性秒级预审:核对字段完整性、购买方税号白名单、开票日期与出差行程逻辑、住宿交通经费标准,对连号、同商家集中开票、节假日开票等风险点红黄灯预警,生成《初审意见单》。 - account-manager platform_key:不适用(无网页 RPA,无账号下发) - 命名形态:scope 型(verify ∈ 动词白名单;default ∈ scope 白名单;21 字符) - 网页 RPA 登录策略:`not_needed`(无浏览器自动化;不使用 account-manager) ## 0.1 宿主入口定位 | 主能力(Action id / CLI) | 对话 | 数据管理 | 定时 | 教程章节 | 不挂理由 | |---------------------------|------|----------|------|----------|----------| | `prereview-invoice`(prereview) | 挂 | toolbar(bind invoice_records,表单) | 不挂 | 入口一/入口二 | 预审由单据驱动,无无人值守场景 | | `prereview-batch-input`(prereview-batch-input,async) | 挂 | 不挂 | 不挂 | 入口二 | 批量输入依赖 input 目录,属对话长任务 | | `render-html`(render-html) | 挂 | toolbar(bind prereview_reports)+ skill-detail | 不挂 | 入口一/入口二 | 同预审 | | `mark-verified` | 不挂 | row(prereview_reports,预填 id) | 不挂 | 入口一 | 查验回填是"对着记录"的操作 | | `list-reports` / `stats` | 挂 | 不挂 | 不挂 | 入口二 | 查询类,对话即达 | | `view-standards` | 挂 | 仅展示表 | 不挂 | 入口二 | 标准库日常只读 | | `set-standard` | 不挂 | row(expense_standards,预填键) | 不挂 | 入口一 | 管理员在表上改值更直接 | | `add-whitelist` | 不挂 | toolbar(taxid_whitelist,表单) | 不挂 | 入口一 | 结构化录入,表单更稳 | | `remove-whitelist` | 不挂 | row(taxid_whitelist,预填税号) | 不挂 | 入口一 | 同上 | | `health` / `version` / `config-path` | 不挂 | 不挂 | 不挂 | N/A | 运维诊断,仅 skill-detail | 整技能无 cron placement:`TUTORIAL.md` 入口三已声明"不需要定时"及理由。 ## 0.2 AI + RPA 协作与授权边界 - 本技能**无 RPA**:不启动浏览器、不操作桌面/手机、不调用外部 HTTP。 - 发票照片 → 结构化字段由 Agent 多模态能力或用户粘贴完成;技能只接收结构化 JSON。 - 目标系统:无外部系统;全部计算在本地 SQLite。 - 禁止路线(全技能适用):破解 / 逆向 / 私有协议 / 验证码绕过等;本技能不涉及。 - 国税查验接口、OCR API、财务系统对接均为后续扩展,接口到位前预审结果"待人工查验"闭环。 ## 0.3 业务行生命周期 不适用:预审为同步单据计算,无"处理队列"状态机;`prereview_reports.verify_status`(待查验/已查验通过/已查验不符)仅记录查验回填状态,不承担抢占/重试语义。 ## 1. 文档目标 明确 `verify-invoice-default` 的研发范围、交付标准与验收要求,作为开发与测试统一依据。 ## 2. 业务背景 全校教职工报销需财务处逐张人工核验票据(真伪、抬头税号、日期逻辑、经费标准),单张 5-8 分钟、退单率高。需要开发 `verify-invoice-default`:对发票结构化字段自动完成合规预审,输出《初审意见单》(✅/⚠️/❌ 三色清单),把人工审核压缩到秒级并降低退单率。 ## 3. 开发目标 - 解析并校验发票字段 JSON(单张/同批多张,上限 50 张/批) - 实现四步规则引擎(F1-F4 / V1-V3 / S1-S3 / R1-R3,共 13 条规则) - 输出结构化 JSON + 写入本地业务表 + 生成《初审意见单》HTML(`html/` + `render-html`) - 支持查验结果回填、标准库/白名单维护、预审统计 - 失败可诊断(稳定错误码 `ERROR::` + 统一日志) ## 4. 功能范围 ### 必须实现 - `health` / `version` / `init-db` / `config-path`(模板基座;`run` 为模板演示入口,不承载业务) - `prereview`(主命令)、`prereview-batch-input`(async Action) - `render-html` / `list-reports` / `show-report` / `mark-verified` - `view-standards` / `set-standard` / `list-whitelist` / `add-whitelist` / `remove-whitelist` / `list-holidays` / `stats` - 业务表 5 张 + `_jiangchang_*` 中文展示元数据 + 种子数据(标准 8 条、税号 1 条、节假日 12 天) - `assets/actions.json` 按 §0.1 定位表声明 ### 可后续扩展 - 国税查验 API 直连、OCR API 集成、财务系统对接(项目余额校验)、PDF 意见单、跨批次连号检测、销方黑名单、定时入口 ## 5. 非功能要求 - 目录结构符合 `skill-template` 规范;入口统一 `scripts/main.py` - 单文件 < 900 行;UTF-8 without BOM;Windows UTF-8 输出兼容 - 机读输出 JSON;错误前缀 `ERROR:`;主命令 `task_start`/`task_failed` 日志齐全,无敏感明文 - 只存发票结构化字段,不存影像与身份证号等个人信息 - 测试离线可过(无网络、无浏览器) ## 6. 输入输出要求 ### 输入 - `invoice_json`:发票字段(camelCase,兼容 snake_case/中文键),支持文件路径 / 内联 JSON / stdin - 上下文:`--purpose` `--project-no` `--trip-start` `--trip-end` `--trip-city` `--staff-title` - 批量:`input/` 目录 JSON 文件(`{"invoices": [...], "context": {...}}` 或纯数组) ### 输出 - 成功:stdout JSON(`ok/batch_no/count/verdict_counts/reports[]/disclaimer`) - 失败:`ERROR:INVOICE_INVALID|INVOICE_INPUT_MISSING|REPORT_NOT_FOUND|VERIFY_INPUT_INVALID|STANDARD_INPUT_INVALID|WHITELIST_INPUT_INVALID|ENTITLEMENT_DENIED|QUERY_FAILED` + 中文 message - 落库:`invoice_records`、`prereview_reports`;文件:`html/report-{id}.html` ## 7. 依赖的兄弟技能或外部系统 - 无兄弟技能依赖;无外部系统 - `requirements.txt`:无特有依赖(公共能力由共享 runtime 提供) ## 8. 不在本次范围内的内容 - 不做自动报销提交、不改财务账务 - 不做发票真伪自动判定(只提示查验 + 回填) - 不存发票影像;不接 OCR/国税 API/财务系统(扩展项) - 不兼容旧模板历史结构 ## 9. 验收标准 - 目录结构合规;目录名 = `SKILL.md` slug = `constants.SKILL_SLUG`;版本三处一致(SKILL.md/constants/CHANGELOG=1.0.0) - `health` / `version` / `init-db` 正常;`python tests/run_tests.py -v` 全绿 - 规则引擎金标准测试覆盖 13 条规则正反例;三种代表性场景(通过/驳回/待确认)真实跑通 - `mark-verified` 回填"不符"后结论升级驳回;`stats` 与记录一致 - HTML 意见单生成、可重建、宿主侧栏可预览 - `init_db()` 写入 `_jiangchang_tables/_jiangchang_columns`,中文 display_name 完整,`test_display_metadata` 通过 - `assets/actions.json` 与 §0.1 定位表、`TUTORIAL.md` 章节一致 - 发布前 `developer_ids` 替换为本人匠厂用户 ID;发布后按入口定位表完成宿主多入口验收(含用户体验) ## 10. 开发注意事项 - `cli` 只做参数解析;核心逻辑在 `service`(prereview_service 唯一内核,多入口复用) - 业务表间禁止 SQLite 外键;时间字段 Unix 秒 - 保留模板演示 `cmd_run`(POLICY-RPA-003 录屏集成守护要求 service 层保留视频集成令牌);本技能业务命令不使用录屏 - 修改开发规范时同步 `POLICY_MATRIX.md` 与对应守护测试 ## 11. 变更记录 | 日期 | 版本 | 变更人 | 变更内容 | |------|------|--------|----------| | 2026-09-13 | v1.0 | 开发组 | 初版:四步规则引擎 + 标准库/白名单/查验回填 + 初审意见单 |