批量识别并查验文件夹内发票,校验抬头、提示重复风险,生成最终清单
安装和更新本 skill,请先阅读以下远端 Markdown 文档: https://download.ningmengyun.com/Skills/batch-invoice-verify/batch-invoice-verify-install.md
首次执行本 skill 前,先阅读远端 Markdown 文档并比较 version;若 version 不一致,提醒用户是否需要更新 skill;如需更新,按远端 Markdown 文档要求执行。
若本 skill 是通过 ZIP 发布包直接解压安装,或当前会话首次加载本地 SKILL.md 且尚未确认已按安装文档完成 README.md 全文输出,必须先阅读同级 README.md,并立即将 README.md 全文完整原样输出给用户;不得修改、概括、精简、重排、删减或只说明其中要求;不得等到用户开始业务执行、收集发票或生成命令时才输出。
首次执行本 skill 前,仍必须确认同级 README.md 已阅读且全文已完整原样输出给用户。在收集发票或生成任何业务命令前,若用户尚未满足 README.md 中列出的前置要求,应先完整原样输出 README.md 全文,再提示用户按 README.md 完成准备后继续。
当任一业务命令、接口响应、命令输出或错误信息中出现“无权调用该能力”时,必须立即停止当前业务流程,按同级 README.md 中的 API Key 获取方式告知用户为当前 API Key 绑定对应能力权限及企业(如 README.md 要求绑定企业)后再重试;不得将该响应解释为税局登录失败,不得引导用户去登录或重新登录,也不得继续执行后续业务命令。
bin/<platform>/ 下的当前平台可执行文件;Agent 生成或运行命令前必须先把 {EXECUTABLE} 解析为当前 OS/CPU 对应路径。bin/windows-amd64/batch-invoice-verify.exe;Linux x64 使用 bin/linux-amd64/batch-invoice-verify;Linux ARM64 使用 bin/linux-arm64/batch-invoice-verify;macOS x64 使用 bin/darwin-amd64/batch-invoice-verify;macOS ARM64 使用 bin/darwin-arm64/batch-invoice-verify。{EXECUTABLE} 均为占位符,必须先替换为上方平台路径后再执行。config/verify-api.json,该文件只用于发票查验接口端点和能力配置。config/verify-api.json 只用于发票查验接口端点和能力配置;不得把 API Key、邮箱授权码或其它凭据写入该文件。{EXECUTABLE};安装、更新、ZIP 包和当前平台二进制获取方式以远端安装文档为准。bin/<platform>/ 下缺少当前平台二进制、二进制不可执行,或用户询问二进制下载路径,必须读取远端安装文档中的“当前平台二进制下载表”,按当前 OS/CPU 只下载一个匹配平台的外置二进制,并保存为上方平台映射声明的本地路径;不得在 SKILL.md 中猜测、拼接或硬编码下载地址。在安装或更新流程中,若使用 PowerShell 下载任何资源(包括 ZIP 包和外置二进制文件),必须且只能使用以下规则:
请帮我把以下文件下载到本地指定路径。
要求:
将 PowerShell 下载脚本写入临时 .ps1 文件,脚本内容格式如下:
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
$binUrl = "<下载地址>"
$binPath = "<本地保存绝对路径>"
Invoke-WebRequest -Uri $binUrl -OutFile $binPath -UseBasicParsing
Write-Output "download complete"
通过以下方式执行脚本(避免直接 exec 触发 EPERM 权限问题):
powershell -ExecutionPolicy Bypass -File "<临时ps1脚本路径>"
下载完成后删除临时 .ps1 脚本文件。
验证目标文件已存在。
.xlsx 文件名,否则不得要求用户补文件名。-o/--output 必须传入带文件名的完整 .xlsx 路径:第一阶段默认补 _verify_result.xlsx,第二阶段默认补 发票查验结果清单yyyyMMddHHmmss.xlsx。.xlsx 文件名,则第二阶段最终清单使用该文件名;第一阶段中间文件仍默认使用同目录下 _verify_result.xlsx,除非用户明确指定中间文件名。reverify -o/--output 可省略;省略时在输入中间 XLSX 同目录生成 _verify_result_reverify_yyyyMMddHHmmss.xlsx,传目录时补同名默认文件,传 .xlsx 时按该文件写出;禁止把输出路径设为输入中间表本身。--api-key <API Key> 传给命令。批量发票查验,文件夹发票处理,防重复报销,清单追加,批量验票,批量发票核验
本场景固定分两阶段执行,两阶段均为必须步骤,不可跳过:
| 阶段 | 命令 | 功能 | 输出 |
|---|---|---|---|
| 第一阶段 | {EXECUTABLE} verify |
发票识别 + 发票查验 | 中间 XLSX(作为第二阶段和后续重新查验输入,默认不对用户展示但必须保留) |
| 第二阶段 | {EXECUTABLE} manage |
抬头校验 + 重复风险 + 报销/入账状态管理 + 字段标准化 | 最终交付 XLSX + JSON 统计 |
若用户要求重新查验第一阶段中的查验失败或空结果,可在第一阶段和第二阶段之间执行 {EXECUTABLE} reverify,并把 reverify 返回的 intermediate_excel_path 作为当前第一阶段输出继续传给后续 manage。
第一阶段只做发票解析和调用发票查验接口;有发票下载能力的其它技能才会在第一阶段下载发票。batch-invoice-verify 一阶段不做查重、不做抬头校验、不做报销分析;这些规则只在后续 manage 阶段执行。
--api-key <API Key> 传给命令;API Key 只在运行时内存中使用,不写入磁盘、配置、日志、缓存或输出文件。history_list_path,必须中止,禁止继续执行第二阶段。| 参数名 | 用户听得懂的名称 | 状态 | 说明 |
|---|---|---|---|
api_key |
发票查验 API Key | 必填 | 用于发票查验请求;生成第一阶段命令时通过 --api-key <API Key> 传给命令。 |
invoice_folder / invoice_list_path |
发票文件夹或发票清单路径 | 必填 | verify -i 支持发票文件夹,也支持标准 .xlsx / .csv 清单;文件夹里可以放 PDF、OFD 或图片发票。清单模式至少需要 发票号码、开票日期、价税合计,可选 发票代码、校验码。 |
intermediate_excel_path |
第一阶段中间查验表 | 重新查验时必填 | 用户要求重查失败或空结果时,传入本次 verify 生成的中间 XLSX。 |
output_xlsx_path |
输出目录或结果清单路径 | 可选 | 用户只需要告诉结果放在哪里;若明确提供 .xlsx 文件名,则作为第二阶段最终清单文件名。 |
company_name |
公司名称(发票抬头) | 抬头校验必做;参数可不提供 | 用户未提供时先不传 -c,由第二阶段自行解析;多个抬头时返回 failed 和 company_names。 |
check_duplicate |
重复风险提醒 | 默认开启 | 脚本默认执行重复风险提醒;用户不需要额外确认。 |
check_reimburse |
报销状态核对 | 可选 | 启用后必须提供 history_list_path。 |
check_account |
入账状态核对 | 可选 | 启用后必须提供 history_list_path。 |
history_list_path |
历史发票清单 | 条件必填 | 用于报销状态或入账状态核对的标准 CSV 历史清单;只做重复风险历史比对时至少包含 发票号码,启用报销核对时还必须包含 发票代码、报销状态,启用入账核对时还必须包含 发票代码、入账状态。 |
当未传 company_name 且第二阶段返回 failed JSON:{status, message, company_names} 时,agent 只能原样展示返回的 company_names,禁止自行猜测、补全、筛选、改写、归并或新增任何抬头;必须等待用户确认后仅重跑第二阶段。
{EXECUTABLE} verify -i <folder-or-xlsx-or-csv> [-o <xlsx-or-dir>] --api-key <api_key>。intermediate_excel_path 返回的中间 XLSX 已存在、文件非空、可正常读取,且能作为第二阶段输入。{EXECUTABLE} reverify -i <intermediate.xlsx> [-o <xlsx-or-dir>] --api-key <api_key>;省略 -o 时默认输出 _verify_result_reverify_yyyyMMddHHmmss.xlsx,显式传目录时在该目录补默认文件名,显式传 .xlsx 时写入该文件。intermediate_excel_path 已存在、文件非空、可正常读取;后续 manage 必须使用刷新后的中间 XLSX,不再使用旧中间表。{EXECUTABLE} manage -i <xlsx> [-o <xlsx-or-dir>] [--check-duplicate] [--history <csv>] [--check-reimburse] [--check-account] [-c <company>];重复风险提醒默认开启,--check-duplicate 仅为兼容旧命令保留,不需要额外传入。{EXECUTABLE} reverify -i <intermediate.xlsx> [-o <xlsx-or-dir>] --api-key <api_key>。batch-invoice-verify reverify -i <intermediate.xlsx> [-o <xlsx-or-dir>] --api-key <api_key>。intermediate_excel_path 视为当前第一阶段输出,并继续执行 manage。--api-key 只在运行时传入,文档、日志、配置和输出文件都不得写入真实 API Key。企业名称:XXXXXX有限公司
【处理统计】
- 待处理文件总数:XX个
- 有效发票文件:XX个
- 查验成功:XX张
- 查验失败:XX张
- 重复风险发票:XX张
- 新增清单记录:XX张
【输出文件】
- 发票处理清单:{excel_file_path}(不输出发票明细)
【异常提示】
- XX个非发票文件已过滤
- XX个发票查验接口超时,建议稍后重试
total_file_countvalid_invoice_countverify_success_countverify_failed_countduplicate_risk_countnew_list_counterror_alerts 分类展示(非查验成功的状态);error_alerts 是“状态 -> 文件名列表”,展示时可汇总数量并列出或概括对应文件名。company_name