Files
X-Financial/document/development/附件上传风险前置复核/CONCEPT.md
caoxiaozhu f60cebadb8 feat: 小财管家意图规划与报销提交编排增强
- 完善管家意图识别、模型计划构建与规划器调度
- 重构差旅报销提交编排器与管家计划流程前端交互
- 优化报销消息项样式与文档中心视图
- 新增小财管家与附件上传风险前置复核设计文档
- 补充管家规划器与文档中心测试覆盖
2026-06-04 14:25:14 +08:00

87 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 附件上传风险前置复核
## 功能一句话
报销附件上传并完成 OCR 识别后立即执行完整风险复核,提交审批时只做轻量最终校验、预算占用和流程流转。
## 背景与问题
当前报销单提交阶段会同步执行较重的风险检查,包括附件风险汇总、差旅规则、场景规则、规则中心风险、历史行为统计和风险观测写入。用户在点击提交后会等待较长时间,容易误认为页面卡住。
风险的主要依据来自已上传票据、OCR 识别结果、费用明细、关联申请单和员工历史行为。这些数据在附件上传完成后已经基本具备,因此完整风险复核应前移到上传完成阶段。
## 目标与非目标
目标:
- 附件上传成功后自动刷新费用明细、附件风险、差旅/场景/规则中心风险和 AI 预审标识。
- 风险复核结果写回 `claim.risk_flags_json`,并持久化规则中心风险观测。
- 提交阶段不再重复跑完整 `_run_ai_submission_review()`
- 提交阶段只保留草稿完整性校验、预算占用、未处理阻断风险判断、状态流转、审计日志和助手会话清理。
非目标:
- 不新增业务字段。
- 不改变现有风险规则语义。
- 不把提交改成真正的后端异步任务队列。
## 用户与场景
- 报销申请人:上传票据后立即看到风险建议和需补充说明,不必等到提交时才发现问题。
- 直属领导和财务人员:收到单据时可看到提交前已生成的风险提示和用户处理结果。
- 系统管理员:风险观测仍可进入后台统计。
## 功能能力
上传完成后:
- 根据 OCR 结果回填费用明细类型、日期、金额、事由等已有字段。
- 刷新附件级 `attachment_analysis` 风险。
- 执行报销级风险复核,并生成 `ai_pre_review` 状态。
- 对规则中心命中的风险写入 `risk_observations`
提交审批时:
- 如果存在高风险且用户未处理,继续阻止提交或要求说明/按职级测算。
- 如果风险已处理,只做预算和流程流转。
- 不再重复生成一套提交阶段风险。
## 方案设计
后端:
-`ExpenseClaimService.upload_claim_item_attachment()`OCR、附件分析和 `_sync_claim_from_items()` 完成后,调用上传后风险复核 helper。
- 新增 helper 复用现有 `_run_ai_submission_review()``_replace_ai_pre_review_flag()`,但保持单据状态为草稿。
- 提交阶段读取既有风险结果,只做最终阻断风险判断,不重复调用 `_run_ai_submission_review()`
前端:
- 继续使用当前附件识别中的状态条。
- 上传完成后通过接口返回的 `claim_risk_flags` 更新 AI 建议区和风险标识。
- 提交时只显示轻量后台提交流程提示。
## 算法与公式
当前功能不涉及新的显式数学公式。风险评分和风险等级沿用现有规则中心、附件分析、差旅政策和风险观测逻辑。
## 测试方案
- 后端单元测试:附件上传后写入 `ai_pre_review``submission_review` 风险。
- 后端单元测试:提交阶段不再调用完整 `_run_ai_submission_review()`
- 后端单元测试:上传后规则中心风险可写入 `risk_observations`
- 前端静态回归:提交确认仍为后台提交,不恢复阻塞弹窗。
- 构建验证:`npm.cmd --prefix web run build`
## 指标与验收
- 上传附件后,接口响应的 `claim_risk_flags` 包含最新复核结果。
- 提交接口耗时不再包含完整风险复核耗时。
- 提交后审批人仍能看到已前置生成的风险提示。
- 后端和前端相关回归测试通过。
## 风险与开放问题
- 如果用户上传后又修改费用明细,现有 `update_claim_item()` 需要继续刷新附件风险和报销级风险。
- 如果用户没有上传附件直接提交,提交阶段仍需要保留兜底风险复核或阻断提示。
- 未来可进一步把上传后复核做成真正后台任务,但本次先保持同步接口返回最新风险结果。