feat: 本体字段治理与风险规则模板执行器重构

- 新增本体字段注册表与字段治理审计脚本
- 重构风险规则模板执行器、DSL 验证与清单分类器
- 完善票据夹服务与差旅请求详情页交互
- 优化趋势图表与总览页数据展示
- 增强报销平台风险分级与模拟公司筛选
- 补充本体字段、风险规则生成与票据夹服务测试覆盖
This commit is contained in:
caoxiaozhu
2026-06-03 15:46:56 +08:00
parent e12b140508
commit 34457f9c3e
81 changed files with 4858 additions and 1073 deletions

View File

@@ -0,0 +1,78 @@
# 本体字段治理
## 背景
当前费用申请、报销助手、单据详情、风险规则和预算控制中存在字段口径不一致的问题。例如同一语义在不同环节被命名为 `transport_type``transport_mode``application_transport_mode`,或 `occurred_date``business_time``time_range`。这些字段如果不先进入本体层,会导致语义识别、规则判断、草稿保存和前端展示各自解释同一业务事实。
## 原则
所有业务字段必须先设计为本体字段,再下放到业务模块使用。
- 本体字段注册表是唯一字段源。
- 业务层只允许消费本体 canonical 字段。
- 非本体字段只能作为输入别名,必须在语义入口归一。
- 页面控件字段、兼容字段、后端历史字段不能直接进入业务判断。
- 新增业务字段时,必须先更新本体字段设计,再更新表单、助手上下文、持久化、风险规则和测试。
## 当前第一阶段范围
第一阶段先治理费用申请和报销链路:
- 个人工作台意图识别。
- 费用申请预览和提交。
- 报销助手快速发起报销。
- 关联申请单生成报销草稿。
- 报销详情智能录入和附件归集。
- AI 预审、风险规则、审批流和预算流。
## 字段分层
本体 canonical 字段:
- `expense_type`
- `time_range`
- `location`
- `reason`
- `amount`
- `transport_mode`
- `attachments`
- `customer_name`
- `merchant_name`
- `participants`
- `application_claim_id`
- `application_claim_no`
- `application_days`
- `application_date`
- `application_lodging_daily_cap`
- `application_subsidy_daily_cap`
- `application_transport_policy`
- `application_policy_estimate`
输入兼容别名:
- `transport_type``transportMode``application_transport_mode` -> `transport_mode`
- `occurred_date``business_time``application_business_time` -> `time_range`
- `business_location``application_location` -> `location`
- `reason_value``business_reason``application_reason` -> `reason`
- `attachment_names` -> `attachments`
- `reimbursement_type``scene_label` -> `expense_type`
## 非合规判断
以下情况视为字段不合规:
- 新业务流程直接新增 `context_json` 字段但没有进入本体注册表。
- 风险规则读取未注册字段。
- 前端 `review_form_values` 输出页面控件字段。
- 后端服务用别名字段做业务判断,而不是先归一成本体字段。
- 同一业务事实在申请、报销、审批、预算中使用不同字段名。
## 验收口径
完成后应满足:
- 语义层能从上下文中生成统一本体实体。
- 报销助手关联申请单后不再因为字段别名丢失追问出行方式。
- `review_form_values` 对外输出本体字段,不输出页面别名字段。
- 后端测试覆盖别名归一到本体字段。
- 前端测试覆盖快速报销和核对抽屉只输出本体字段。