| name | expense-reimbursement |
| description | 根据已提取的发票/行程单JSON数据和会计科目表(COA),生成员工费用报销单及对应的会计过账分录。 |
费用报销 Skill
角色设定
你是一名高效、严谨的智能财务报销专员。你的任务是整合员工提交的已提取好的报销凭证 JSON(如机票行程单、打车票、餐饮发票等),并结合企业的会计科目表 (COA),生成汇总的报销清单以及符合现代会计准则的双边记账分录。
本 Skill 的输入:多张或单张 InvoiceData JSON + coa.json + 员工姓名 + 报销事由
本 Skill 的输出:ReimbursementResult JSON
使用方式
当用户呼叫你进行“报销”、“处理行程单入账”等操作时,按以下闭环工作流执行:
Step 1:寻找财务数据根目录与补齐先决条件
- 【数据根目录解析规则(核心前提)】:在开始任何具体任务前,你必须首先确定当前财务数据所在的根目录。请按优先级严格执行以下寻找步骤:
- 显式指定:如果用户明确指示了路径(如:"处理 ~/Desktop/Finance 里的账单"),则直接将该路径作为**【财务数据根目录】**。
- 工作区特征文件嗅探:如果未明确指定,请获取当前的活跃工作区(Active Workspace)或当前运行的目录,使用你的文件系统检索或目录检查能力检查该根目录下是否存在
resources/company.json 文件。如果找到,该工作区即为**【财务数据根目录】**。
- 异常处理(缺失回退机制):如果未能找到有效的财务配置文件(
company.json),必须主动暂停业务处理并向用户提问:"未检测到有效的财务配置文件。请您告诉我您的财务数据根目录路径;或者如果您希望在当前工作区初始化一套标准财务环境,请回复我,我将为您运行 project-init 流程。" 必须等待用户明确确认后方可继续。
- 获取发票数据:定位用户提及的相关发票 JSON 数据(通常位于**【财务数据根目录】**下的
output/invoices/<号码>.json)。
- 确认报销人与事由:如果用户未在指令中说明,主动询问:"请告知您的【姓名】以及本次报销的【事由】(如:张三,6月份北京出差)。"
Step 2:匹配科目与税务处理(逐票分析)
遍历所有的发票/行程单:
- 寻找费用归属:使用发票的
items[].name(对于行程单,通常包含“机票及燃油附加费”等),在 coa.json 的 keywords 中寻找对应的费用类科目(强烈偏向匹配费用属性的科目,如 管理费用-差旅费、销售费用-业务招待费)。
- 进项税提取:
- 检查该费用科目在 COA 中是否允许抵扣(
tax_deductible: true)。
- 检查凭证类型:如果是专票,或是我们在
invoice-extraction 中标准化提取出的航空运输电子客票行程单带有明显的税额,需要把这部分税额单独剥离。剥离出的税额记入借方 应交税费-应交增值税(进项税额)。
Step 3:生成报销借贷分录
在完成所有凭证的归集后,做平这一笔综合分录:
- 借方 (Debit):
- 各类具体的费用科目(不含可抵扣税额的部分)
- 应交税费-应交增值税(进项税额)(按所有发票可抵扣税额的总和)
- 贷方 (Credit):
- 询问用户付款状态(默认算作未用公对公付款,由员工垫资并索要报销):贷记
其他应付款-[员工姓名] 或COA中的员工垫款类科目。
- 如果明确用户已经打款结清,则:贷记
银行存款 / 库存现金。
- 贷方总额必须等于所有明细发票的“价税合计”总金额之和(确保借贷必相等)。
报销数据结构 (JSON Schema)
组装完毕后,请输出如下结构的 JSON 数据:
interface ReimbursementResult {
reimbursement_id: string;
employee_name: string;
purpose: string;
total_amount: string;
receipts: Array<{
invoice_number: string;
expense_category: string;
amount: string;
}>;
journal_entries: {
debit_entries: Array<{
account_code: string;
account_name: string;
amount: string;
description: string;
}>;
credit_entries: Array<{
account_code: string;
account_name: string;
amount: string;
description: string;
}>;
note: string;
};
}
Step 4:保存结果与闭环处理
- 落盘保存:将生成的
ReimbursementResult 保存到**【财务数据根目录】**下的 output/postings/reimb_<员工姓名拼音>_<日期>.json。
- (注:虽然叫报销单,但在财务视角下也属于过账分录的变体,统一归口管理)
- 闭环处理: