Skip to main content

2-实体关系

概览

目录:doc/product/financial/relations

该模块通过关系 JSON 定义了发票、费用单、发票文件、员工、部门、交易对手及风险相关实体之间的关联,用于:

  • 在查询层支持跨表联结(如「某员工最近 30 天的所有发票」)
  • 为视图、指标与规则引擎提供统一的关系语义

初始化脚本 init/init.py 中的 init_relations 会将这些关系通过 /metadata/relations/batch 一次性写入元数据服务。

发票风控关系:invoice_risk_relations.json

文件:relations/invoice_risk_relations.json

该文件集中描述了发票风控相关的所有实体关系。

完整 JSON:

[
{
"name": "fin_expenses_belongs_to_employee",
"from": "fin_expenses",
"to": "fin_employees",
"relationType": "MANY_TO_ONE",
"keys": { "employee_id": "id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_expenses_belongs_to_department",
"from": "fin_expenses",
"to": "fin_departments",
"relationType": "MANY_TO_ONE",
"keys": { "dept_id": "id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_employees_belongs_to_department",
"from": "fin_employees",
"to": "fin_departments",
"relationType": "MANY_TO_ONE",
"keys": { "dept_id": "id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_expense_lines_belongs_to_expense",
"from": "fin_expense_lines",
"to": "fin_expenses",
"relationType": "MANY_TO_ONE",
"keys": { "expense_id": "id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_expense_invoice_links_belongs_to_expense",
"from": "fin_expense_invoice_links",
"to": "fin_expenses",
"relationType": "MANY_TO_ONE",
"keys": { "expense_id": "id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_expense_invoice_links_belongs_to_invoice",
"from": "fin_expense_invoice_links",
"to": "fin_invoices",
"relationType": "MANY_TO_ONE",
"keys": { "invoice_id": "id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_expense_invoice_links_belongs_to_invoice_file",
"from": "fin_expense_invoice_links",
"to": "fin_invoice_files",
"relationType": "MANY_TO_ONE",
"keys": { "invoice_file_id": "id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_invoice_details_belongs_to_invoice",
"from": "fin_invoice_details",
"to": "fin_invoices",
"relationType": "MANY_TO_ONE",
"keys": { "invoice_id": "id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_invoices_belongs_to_seller_counterparty",
"from": "fin_invoices",
"to": "fin_counterparties",
"relationType": "MANY_TO_ONE",
"keys": { "seller_tax_id": "tax_id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_invoices_belongs_to_buyer_counterparty",
"from": "fin_invoices",
"to": "fin_counterparties",
"relationType": "MANY_TO_ONE",
"keys": { "buyer_tax_id": "tax_id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_rule_hits_belongs_to_expense",
"from": "fin_rule_hits",
"to": "fin_expenses",
"relationType": "MANY_TO_ONE",
"keys": { "expense_id": "id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_rule_hits_belongs_to_invoice",
"from": "fin_rule_hits",
"to": "fin_invoices",
"relationType": "MANY_TO_ONE",
"keys": { "invoice_id": "id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_risk_assessments_belongs_to_expense",
"from": "fin_risk_assessments",
"to": "fin_expenses",
"relationType": "MANY_TO_ONE",
"keys": { "expense_id": "id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_review_cases_belongs_to_expense",
"from": "fin_review_cases",
"to": "fin_expenses",
"relationType": "MANY_TO_ONE",
"keys": { "expense_id": "id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_review_actions_belongs_to_case",
"from": "fin_review_actions",
"to": "fin_review_cases",
"relationType": "MANY_TO_ONE",
"keys": { "case_id": "id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_ai_explanations_belongs_to_expense",
"from": "fin_ai_explanations",
"to": "fin_expenses",
"relationType": "MANY_TO_ONE",
"keys": { "expense_id": "id" },
"defaultJoin": "LEFT",
"isActive": true
},
{
"name": "fin_ai_explanations_belongs_to_invoice",
"from": "fin_ai_explanations",
"to": "fin_invoices",
"relationType": "MANY_TO_ONE",
"keys": { "invoice_id": "id" },
"defaultJoin": "LEFT",
"isActive": true
}
]

这些关系为后续的查询、指标、规则评估与风控分析提供了统一的联结语义,是整个发票风控数据层的骨架。