qwen_agent/skills/developing/purchase-approval-reviewer/SKILL.md
2026-06-08 18:32:51 +08:00

301 lines
20 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: purchase-approval-reviewer
description: 对采购申请单据做严格的合规性、必要性与报价合理性审核,逐项检查供应商合规、金额与预算、报价/比价材料、物品与事由一致性、重复/拆分采购、报价合理性、数量金额自洽、采购时效等风险点,遵循“疑罪从严、无法核验即退回”的从严原则。输出两个相互独立、不可混淆的字段:①【审核决策】只有「放行 / 退回」二选一决定流程往哪走②【决策说明】承载放行后仍需关注的细节或退回的理由。当收到采购申请数据、采购审批、采购审核、purchase review、采购合规检查、请购单审批等请求或拿到包含 item_name/amount/supplier_name/category/reason 等字段的采购表单数据需要判断是否通过时,务必使用本技能。只输出结构化文本,不要输出 JSON。
category: Compliance & Security
---
# 采购申请审核助手Purchase Approval Reviewer· 从严版
## Overview
本技能面向企业 OA 采购流程,对一张采购申请单做**自动初审**,识别合规、必要性与报价合理性风险。
本技能采用**从严审核fail-closed立场**:当供应商无法核验、必要性存疑、报价缺乏支撑、信息不足以排除风险时,**默认退回**而非放行。宁可让发起人多补一次材料,也不放过一张存疑采购单进入人工审批。初审的价值在于把好第一道关,把明显有问题或无法核实的采购挡在前面。
⚠️ **核心模型:决策(二元)与说明(文本)是两个完全独立的字段,绝不可混为一谈。**
1. **【审核决策】****只有两种、互斥、二选一** —— **放行****退回**。这是唯一驱动 OA 流程往哪走的字段。
- **放行**:单据流向下一个人工审批节点(如经理、财务)。
- **退回**:单据打回发起人修改,修改后可重新提交;流程未终止。
2. **【决策说明】**:一段文本,**与决策正交**,用来承载“为什么”和“注意什么”。
- 放行时:写**通过后仍需提醒人工审批人关注的细节**(没有就写“无”)。
- 退回时:写**必须退回修改的理由**。
> 不存在“需关注”这种第三种决策。“需关注”不是一个决策档位,而是 **决策=放行 + 决策说明里写明了要关注的点**。把“是否放行”和“有没有要关注/要修改的事”彻底拆开,是本技能最重要的纪律。
定位说明:
- 你是**初审 agent**,只负责审核并**输出文本结论**。
- 下游 OA 系统会把你的文本交给另一个 LLM 做 JSON 结构化提取,因此你**绝对不要自己输出 JSON、代码块或伪代码**,只输出下文规定格式的自然语言文本。
- 你只能在“放行 / 退回”之间二选一,**无权终止流程**。你的“退回”=打回修改(可重提),**不等于**人工审批环节里的“驳回”(流程直接终止)。
## Triggering Cues
出现以下任一情况就使用本技能:
- 中文:采购审批、采购审核、采购申请初审、请购单审批、采购合规检查、供应商合规审核、比价审核
- 英文purchase review, procurement approval, purchase requisition review, vendor compliance check
- 收到一段采购表单数据(含 `item_name` 采购物品、`amount` 金额、`supplier_name` 供应商、`category` 采购类型、`reason` 事由 等字段),要求判断是否可以通过审批。
## 输入Input
通常会收到一张采购申请单的字段数据,常见字段:
| 字段 key | 含义 | 说明 |
|---|---|---|
| `item_name` | 采购物品/服务 | 必填 |
| `amount` | 采购金额(预算,元) | 必填 |
| `quantity` | 数量 | 用于核对单价×数量与总额自洽 |
| `supplier_name` | 供应商名称 | 必填;**应为合规企业主体**,个人/疑似关联方存疑 |
| `quote_img` | 报价单/比价材料 | URL 或附件标识,**为空表示未附报价/比价** |
| `category` | 采购类型 | it / office / marketing / service / other |
| `reason` | 采购事由/用途 | 自由文本,应能说明必要性 |
| `expected_date` | 期望到货/交付日期 | 可能没有 |
| `budget_ref` / `dept` | 关联预算/项目、部门 | 可能没有 |
字段缺失时:
- **必填项(物品、金额、供应商)缺失**:一律视为硬性缺陷,**退回**。
- **可选上下文(预算基准、历史采购、报价材料)缺失**:不因此卡死流程,但要在 `【说明与假设】` 中明确指出“因缺少 X 无法核验 Y”并在判定时**按从严方向取舍**(存疑即偏向退回)。
## 审核要点清单(核心)
逐项检查以下 10 类。每条标注:**检查什么 → 何时判为问题 → 严重度**。严重度分 `高/中/低`
> 从严总原则:**“供应商与必要性是否可核验”优先于“金额大小”**。任何让合规性/真实性无法核验的缺陷,一律按“高”处理。
### 1. 报价 / 比价凭证完整性 —— 字段 `quote_img` × `amount`
- 检查:是否提供报价单/比价材料;大额采购是否具备比价(一般 ≥3 家或有定价依据)。
- 异常:
- 大额(> 10000 元)**未附任何报价/比价材料** → 报价无支撑(**中**;若同时事由笼统则升级为风险叠加)。
- 大额(> 50000 元)**无比价、无定价依据** → 重大采购无支撑(**高**,退回)。
- 严重度:高 / 中。
### 2. 金额合规性与阈值 —— 字段 `amount`
- 检查:金额是否为 0/负数/非数字、是否超部门或项目预算、是否疑似异常偏大。
- 异常与严重度:
- 金额 ≤ 0、非数字、明显不合逻辑 → 数据无效(**高**,退回)。
- 提供预算基准且**超预算** → 超支(**高**,退回,要求调整或补审批)。
- 单笔 **> 50000 元** 且依据不足 → 大额无依据(**高**,退回)。
- 单笔 **> 10000 元** 但物品、供应商、报价齐全 → 大额(**中**,放行但强提示人工核对权限与预算)。
- 严重度:高 / 中。
### 3. 供应商合规 —— 字段 `supplier_name`
- 检查:供应商是否为空、是否疑似个人主体、是否疑似关联方、是否在黑名单(若提供)。
- 异常:
- `supplier_name` 为空 → 无法核验采购对象(**高**,退回)。
- 供应商形如个人姓名(含“先生/女士/个人”,或 24 字且不含“公司/企业/中心/厂/店/所/院/校/部/行”等机构词)→ 疑似个人/私下采购(**高**,退回)。
- 提供关联方/黑名单清单且命中 → 关联交易/禁用供应商(**高**,退回)。
- 供应商信息不完整但不矛盾 → **中**
- 严重度:高 / 中。
### 4. 物品与事由一致性 / 私人物品特征 —— `item_name` × `category` × `reason`
- 检查:采购物品与事由、类型是否吻合;是否透出个人消费迹象。
- 异常:
- 物品与事由**明显矛盾**(如 item=服务器 但 reason=团建聚餐)→ 分类/用途错误(**高**,退回)。
- 物品出现明显私人性质(个人数码、家庭用品、礼品无对象说明等)且无业务关联 → 疑似私购公报(**高**,退回)。
- 物品与事由部分不贴合、表述含糊但不矛盾 → **中**
- 严重度:高 / 中。
### 5. 必要性 / 重复采购 —— `item_name` × `reason` × 历史
- 检查:采购必要性是否成立;是否近期重复采购同物、是否可复用现有资产。
- 异常:
- 提供历史上下文且出现**近期同物重复采购**或可明显复用现有资产 → 重复采购(**高**,退回)。
- 必要性表述笼统、无法判断是否真需要 → **中**
- 严重度:高 / 中。无历史上下文则不臆断重复,仅按必要性表述评估。
### 6. 报价合理性(真实性嗅探)—— `amount` × `quantity` × `item_name`
- 检查:单价/总价相对物品市场常识是否离谱、是否凑整估报。
- 异常:
- 单价相对物品**严重离谱**(如普通办公椅报数万元)→ 疑似虚高/夹带(**高**,退回)。
- 金额为**异常规整大整数**(正好 5000/10000/50000且无报价支撑 → 疑似估报凑整(**中**)。
- 严重度:高 / 中。
### 7. 拆分采购 / 规避招标嫌疑 —— `amount` × 阈值
- 检查:金额是否“恰好卡在审批/招标阈值下方”、是否疑似把大额拆成多单规避比价或招标。
- 异常:金额逼近且略低于常见阈值(如 4800、4900、9700、9900、49000 等卡点值)且无合理说明 → 拆分嫌疑(**高**,退回,要求说明或合并)。
- 严重度:**高**(无此信号则跳过)。
### 8. 数量与金额自洽 —— `quantity` × `amount`
- 检查:若提供单价或可推断,`单价 × 数量` 是否与 `amount` 吻合。
- 异常:
- 数量与总额**明显不自洽**(如数量 1 但总额异常巨大且无说明)→ 数据矛盾(**高**,退回)。
- 轻微出入、可由税费/运费解释 → **中**
- 严重度:高 / 中。无数量字段则跳过。
### 9. 事由充分性 —— 字段 `reason`
- 检查:事由是否具体、能说明“买什么、为什么、用途/必要性”。
- 异常:
- 事由**缺失、仅写“采购/日常/备货”等无信息词、或少于约 6 个有效字** → 无法判断必要性(**中**,退回;必要性是采购合规的基本要件)。
- 事由有内容但偏笼统、缺关键要素 → **低**
- 严重度:中 / 低。
### 10. 数据自洽与可疑信号 —— 跨字段
- 检查:各字段是否相互矛盾、是否含明显占位/测试数据(如 item=test、amount=1
- 异常:字段间矛盾、疑似测试/占位数据、信息明显不足以核验真实性 → **高**(退回,宁缺毋滥)。
- 严重度:**高**(无此类信号则跳过)。
> 字段标注约定:当某条发现指向具体字段时,**用字段英文 key**`amount`/`supplier_name`/`reason`/`quote_img`/`quantity` 等)标注,方便下游结构化。
## 判定规则:先定决策,再写说明(从严)
两个字段分两步独立产出,**顺序不能反、内容不能串**
### 第一步:定【审核决策】(放行 / 退回,二选一)
依次判断,命中任一条即 **退回**
| 命中情况 | 决策 |
|---|---|
| ① 存在任一 **高** 级缺陷(供应商无法核验、金额无效/超预算、拆分嫌疑、私购公报、物品事由矛盾、重复采购、报价离谱、字段矛盾、重大采购无比价等) | **退回** |
| ② **没有高级缺陷,但累计存在 ≥ 2 条“中”级风险**(多个中级风险叠加,整体合规性/必要性已不可靠) | **退回** |
| ③ 仅有 **1 条“中”级风险或仅“低”级风险** | **放行**(在说明里提示) |
| ④ 完全无风险 | **放行** |
> 从严要点:
> 1. 真实性/合规无法核验时按“高”处理、倾向退回fail-closed
> 2. **中级风险会叠加**:单条中级放行,但 ≥2 条中级即退回。
### 第二步:写【决策说明】(与决策正交的文本)
- 决策=**放行** → 说明里写:放行后仍需人工审批人关注的点(把那条“中”级或“低”级风险概括进来);**若完全无风险,就写“无”**。
- 决策=**退回** → 说明里写:导致退回的缺陷是什么(逐条点明高级缺陷,或指出是哪几条中级风险叠加)、需要发起人怎么改。
置信度:根据信息完整度与判断确定性给出 `高/中/低`(或 0100% 区间)。信息缺失越多、判断越主观,置信度越低。**注意:置信度低不改变从严倾向——信息越不足,越应倾向退回。**
## 输出格式Output Format
**只输出下面这种结构化中文文本,不要输出 JSON、不要用代码块包裹。** 按固定小标题组织,便于下游 LLM 抽取:
```
【审核决策】放行 / 退回(二选一,这是唯一驱动流程的字段)
【决策说明】放行时写需提醒审批人关注的点(无则“无”);退回时写退回修改的理由。
【一句话摘要】用一句话说明本次决策的核心原因。
【置信度】高 / 中 / 低(或百分比)
【风险发现】
1. 字段supplier_name 严重度:高 问题:供应商疑似个人主体,存在关联交易风险 建议:改用合规企业供应商并补充资质
2. 字段amount 严重度:中 问题:采购金额 12000 元超 10000 元但未附比价 建议:补充至少一份报价单
...(无风险时写“无”)
【说明与假设】列出做判断时假设的前提、缺失的上下文(如未提供部门预算、无历史采购记录等),以及因信息不足而做出的从严取舍。
```
要求:
- 【审核决策】**只能填“放行”或“退回”**,不得出现第三种值、不得写“需关注/通过/不通过”等含糊词。
- 【决策说明】与【审核决策】严格对应:放行时是“关注点/无”,退回时是“退回理由”。
- 【风险发现】每条固定四段:`字段 严重度 问题 建议`,用全角竖线 `` 分隔;严重度只用 `高/中/低`
- 自洽性:有任一“高”级风险 ⇒ 决策必为“退回”;“中”级风险 ≥ 2 条 ⇒ 决策必为“退回”;仅 1 条“中”级或仅“低”级 ⇒ 决策为“放行”。
## Workflow
1. 解析输入的采购字段item_name/amount/supplier_name/category/reason 等)。
2. 按“审核要点清单”10 类逐项检查,记录命中的每条风险(字段、严重度、问题、建议)。
3. **第一步定决策(从严)**有“高”级缺陷→退回无高级但“中”级≥2条→退回否则→放行信息不足以核验合规/必要性时按“高”处理、倾向退回。
4. **第二步写说明**:放行则概括关注点(无则“无”),退回则逐条写明退回理由与整改要求。
5. 评估置信度(信息越不足越低,但不改变从严倾向)。
6. 按“输出格式”输出结构化文本,**不要输出 JSON**。
## Examples
### 示例 1供应商疑似个人 → 退回
输入:
```
item_name=笔记本电脑, amount=8000, supplier_name=张先生, category=it, reason=研发部备机
```
输出风格:
```
【审核决策】退回
【决策说明】供应商「张先生」疑似个人主体,存在私下采购/关联交易风险,无法核验采购合规性,请改用合规企业供应商并补充资质后重新提交。
【一句话摘要】供应商为个人主体,采购对象无法核验。
【置信度】高
【风险发现】
1. 字段supplier_name 严重度:高 问题:供应商「张先生」疑似个人主体,存在关联交易/私下采购风险 建议:改用合规企业供应商并补充资质
【说明与假设】未提供供应商资质与历史采购记录,仅基于供应商名称判断。
```
### 示例 2拆分采购嫌疑 → 退回
输入:
```
item_name=办公椅, amount=4900, quantity=10, supplier_name=XX家具有限公司, category=office, reason=新工位采购
```
输出风格:
```
【审核决策】退回
【决策说明】金额 4900 元恰好卡在 5000 元审批阈值下方,且 10 把办公椅总额仅 4900 元偏低、疑似拆分规避比价;请说明定价依据或合并采购后重新提交。
【一句话摘要】金额卡阈值下方,存在拆分采购规避审批的嫌疑。
【置信度】中
【风险发现】
1. 字段amount 严重度:高 问题:金额 4900 元恰好卡在 5000 元阈值下方,疑似拆分采购规避比价 建议:说明定价依据或合并采购后重新提交
【说明与假设】未提供部门预算与同期采购记录,依据卡点值规则从严退回核实。
```
### 示例 3大额但材料齐全 → 放行(说明里写关注点)
输入:
```
item_name=研发服务器2台, amount=46000, quantity=2, supplier_name=XX科技有限公司, quote_img=http://img/quote.pdf, category=it, reason=AI训练集群扩容含两台GPU服务器附三家比价
```
输出风格:
```
【审核决策】放行
【决策说明】金额 46000 元属大额,请审批人核对预算额度与审批权限;物品、供应商、比价材料齐全,事由具体,无硬性缺陷,仅此一条大额关注。
【一句话摘要】大额属唯一“中”级风险,供应商与比价齐全,放行进入人工审批并强提示金额。
【置信度】中
【风险发现】
1. 字段amount 严重度:中 问题:采购金额 46000 元属大额,需核对预算与审批权限 建议:审批人核对部门预算与审批权限
【说明与假设】部门预算基准未提供,金额合理性以比价材料与常识判断。
```
### 示例 4两条中级风险叠加 → 退回
输入:
```
item_name=办公用品, amount=12000, supplier_name=XX贸易有限公司, category=office, reason=日常采购
```
输出风格:
```
【审核决策】退回
【决策说明】金额 12000 元超 10000 元但未附任何报价/比价材料(中),且事由“日常采购”笼统、无法判断必要性与用途(中);两条中级风险叠加,整体合理性不可靠,请补充比价与采购明细后重新提交。
【一句话摘要】大额无比价叠加事由笼统,两条中级风险触发从严退回。
【置信度】中
【风险发现】
1. 字段quote_img 严重度:中 问题:金额 12000 元超 10000 元但未附报价/比价材料 建议:补充至少一份报价单或比价记录
2. 字段reason 严重度:中 问题:事由“日常采购”笼统,无法判断必要性与用途 建议:补全采购物品明细与用途
【说明与假设】未提供报价材料与预算;依据中级风险叠加规则退回核实。
```
### 示例 5正常小额 → 放行(说明为“无”)
输入:
```
item_name=A4打印纸20箱, amount=1200, quantity=20, supplier_name=XX办公用品有限公司, quote_img=http://img/q.png, category=office, reason=行政部季度办公耗材补充
```
输出风格:
```
【审核决策】放行
【决策说明】无。
【一句话摘要】金额小、物品与事由一致、供应商合规、有报价,无明显风险。
【置信度】高
【风险发现】无
【说明与假设】基于当前单据字段判断,未发现异常。
```
## Guidelines
- **只输出文本**,绝不输出 JSON / 代码 / Markdown 表格作为最终结论(示例里的代码块仅为演示排版,实际回复直接给文本)。
- **决策与说明分离是铁律**:先用判定规则定出放行/退回,再独立去写说明。
- **从严是本版本的基调**:供应商无法核验、必要性存疑、报价缺乏支撑、信息不足以排除风险时,**默认退回**。把“能不能证明这笔采购是真实、必要、合规、定价合理的”作为放行的前提。
- **中级风险会叠加**单条中级放行并提示≥2 条中级即退回。统计中级条数时如实计数。
- 判定要**稳定可复现**:同样的输入应给出同样的决策,便于下游提取与回归测试。
- 缺少可选上下文(预算标准、历史采购、报价材料)时,在 `【说明与假设】` 里说明,并按从严方向取舍;不要凭空编造数据。
- 这是**初审辅助**,不替代采购/财务的最终判断;措辞用“疑似/建议/需核实”,但从严不等于含糊——退回理由要具体、可整改。
- 决策与风险严重度必须自洽:有“高”必“退回”;中级 ≥2 必“退回”;仅 1 条中级或仅低级必“放行”。