shiqkuangsan

personal:expense-receipt

"AI 订阅报销统计。识别收据+发票,自动匹配最优发票组合,输出统计表和报销备注。触发词:报销统计、收据识别、统计报销、AI 订阅费用"

shiqkuangsan 16 4 Updated 3mo ago

Resources

1
GitHub

Install

npx skillscat add shiqkuangsan/oh-my-daily-skills/personal-expense-receipt

Install via the SkillsCat registry.

SKILL.md

AI 订阅报销统计

识别收据和发票,自动计算报销金额,智能选择最优发票组合,输出统计报告和报销备注。

参数

参数 必填 说明
收据目录 包含收据文件(PDF/PNG)的目录
发票目录 包含发票文件的目录,默认为收据目录的同级 发票 目录
USD 汇率 USD/CNY 汇率,未提供则自动获取
TRY 汇率 TRY/CNY 汇率,未提供则自动获取

示例:

  • 报销统计 /path/to/原始收据 美元汇率 6.937 土耳其汇率 0.1595

目录结构

{月份目录}/
  原始收据/                        ← 收据文件 + 收据统计 md
  发票/                            ← 发票文件 + 发票统计 md

支持的币种

币种 符号 格式
美元 USD $ $20.00
土耳其里拉 TRY ₺499,99(逗号是小数点)

工作流程

1. 获取汇率

优先使用用户指定汇率,否则运行脚本自动获取:

python3 scripts/get_exchange_rates.py

汇率获取失败时使用默认值:USD=6.957, TRY=0.160

2. 识别收据

  • 列出收据目录下所有 .pdf.png 文件
  • 使用 Read 工具逐个读取
  • 支持产品:Cursor、Claude、ChatGPT、Windsurf、OpenRouter、Trae、Apple 等

识别字段:

字段 来源
人员 Customer Name / Bill to / 文件名中的人名
产品 订阅产品名称
金额 原始金额和币种
日期 Receipt Date / Date paid / Invoice Date

去重规则:同一人员 + 同一日期 + 同一金额 = 同一笔交易(Invoice 和 Receipt 只计一次)

3. 识别发票

  • 列出发票目录下所有 .pdf 文件
  • 使用 Read 工具逐个读取
  • 识别:发票号码、类型(餐饮/加油等)、销售方、价税合计金额(含税)、开票日期

4. 智能发票匹配

计算收据报销总额(RMB),然后从发票中选择最优组合:

选择策略(发票多余时)

  1. 按开票日期从旧到新排序
  2. 同日期的按金额从小到大排序
  3. 依次累加,直到总额 >= 报销总额
  4. 未选中的发票标注为"多余"

结果判定

  • 发票总额 >= 报销总额 → 够用,输出选中的发票
  • 发票总额 < 报销总额 → 不够,提示差额

5. 输出统计

5.1 收据统计(写入收据目录)

文件名:{年}年{月}月AI订阅报销统计.md

# {年}年{月}月 AI 订阅报销统计

> 汇率:USD/CNY = {rate_usd},TRY/CNY = {rate_try}

## 收据明细

| 文件 | 人员 | 产品 | 金额 | RMB | 日期 |
| ---- | ---- | ---- | ---- | --- | ---- |

## 按人汇总

| 人员 | 原始金额 | RMB |
| ---- | -------- | --- |

## 汇总

| 币种 | 金额 | RMB |
| ---- | ---- | --- |

**总计:¥{total} RMB({n}人)**

5.2 发票统计(写入发票目录)

文件名:{年}年{月}月报销发票统计.md

# {年}年{月}月 报销发票统计

## 选用发票

| 文件 | 类型 | 销售方 | 价税合计 | 开票日期 |
| ---- | ---- | ------ | -------- | -------- |

**发票合计:¥{invoice_total}**

## 多余发票(未使用)

| 文件 | 类型 | 价税合计 | 开票日期 |
| ---- | ---- | -------- | -------- |

(无多余发票时省略此节)

## 对比

| 项目     | 金额                 |
| -------- | -------------------- |
| 报销总额 | ¥{receipt_total}     |
| 发票总额 | ¥{invoice_total}     |
| 差额     | ¥{diff}(多余/不足) |

6. 生成报销备注

输出一段可直接复制的备注文本:

餐饮票+油票,附件是 {产品列表} 等 AI 工具的收据,根据当前美元汇率 {rate_usd},土耳其里拉汇率 {rate_try},计算总计 {usd_total} 刀 + {try_total} 里拉 折合约 {rmb_total} 元人民币。
  • 产品列表:从收据中提取的去重产品名,如 Cursor、Claude、Windsurf、ChatGPT、OpenRouter
  • 如果只有 USD 没有 TRY,则省略里拉部分

注意事项

  • 金额保留 2 位小数
  • 土耳其里拉:₺499,99 = 499.99(逗号是小数点)
  • 发票金额统一使用价税合计(含税金额)
  • 无法识别的收据/发票标注"无法识别"并提醒用户