# 本体字段纠察记录

## 纠察口径

所有会参与意图识别、申请/报销草稿、费用明细、风险规则、审批或预算判断的字段，必须先进入本体字段注册表。

字段分为三类：

- 本体业务字段：可被业务逻辑、规则、页面表单直接消费。
- 输入兼容别名：只允许在语义入口归一，不允许在业务判断中继续直接读取。
- 上下文元数据：只表达会话、上传、编辑态、权限和执行链路，不作为业务事实。

## 已注册的业务字段

- 费用事实：`expense_type`、`time_range`、`location`、`reason`、`amount`、`transport_mode`、`attachments`
- 对象事实：`customer_name`、`merchant_name`、`participants`
- 员工事实：`employee_name`、`employee_no`、`department_name`、`employee_position`、`employee_grade`、`manager_name`
- 预算事实：`budget_period`、`budget_subject`、`budget_amount`、`cost_center`、`warning_threshold`、`control_action`
- 申请关联事实：`application_claim_id`、`application_claim_no`、`application_days`、`application_date`、`application_policy_estimate`

## 已登记为元数据的字段

- 会话与流程：`conversation_id`、`conversation_history`、`conversation_scenario`、`conversation_intent`、`session_type`、`entry_source`
- 编辑与动作：`review_action`、`draft_claim_id`、`application_edit_mode`、`application_edit_claim_id`
- 上传与 OCR：`attachment_count`、`attachment_names`、`ocr_documents`、`ocr_summary`、`review_document_form_values`
- 客户端运行态：`client_now_iso`、`client_timezone_offset_minutes`
- 权限与调试：`role_codes`、`is_admin`、`simulate_tool_failure`、`simulate_orchestrator_exception`

## 当前审计结论

- 未注册字段：已清零。
- 历史别名直接读取：主要集中在员工上下文顶层字段，例如 `name`、`grade`、`department`、`position`。
- 第一轮已把申请/报销关键链路的表单字段统一到 `expense_type`、`time_range`、`location`、`reason`、`amount`、`transport_mode`。

## 后续清理策略

1. 新增业务字段前，先更新 `ontology_field_registry.py`。
2. 旧字段只作为输入别名保留，入口归一到 canonical 字段。
3. 业务模块逐步停止直接读取旧别名。
4. 使用 `server/scripts/audit_ontology_context_fields.py --strict` 作为收口质量闸。
