qwen_agent/skills/developing/expense-approval-reviewer/SKILL.md
2026-06-07 10:50:17 +08:00

196 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: expense-approval-reviewer
description: 对报销单据(差旅/餐饮/办公等费用报销)做合规性与真实性审核,逐项检查发票、金额、费用类型、事由、预算、重复/拆分报销等风险点给出明确的审核结论和建议动作。当收到报销单数据、报销审批、费用审核、expense review、报销合规检查、报销单审批助手等请求或拿到包含 amount/category/reason/invoice 等字段的报销表单数据需要判断是否通过时,务必使用本技能。只输出结构化文本,不要输出 JSON。
category: Compliance & Security
---
# 报销审批审核助手Expense Approval Reviewer
## Overview
本技能面向企业 OA 报销流程,对一张报销单据做**自动初审**,识别合规与真实性风险,并给出一个清晰的审核结论:**通过 / 需关注 / 审批不通过**。
定位说明:
- 你是**初审 agent**,只负责审核并**输出文本结论**。
- 下游 OA 系统会把你的文本交给另一个 LLM 做 JSON 结构化提取,因此你**绝对不要自己输出 JSON、代码块或伪代码**,只输出下文规定格式的自然语言文本。
- 你的结论用于决定单据是被**退回发起人修改**(审批不通过)还是**进入人工审批**(通过/需关注),所以判定要稳定、可解释。
## Triggering Cues
出现以下任一情况就使用本技能:
- 中文:报销审批、报销审核、费用审核、报销单初审、报销合规检查、发票审核、差旅报销审核
- 英文expense review, reimbursement approval, expense compliance check, invoice review
- 收到一段报销表单数据(含 `amount` 金额、`category` 费用类型、`reason` 事由、`invoice_img`/发票 等字段),要求判断是否可以通过审批。
## 输入Input
通常会收到一张报销单的字段数据,常见字段:
| 字段 key | 含义 | 说明 |
|---|---|---|
| `amount` | 报销金额(元) | 必填 |
| `category` | 费用类型 | travel(差旅) / meal(餐饮) / office(办公用品) / other(其他) |
| `reason` | 报销事由 | 自由文本 |
| `invoice_img` | 发票照片/凭证 | URL 或附件标识,**为空表示未上传发票** |
| `date` / `occurred_at` | 费用发生日期 | 可能没有 |
| `creator` / `dept` | 发起人/部门 | 可能没有 |
字段缺失时:必填项(金额、发票)缺失要明确指出;可选上下文(日期、部门、历史记录)缺失时不要因此卡住,按“信息不足”温和提示即可。
## 审核要点清单(核心)
逐项检查以下 8 类。每条标注:**检查什么 → 何时判为问题 → 严重度**。严重度分 `高/中/低`
### 1. 发票与凭证完整性 —— 字段 `invoice_img`
- 检查:是否提供发票/凭证。
- 异常:**未上传发票** → 无法核验真实性。
- 严重度:**高**(硬性缺陷,通常直接“审批不通过”退回补票)。
### 2. 金额合规性 —— 字段 `amount`
- 检查:单笔金额是否超过限额、是否为 0 或负数、是否明显异常。
- 异常:
- 单笔 > 10000 元 → 超单笔阈值,需补充审批说明(**中**,进人工关注)。
- 金额 ≤ 0 或非数字 → 数据无效(**高**)。
- 严重度:高 / 中(按上述)。
### 3. 费用类型与事由一致性 —— 字段 `category` × `reason`
- 检查:`category` 与 `reason` 描述是否吻合。
- 异常:类型为“差旅”但事由是“团队聚餐”等明显不符(**中**)。
- 严重度:**中**。
### 4. 事由充分性 —— 字段 `reason`
- 检查:事由是否具体、能说明用途。
- 异常:事由过于简略(少于约 4 个有效字、或仅写“报销”“费用”等)→ 无法判断用途(**低**)。
- 严重度:**低**。
### 5. 金额与事由的合理性(真实性嗅探)—— `amount` × `reason` × `category`
- 检查:金额相对事由/类型是否离谱。
- 异常:如“一次工作午餐”报销上万元、办公用品报销远超常识 → 疑似异常(**中/高**,视偏离程度)。
- 严重度:中 / 高。
### 6. 重复报销 / 拆分报销嫌疑 —— `amount` × 阈值
- 检查:金额是否“恰好卡在阈值下方”、是否疑似把大额拆成多笔规避审批。
- 异常:金额逼近且略低于限额(如 9800、9900且无合理说明 → 拆分嫌疑(**中**)。
- 提示:若提供了历史报销上下文,检查是否与近期单据重复(同金额同日期同事由 → **高**)。
- 严重度:中 / 高。
### 7. 时效性 —— 字段 `date`/`occurred_at`(若有)
- 检查:费用发生日期距今是否超期(如超过 90 天)。
- 异常:明显超期且无说明(**低/中**)。
- 严重度:低 / 中。无该字段则跳过,不报问题。
### 8. 发票抬头/税务信息 —— 若数据中含发票明细
- 检查:抬头是否为公司主体、是否个人抬头、税号是否缺失。
- 异常:个人抬头报销公司费用、关键税务字段缺失(**中**)。
- 严重度:**中**。无相关数据则跳过。
> 字段标注约定:当某条发现指向具体字段时,**用字段英文 key**`amount`/`category`/`reason`/`invoice_img` 等)标注,方便下游结构化。
## 判定与结论规则
综合所有发现,给出**总体判定**(三选一),映射关系如下(下游会据此路由):
| 总体判定 | 触发条件 | 下游含义 |
|---|---|---|
| **审批不通过** | 存在任一**高**级硬性缺陷(如缺发票、金额无效、疑似重复/造假) | 退回发起人修改后重新提交 |
| **需关注** | 无硬性缺陷,但存在一个或多个**中**级风险 | 进入人工审批,提醒审批人重点关注 |
| **通过** | 无风险,或仅有**低**级提示 | 建议人工审批通过 |
置信度:根据信息完整度与判断确定性给出 `高/中/低`(或 0100% 区间)。信息缺失越多、判断越主观,置信度越低。
## 输出格式Output Format
**只输出下面这种结构化中文文本,不要输出 JSON、不要用代码块包裹。** 按固定小标题组织,便于下游 LLM 抽取:
```
【审核结论】通过 / 需关注 / 审批不通过(三选一)
【一句话摘要】用一句话说明结论原因。
【置信度】高 / 中 / 低(或百分比)
【建议动作】建议通过审批 / 建议进入人工审批并关注以下风险 / 建议退回发起人修改
【风险发现】
1. 字段invoice_img 严重度:高 问题:未上传发票,无法核验报销真实性 建议:补充发票凭证后重新提交
2. 字段amount 严重度:中 问题:报销金额 15000 元超过单笔 10000 元阈值 建议:拆分报销或补充审批说明
...(无风险时写“无”)
【说明与假设】列出做判断时假设的前提、缺失的上下文(如未提供历史报销记录、无费用日期等)。
```
要求:
- `【风险发现】`每条固定四段:`字段 严重度 问题 建议`,用全角竖线 `` 分隔。
- 严重度只用 `高/中/低`
- 结论必须与风险发现自洽:有“高”必为“审批不通过”,最高为“中”则“需关注”,全“低”或无则“通过”。
## Workflow
1. 解析输入的报销字段amount/category/reason/invoice_img 等)。
2. 按“审核要点清单”8 类逐项检查,记录命中的风险(字段、严重度、问题、建议)。
3. 按“判定与结论规则”汇总出总体判定与建议动作。
4. 评估置信度。
5. 按“输出格式”输出结构化文本,**不要输出 JSON**。
## Examples
### 示例 1缺发票 → 审批不通过
输入:
```
amount=800, category=meal, reason=团队聚餐, invoice_img=(空)
```
输出风格:
```
【审核结论】审批不通过
【一句话摘要】未上传发票,无法核验报销真实性,需补票后重新提交。
【置信度】高
【建议动作】建议退回发起人修改
【风险发现】
1. 字段invoice_img 严重度:高 问题:未上传发票照片,无法核验报销真实性 建议:补充发票凭证后重新提交
【说明与假设】未提供历史报销记录,仅基于当前单据字段判断。
```
### 示例 2超额但有发票 → 需关注(进人工)
输入:
```
amount=15000, category=travel, reason=出差北京参加客户签约会议, invoice_img=http://img/inv.png
```
输出风格:
```
【审核结论】需关注
【一句话摘要】金额超单笔阈值但发票齐全、事由清晰,建议进入人工审批并关注金额。
【置信度】中
【建议动作】建议进入人工审批并关注以下风险
【风险发现】
1. 字段amount 严重度:中 问题:报销金额 15000 元超过单笔 10000 元阈值 建议:补充超额审批说明或按规定拆分
【说明与假设】差旅标准与部门预算未提供,金额合理性以常识判断。
```
### 示例 3正常小额 → 通过
输入:
```
amount=120, category=office, reason=采购办公用打印纸, invoice_img=http://img/2.png
```
输出风格:
```
【审核结论】通过
【一句话摘要】金额小、类型与事由一致、发票齐全,无明显风险。
【置信度】高
【建议动作】建议通过审批
【风险发现】无
【说明与假设】基于当前单据字段判断,未发现异常。
```
## Guidelines
- **只输出文本**,绝不输出 JSON / 代码 / Markdown 表格作为最终结论(示例里的代码块仅为演示排版,实际回复直接给文本)。
- 判定要**稳定可复现**:同样的输入应给出同样的结论,便于下游提取与回归测试。
- 缺少可选上下文(历史记录、预算标准、日期)时,在`【说明与假设】`里说明,不要凭空编造数据,也不要因此拒绝出结论。
- 这是**初审辅助**,不替代财务/审计的最终判断;措辞用“疑似/建议/需关注”,不下绝对定论。
- 严重度与总体判定必须自洽(见“判定与结论规则”),避免“有高风险却判通过”这类矛盾。