Files
X-Financial/document/development/agent plan/14_financial_document_canonical_model.md

2.2 KiB
Raw Blame History

财务单据标准模型

1. 为什么需要标准模型

OCR、MCP、用户填写、业务数据库可能都描述同一张发票但字段名和格式不同。

如果没有标准模型:

  • 规则无法复用。
  • Agent 难以解释。
  • Hermes 难以批量统计。
  • MCP 返回结果难以合并。

2. 标准对象

第一版建议定义这些对象:

Invoice
Receipt
ReimbursementRequest
PaymentRequest
BankTransaction
Contract
Customer
Vendor
Employee
CostCenter

3. Invoice 标准模型

{
  "invoice_id": "",
  "invoice_code": "",
  "invoice_number": "",
  "invoice_type": "",
  "seller_name": "",
  "seller_tax_no": "",
  "buyer_name": "",
  "buyer_tax_no": "",
  "issue_date": "",
  "total_amount": 0,
  "tax_amount": 0,
  "currency": "CNY",
  "verify_status": "",
  "ocr_confidence": 0,
  "source_document_id": ""
}

4. ReimbursementRequest 标准模型

{
  "request_id": "",
  "request_no": "",
  "employee_id": "",
  "department_id": "",
  "expense_type": "",
  "amount": 0,
  "currency": "CNY",
  "status": "",
  "submitted_at": "",
  "approval_stage": "",
  "invoices": [],
  "attachments": [],
  "risk_flags": []
}

5. BankTransaction 标准模型

{
  "transaction_id": "",
  "bank_account": "",
  "transaction_date": "",
  "amount": 0,
  "currency": "CNY",
  "counterparty_name": "",
  "summary": "",
  "matched_object_type": "",
  "matched_object_id": "",
  "match_status": ""
}

6. 字段来源优先级

建议优先级:

人工确认字段
  > MCP 验真字段
  > 业务系统字段
  > OCR 字段
  > LLM 推断字段

LLM 推断字段必须标记来源和置信度。

7. 与语义本体关系

语义本体识别的是用户意图和对象。

标准模型承载对象的结构化字段。

ontology.entities[].type = invoice
  -> 映射到 Invoice 标准模型

8. 开发阶段建议

Step 1: 定义 Invoice 标准模型
Step 2: 定义 ReimbursementRequest 标准模型
Step 3: OCR 输出映射到 Invoice
Step 4: MCP 输出映射到 Invoice
Step 5: 规则中心基于标准模型执行
Step 6: 扩展 AR/AP 标准模型
Step 7: 建立字段血缘和置信度