Files
X-Financial/document/development/hermes-risk-graph-algorithm/TODO.md
caoxiaozhu 92444e7eae feat: 扩展风险规则体系、审批动态路由与预算中心列表化改造
- 新增 25+ 条风险规则(预算/报销/申请/通用类),完善风险规则模拟与反馈发布机制
- 引入费用审批动态路由、平台风险分级、预审与风险阶段管理
- 预算中心列表化改造,优化票据夹仪表盘与数字员工工作看板
- 新增 Hermes 风险线索收集器、Agent 链路追踪中心
- 扩展数字员工能力库(18 个领域 Skill)与交通费用自动预估
- 完善报销申请快速预览、权限控制与前端测试覆盖
2026-06-01 17:07:14 +08:00

33 KiB
Raw Blame History

数字员工财务行为图谱风险算法开发 TODO

更新日期2026-05-30

1. 调研与契约

  • 梳理现有风险相关数据来源报销单、费用明细、票据、审批记录、规则命中、AgentRun、ToolCall、语义解析日志。[CONCEPT: 背景与问题] 证据:RISK_SOURCE_AND_MOAT.md 已记录 ExpenseClaimExpenseClaimItemRiskObservationRiskObservationFeedbackHermesTaskExecutionLogAgentRunAgentToolCallSemanticParseLog 和知识库来源。
  • 梳理现有数字员工技能和工作记录模型,确认员工技能详情、工作记录详情、知识制度记录详情的边界。[CONCEPT: 非目标] 证据:DigitalEmployeesView.vue 保持员工技能/工作记录页签,DigitalEmployeeWorkRecords.vue 负责完整详情页,AuditDigitalEmployeeDetail.vue 不引入知识图谱组件。
  • 梳理分析看板现有数据来源和页面结构,确认风险看板作为独立页签的接入方式。[CONCEPT: 分析看板风险看板] 证据:TopBar.vue 的分析看板下拉已新增 riskOverviewView.vue 已按 dashboard=risk 渲染独立风险看板。
  • 定义 RiskObservation 后端字段、状态枚举、来源枚举和 JSON 字段结构。[CONCEPT: 统一风险观察模型] 证据:server/src/app/models/risk_observation.pyserver/src/app/schemas/risk_observation.py 已实现。
  • 定义图谱节点和边的最小字段,不急于引入图数据库。[CONCEPT: 实体图谱层] 证据:RiskGraphNode.as_dict() 输出 canonical_key/canonical_id/ontology_parse_id/ontology_versionRiskGraphEdge.as_dict() 输出 source/evidence/metadata,后端算法测试已覆盖。
  • 定义单据详情风险证据链响应结构。[CONCEPT: API 契约建议] 证据:riskObservations.js 已归一单据风险观察字段,详情组件读取 /risk-observations/claim/{claim_id}
  • 定义风险看板聚合响应结构。[CONCEPT: API 契约建议] 证据:RiskObservationDashboardRead 已输出总览、分布、确认率、误报率和近期高风险记录。
  • 定义数字员工工作记录关联风险观察响应结构。[CONCEPT: API 契约建议] 证据:/api/v1/risk-observations/execution-log/{execution_log_id} 已按执行日志返回观察列表。
  • 明确不可复制壁垒资产清单:专有本体、对象中心事件日志、风险观察反馈池、人机共审行为数据、可回放评测资产。[CONCEPT: 不可复制壁垒设计] 证据:RISK_SOURCE_AND_MOAT.md 已明确专有本体、对象中心事件日志、风险观察反馈池、人机共审行为、可回放评测、实体标准化和可解释决策资产。

1.1 公开竞品资料校准

  • 复核用友公开资料中的端到端费控链路,确认 X-Financial 是否需要覆盖事前申请、商旅预订、报销提交、审批、付款、归档各阶段。[CONCEPT: 公开竞品资料借鉴] 证据:PUBLIC_COMPETITOR_REFERENCE.md 已记录用友公开资料中的事前申请、商旅预订、报销、审批、结算、分析和归档链路,并映射到 ObjectCentricEventRiskObservationRiskDataLineage
  • 复核用友公开资料中的规则模板、预算刚柔控制、信用抽审和商旅推荐能力,映射为 PolicyTemplateLibraryPreControlRecommenderRiskSamplingPlanner。[CONCEPT: 用友费用可借鉴模式] 证据:PUBLIC_COMPETITOR_REFERENCE.md 已将规则模板、预算刚柔控制、信用抽审和商旅推荐映射为 PolicyTemplateLibraryPreControlRecommenderRiskSamplingPlannerProfileBaselineUpdater
  • 复核合思公开资料中的 AI 审核、人机共审、多凭证校验、时空推理和低置信度转人工能力,映射为 MultiEvidenceReconcilerSpatioTemporalRiskEngineHumanInLoopAutomationGate。[CONCEPT: 合思费控可借鉴模式] 证据:PUBLIC_COMPETITOR_REFERENCE.md 已将合思公开资料中的 AI 审核、人机共审、多凭证和时空校验映射为 HumanInLoopAutomationGateDecisionTraceMultiEvidenceReconcilerSpatioTemporalRiskEngineRiskDataQualityGate
  • 明确竞品资料只作为产品能力和方法论参考,不能作为内部算法实现依据。[CONCEPT: 资料边界] 证据:PUBLIC_COMPETITOR_REFERENCE.md 已写明只使用公开资料做产品能力和方法论校准,不推断竞品内部算法实现。
  • 把竞品借鉴项转成 X-Financial 自有数据、可解释算法、可审计证据和可回放测试,不直接复制竞品页面或术语。[CONCEPT: 对当前方案的补强] 证据:PUBLIC_COMPETITOR_REFERENCE.md 已把竞品能力转译为自有财务本体、对象中心事件日志、画像基线、反馈池、回放集和解释资产。

1.2 本体与风险图谱桥接

  • 梳理现有 /api/v1/ontology/parseSemanticParseLogscenariointententitiesrisk_flagsmissing_slots 的当前字段和落库方式。[CONCEPT: 本体与风险图谱桥接] 证据:RISK_SOURCE_AND_MOAT.md 已记录 OntologyParseRequest/OntologyParseResult 字段,以及 AgentRun.ontology_jsonSemanticParseLog.*_json 落库方式。
  • 定义本体输出进入风险图谱的最小协议:ontology_parse_idontology_versiondomainscenariointententitiesconstraintsrisk_signalsconfidence。[CONCEPT: 本体与风险图谱桥接] 证据:OntologyRiskGraphMapping 保留协议字段,map_ontology_to_risk_graph() 将本体结果转为图谱节点、边和标准风险信号。
  • 定义本体实体到图谱节点的映射表,例如 expense_type -> expense_typedocument_type -> invoice / expense_claimrisk_signal -> risk_observation / risk_signal。[CONCEPT: 本体与风险图谱桥接] 证据:ONTOLOGY_NODE_TYPE_MAP 已归一本体实体类型,测试断言 employee 进入 employee:e001 标准节点。
  • 定义图谱边白名单,禁止数字员工自由创造运行时边类型。[CONCEPT: 本体与风险图谱桥接] 证据:ALLOWED_EDGE_TYPESALLOWED_ONTOLOGY_EDGE_TYPES 双层白名单已生效,测试断言本体边类型只来自白名单。
  • 定义风险信号标准词典,把“住宿超标 / 酒店超标 / 差旅住宿异常”等近义说法归一到同一个 risk_signal。[CONCEPT: 本体与风险图谱桥接] 证据:SIGNAL_ALIASESnormalize_risk_signals() 已归一规则、本体、图谱信号,测试断言 city_mismatch 归一为 location_mismatch
  • 定义本体置信度降级策略,决定自动规则匹配、半自动复核和候选观察的边界。[CONCEPT: 本体与风险图谱桥接] 证据:_gate_from_confidence() 输出 automatic/review/candidate_only,低置信度测试断言 gate == "candidate_only"

2. 数据模型

  • 新增风险观察模型和迁移脚本,包含主体、分数、等级、证据、来源、算法版本和反馈状态。[CONCEPT: 统一风险观察模型] 证据:RiskObservationService.ensure_storage_ready() 按当前项目模式运行时建表,模型包含主体、分数、证据、来源、版本和反馈状态。
  • 新增图谱节点存储模型或兼容结构,第一版支持员工、部门、供应商、票据、单据、制度条款、规则、风险观察。[CONCEPT: 实体图谱层] 证据:RiskObservation.graph_node_keys_json 已保存观察关联节点键,算法结果保留完整节点契约。
  • 新增图谱边存储模型或兼容结构,支持提交、包含、使用票据、关联供应商、命中规则、关联制度、相似案例等关系。[CONCEPT: 实体图谱层] 证据:RiskObservation.graph_edge_keys_json 已保存观察关联边键,算法图谱边包含白名单边类型。
  • 为图谱节点补充 ontology_typecanonical_keycanonical_idontology_parse_idontology_version 字段。[CONCEPT: 本体与风险图谱桥接] 证据:RiskGraphNode 已补齐字段,算法测试断言所有节点序列化包含 canonical_id/ontology_parse_id/ontology_version
  • 为图谱边增加白名单校验和来源字段,记录边由规则、数字员工、本体解析还是人工反馈生成。[CONCEPT: 本体与风险图谱桥接] 证据:算法图谱边通过 ALLOWED_EDGE_TYPES 校验,本体边通过 ALLOWED_ONTOLOGY_EDGE_TYPES 校验,测试断言边序列化包含非空 source
  • 新增人工反馈模型或扩展现有反馈表,支持确认、误报、忽略、已处理等状态。[CONCEPT: 人工反馈校准] 证据:RiskObservationFeedback 与反馈接口已支持确认、误报、忽略、已处理和备注。
  • 为风险观察补充 control_stagecontrol_modeautomation_modeconfidence_scoresampling_strategyevaluation_case_id。[CONCEPT: 对当前方案的补强] 证据:RiskObservation 已通过兼容属性暴露 sampling_strategy/evaluation_case_idAPI schema 已补字段,服务测试覆盖字段读取。
  • 为风险观察补充 ontology_parse_idontology_versiondomainscenariointentontology_entities_jsonrisk_signals_jsoncanonical_subject_key。[CONCEPT: 统一风险观察模型] 证据:RiskObservation 已从 ontology_json 暴露本体字段,RiskObservationRead 已输出,服务测试覆盖字段读取。
  • 为风险观察增加必要索引:主体、单据、风险类型、等级、状态、来源、创建时间。[CONCEPT: 技术验收] 证据:RiskObservation.__table_args__ 与字段索引覆盖主体、单据、等级、状态、信号、来源和时间。
  • 设计对象中心财务事件日志模型,把申请、预算占用、票据上传、审批、退回、付款、归档、复盘统一为可回放事件。[CONCEPT: 不可复制壁垒设计] 证据:process_mining.py 已定义 ObjectCentricEvent,统一保存事件类型、发生时间、对象引用、来源、参与人和元数据,测试覆盖从报销单生成可回放事件。
  • 设计风险观察反馈池字段,记录人工采纳、驳回、改写、退回、补件、升级审批、误报和线索来源。[CONCEPT: 不可复制壁垒设计] 证据:RiskObservationFeedback 已通过兼容属性暴露 decision/candidate_rule_source/confidence_score/escalation_target/supplement_required,测试覆盖反馈来源元数据。
  • 设计算法回放集模型,绑定历史单据、本体版本、规则版本、算法版本和反馈标签。[CONCEPT: 不可复制壁垒设计] 证据:replay.py 已定义 AlgorithmReplayCase/AlgorithmReplaySet/AlgorithmReplaySetBuilder,测试覆盖从风险观察构建回放集。

3. 后端服务

  • 实现风险观察写入服务,统一接收规则、图谱、画像、数字员工产出。[CONCEPT: 总体架构] 证据:RiskObservationService.upsert_observation() 已接收 RiskObservationDraft 或 dict。
  • 实现单据维度风险观察查询服务。[CONCEPT: 单据详情风险证据链] 证据:list_claim_observations()/api/v1/risk-observations/claim/{claim_id} 已实现。
  • 实现风险观察详情查询服务,返回证据链、基线、制度条款、相似案例和建议动作。[CONCEPT: API 契约建议] 证据:get_observation() 与详情接口返回 evidence、baseline、policy_refs、similar_case_claim_ids 和 decision_trace。
  • 实现风险看板聚合服务,输出总览、分布、趋势、排行和算法效果。[CONCEPT: 分析看板风险看板] 证据:summarize_dashboard()/api/v1/risk-observations/dashboard 已返回总览、分布、确认率、误报率和近期高风险。
  • 实现数字员工运行记录关联风险观察查询服务。[CONCEPT: 数字员工工作记录详情] 证据:list_execution_log_observations()/execution-log/{execution_log_id} 已实现。
  • 实现人工反馈写入和状态流转服务。[CONCEPT: 人工反馈校准] 证据:create_feedback() 已同步更新 statusfeedback_status
  • 在服务层保留算法版本和来源信息,避免风险结论不可追溯。[CONCEPT: 技术验收] 证据:RiskObservationService.upsert_observation() 保留 source/algorithm_version,规则中心写入保留 rule_version,服务测试已断言。

4. 算法与图谱

  • 实现同类基线计算方法,支持部门、职级、费用类型、城市等级等口径。[CONCEPT: 同类基线偏离] 证据:server/src/app/algorithem/risk_graph/engine.pypytest --ignore=.venv-ocr312 tests\test_financial_risk_graph_algorithm.py -q 通过。
  • 实现同类样本不足时的降级口径记录。[CONCEPT: 算法验收] 证据:PeerBaseline(scope="insufficient_sample") 与空风险测试覆盖。
  • 实现确定性规则命中分 S_rule 的映射逻辑。[CONCEPT: 风险总分] 证据:server/src/app/algorithem/risk_graph/signals.py 与算法测试覆盖。
  • 实现画像偏离分 S_anomaly 的计算逻辑。[CONCEPT: 同类基线偏离] 证据:金额偏离基线测试断言 S_anomaly >= 90
  • 实现图谱异常分 S_graph 的第一版信号累加逻辑。[CONCEPT: 图谱异常分] 证据:重复发票、拆单、频次、地点不一致、跨部门聚集信号已进入 engine.py
  • 实现制度语义相关分 S_policy 的占位契约,第一版可先接制度条款命中结果。[CONCEPT: 风险总分] 证据:policy_refs_for_signal() 已把制度约束型信号映射为 policy.*
  • 实现历史反馈分 S_history,基于相似案例退回率、确认率和误报率。[CONCEPT: 人工反馈校准] 证据:RiskObservationService.build_history_stats() 汇总确认/误报/退回反馈Hermes 扫描已把历史统计注入 S_history
  • 实现风险总分和等级计算,保证输出可解释贡献项。[CONCEPT: 风险总分] 证据:RiskObservationDraft.contribution_scores 输出 S_rule/S_anomaly/S_graph/S_policy/S_history
  • 实现本体到图谱的映射服务,输入本体解析结果,输出标准图谱节点和白名单边。[CONCEPT: 本体与风险图谱桥接] 证据:server/src/app/algorithem/risk_graph/ontology.py 与白名单边测试覆盖。
  • 实现风险信号归一化服务,保证规则中心、图谱引擎、风险看板使用同一 risk_signal 口径。[CONCEPT: 本体与风险图谱桥接] 证据:normalize_risk_signals() 已归一规则、本体和图谱信号。
  • 实现本体置信度门控,低置信度只生成候选观察,不触发强拦截。[CONCEPT: 本体与风险图谱桥接] 证据:低置信度本体映射测试断言 gate == "candidate_only"
  • 实现多凭证一致性校验,覆盖单据、发票、流水、合同、行程、事前申请之间的字段一致性。[CONCEPT: 合思费控可借鉴模式] 证据:第一版已覆盖报销单金额、费用明细金额合计、声明票据数量和实际票据数量一致性,输出 multi_evidence 证据源,算法测试已覆盖金额和票据数量不一致。
  • 实现时空一致性风险信号,覆盖时间、地点、行程、消费和开票关系。[CONCEPT: 合思费控可借鉴模式] 证据:第一版已覆盖报销发生日期、明细日期、报销地点和明细地点一致性,输出 spatiotemporal 证据源,算法测试已覆盖跨日期和跨地点异常。
  • 实现自动化门控逻辑,按置信度、风险等级、证据覆盖和历史误报率决定辅助、半自动、自动模式。[CONCEPT: 对当前方案的补强] 证据:_resolve_automation_mode() 输出 assist/manual_review/semi_auto_review/auto_hold,测试覆盖半自动模式。
  • 实现风险分层抽审策略,记录抽审口径、阈值和回放数据。[CONCEPT: 用友费用可借鉴模式] 证据:sampling.py 已实现 RiskSamplingPlanner,算法输出在 decision_trace.sampling_strategy 中保留策略、阈值、回放桶和原因,测试覆盖高风险进入 focused_review/high_risk
  • 建立风险评测样本集,包含正样本、负样本、反事实样本、噪声样本和历史误报样本。[CONCEPT: 合思费控可借鉴模式] 证据:evaluation_cases.py 已提供第一版可回放评测样本清单,覆盖 positive/negative/counterfactual/noise/historical_false_positive,算法测试断言分类完整。

4.1 深度算法壁垒模块

  • 实现对象中心事件日志构建器 ObjectCentricProcessMiner,把申请、报销、票据、付款、供应商、审批人等多对象事件统一沉淀。[CONCEPT: 对象中心过程挖掘] 证据:ObjectCentricProcessMiner.build_from_claims()build_from_dicts() 已支持报销单快照与通用事件输入,测试覆盖 claim_submitted/invoice_attached/risk_flagged 等事件。
  • 实现流程一致性检测 ConformanceRiskDetector,识别跳步审批、返工循环、付款前异常和流程绕行。[CONCEPT: 对象中心过程挖掘] 证据:ConformanceRiskDetector.detect() 已输出 payment_before_approval/approval_bypass/rework_loop/process_bypass,测试覆盖四类流程异常。
  • 实现金融实体解析服务 FinancialEntityResolver,归一供应商、商户、酒店、银行户名和员工姓名。[CONCEPT: 实体解析与主数据归一] 证据:entity_resolution.py 已实现实体类型别名和标准主键归一,测试覆盖供应商/商户别名归一到同一 vendor 主体。
  • 实现标准实体注册表 CanonicalEntityRegistry,维护图谱标准主体 ID 和人工确认记录。[CONCEPT: 实体解析与主数据归一] 证据:CanonicalEntityRegistry 支持标准主体 upsert、别名合并和人工确认记录算法测试覆盖别名合并与 confirmed_by
  • 实现异构图特征构建器 HeterogeneousRiskGraphFeatureBuilder,输出元路径、中心性、团簇、邻域风险密度等特征。[CONCEPT: 异构图与时序图学习] 证据:features.py 已输出节点类型、边类型、元路径、度中心性、连通簇和邻域风险密度,算法测试覆盖重复发票图谱特征。
  • 实现时序图监控 TemporalRiskGraphMonitor,监控关系突增、消失、迁移和异常传播。[CONCEPT: 异构图与时序图学习] 证据:temporal.py 已比较前后图谱快照,输出关系新增、删除、突增、目标迁移和风险传播,算法测试覆盖边变化检测。
  • 实现多模型异常检测集成,组合稳健统计、孤立森林、局部离群、时间突变和周期偏离。[CONCEPT: 多模型异常检测组合] 证据:anomaly_models.py 已实现 MultiModelAnomalyDetector,组合 robust_statistics/isolation_forest_proxy/local_outlier_factor_proxy/temporal_jump/periodic_deviation,测试已覆盖五类信号。
  • 实现决策追踪 DecisionTrace,记录决策表输入、命中行、输出、版本和解释。[CONCEPT: 决策建模与策略即代码] 证据:decisioning.py 已定义 DecisionTraceDecisionTraceBuilder,算法输出保留公式、算法版本、输入分、输出分、命中行和元数据,测试已断言。
  • 实现风险解释贡献字段 feature_contributions_jsonuncertainty_reasons_jsonexplanation_template_key。[CONCEPT: 可解释与不确定性控制] 证据:DecisionTraceBuilder 已输出贡献项、不确定性原因和解释模板键,测试覆盖高风险贡献项与低质量封顶原因。
  • 实现反事实风险建议 CounterfactualRiskAdvisor,输出降低风险分的可执行补救动作。[CONCEPT: 因果分析与反事实建议] 证据:counterfactual.py 已根据规则、基线、图谱和数据质量贡献输出可执行降分动作,测试覆盖四类建议。
  • 实现控制效果分析 ControlEffectAnalyzer,评估规则、抽审策略或数字员工上线前后的风险变化。[CONCEPT: 因果分析与反事实建议] 证据:control_effect.py 已比较上线前后风险数量、均分、高风险率、确认率和误报率变化,测试已覆盖。
  • 实现风险数据血缘 RiskDataLineage记录风险观察使用的数据表、文档、OCR、AgentRun、规则版本和本体版本。[CONCEPT: 数据血缘与质量门禁] 证据:lineage.py 已定义 RiskDataLineage 和构建器支持数据表、文档、OCR、AgentRun、ToolCall、规则版本、本体版本、算法版本和事件来源测试已覆盖。
  • 实现风险数据质量门禁 RiskDataQualityGate,阻止低质量数据触发强风控结论。[CONCEPT: 数据血缘与质量门禁] 证据:quality.py 已实现必填字段和上下文质量门禁,低质量单据高分结论会封顶为 69算法测试覆盖缺失员工信息时禁止输出高风险。

5. 数字员工

  • 补充制度整理员工输出契约,确保制度条款可被风险观察引用。[CONCEPT: 数字员工能力分层] 证据:policy_knowledge_contract.py 已定义制度整理报告、知识条目、来源引用和 risk_policy_refs,技能文件已补输出要求,测试覆盖风险条款引用。
  • 新增或扩展风险扫描员工,扫描新增单据和异常关系并写入风险观察。[CONCEPT: 数字员工能力分层] 证据:HermesRiskScannerService 已接入 evaluate_financial_risk_graph(),并写入现有 HermesRiskReport 与单据风险标记。
  • 将风险扫描和员工画像巡检注册到数字员工的员工技能列表。[CONCEPT: 数字员工能力分层] 证据:新增 financial-risk-graph-scanneremployee-behavior-profile-scanner 技能包,并通过任务资产种子和补齐逻辑进入员工技能列表。
  • 员工技能详情的立即运行按技能类型调用真实后端任务。[CONCEPT: 数字员工能力分层] 证据:OrchestratorExecutionEngine 已按 global_risk_scanemployee_behavior_profile_scanfinance_policy_knowledge_organize 分发到真实服务。
  • 新增或扩展画像更新员工,定期更新员工、部门、供应商、费用类型基线。[CONCEPT: 数字员工能力分层] 证据:ProfileBaselineUpdater 已生成员工、部门、供应商、费用类型四类画像基线,HermesEmployeeProfileScannerService.scan_employee_profiles() 已返回 baseline_summarypytest --ignore=.venv-ocr312 tests/test_risk_graph_profile_baselines.py tests/test_hermes_employee_profile_baselines.py -q 通过。
  • 新增风险线索归集员工输出,线索必须带事实、规则命中、证据来源和人工复核标记。[CONCEPT: 数字员工能力分层] 证据:数字员工任务与技能已注册为“风险线索归集”,test_digital_employee_skill_catalog.py 已锁定不输出候选规则或自动发布语义。
  • 数字员工运行完成后写入处理范围、处理数量、风险观察数量和失败原因。[CONCEPT: 数字员工工作记录详情] 证据:HermesScheduler 已写入风险图谱巡检摘要,失败仍沿用执行日志 error_trace
  • 确认 UI 上继续使用“数字员工 / 员工技能 / 工作记录”等业务命名,不在普通用户界面暴露内部实现名。[CONCEPT: 用户与场景] 证据:DigitalEmployeesView.vue 页签文案为“员工技能 / 工作记录”,普通界面未展示内部 Hermes 名称。

6. 前端:单据详情

  • 在单据详情风险说明附近新增风险证据链区块。[CONCEPT: 单据详情风险证据链] 证据:RiskObservationEvidenceCard.vue 已接入 TravelRequestDetailView.vue,按单据 claimId 拉取风险观察。
  • 展示风险结论、证据链节点、基线对比、制度条款、历史相似案例和建议动作。[CONCEPT: 单据详情风险证据链] 证据:详情证据链已展示风险分、贡献分、证据、图谱关系、基线、建议、制度引用和相似案例。
  • 支持点击风险观察进入风险观察详情或展开详情。[CONCEPT: 前端入口关系] 证据:RiskObservationEvidenceCard.vue 已支持多条风险观察点击切换当前详情,详情区包含贡献分、证据、图谱关系、基线建议、制度案例和反馈历史。
  • 无风险观察时不占用主流程空间。[CONCEPT: 前端测试] 证据:RiskObservationEvidenceCard.vue 在非加载、无错误且无观察记录时不渲染卡片。
  • 普通审批人只能看到当前单据相关证据,不展示无关员工长期敏感画像。[CONCEPT: 用户与场景] 证据:RiskObservationEvidenceCard.vue 只调用 fetchClaimRiskObservations(claimId)risk-observation-evidence-card.test.mjs 断言不引入员工画像和知识图谱组件。

7. 前端:数字员工工作记录详情

  • 工作记录列表维持通用列表样式,详情点击进入完整详情页。[CONCEPT: 数字员工工作记录详情] 证据:DigitalEmployeeWorkRecords.vue 继续使用 EnterpriseListPage,点击行进入非侧栏完整详情。
  • 工作记录详情展示本次扫描范围、处理实体数量、风险观察数量和失败原因。[CONCEPT: 数字员工工作记录详情] 证据:DigitalEmployeeRunProducts.vue 展示扫描单据、风险观察、图谱节点/关系、画像快照和失败摘要。
  • 工作记录详情展示本次任务产出的风险观察列表。[CONCEPT: 数字员工工作记录详情] 证据:DigitalEmployeeRunProducts.vue 通过 fetchRunRiskObservations() 读取本次 Run 生成的风险观察并渲染列表。
  • 知识制度整理类记录展示知识制度记录图谱,员工技能详情不展示该图谱。[CONCEPT: 非目标] 证据:node --test web/tests/risk-observation-evidence-card.test.mjs web/tests/digital-employee-work-record-products.test.mjs 通过,覆盖员工技能详情不渲染 KnowledgeIngestGraphView、工作记录详情按任务类型解析产物和局部展开风险观察。
  • 风险扫描类记录展示小范围异常关系,不展示全量图谱。[CONCEPT: 图谱体现方式] 证据:DigitalEmployeeRunProducts.vue 点击风险观察后只展开当前观察的图谱节点、关系、证据和制度建议。

8. 前端:风险看板

  • 在分析看板中增加“风险看板”页签。[CONCEPT: 分析看板风险看板] 证据:分析看板下拉新增“风险看板”,并渲染 RiskObservationDashboard.vue
  • 增加风险总览卡片:新增风险数、高风险待处理数、涉及金额、已确认风险数、误报数量。[CONCEPT: 分析看板风险看板] 证据:riskKpiMetrics 已改为新增风险数、高风险待处理、涉及金额、已确认风险、误报数量和待复核,接口补充 total_amount
  • 增加风险分布图:部门、费用类型、风险类型、供应商、员工职级。[CONCEPT: 分析看板风险看板] 证据:RiskObservationDashboard.vue 新增业务维度分布区,统一读取 department/expense_type/risk_type/supplier/employee_grade 分布字段。
  • 增加风险趋势图7 天 / 30 天走势、高风险占比、处理完成率。[CONCEPT: 分析看板风险看板] 证据:RiskDailyTrendChart.vue 已展示风险观察与高风险趋势;风险看板时间窗口支持 7/30/90 天切换,处理完成率由闭环效果区承接。
  • 增加异常排行:部门、员工、供应商、规则、费用类型。[CONCEPT: 分析看板风险看板] 证据:风险观察聚合接口输出 top_departments/top_employees/top_suppliers/top_rules/top_expense_types,前端异常排行区已展示。
  • 增加算法效果:规则命中数、图谱异常命中数、人工确认率、误报率、待复核线索数。[CONCEPT: 分析看板风险看板] 证据:风险看板已展示平均风险分、人工确认数、误报样本和待复核线索口径,规则/图谱来源通过来源分布体现。
  • 风险看板所有数据通过风险观察聚合接口读取,不直接拼接业务散表。[CONCEPT: 技术验收] 证据:后端已提供 /api/v1/risk-observations/dashboard 作为统一聚合源。

9. 规则与反馈闭环

  • 规则中心执行结果写入风险观察池或与风险观察建立关联。[CONCEPT: 统一风险观察模型] 证据:RiskObservationService.upsert_platform_risk_flags() 已接收规则中心风险命中,报销提交预审会同步写入风险观察池。
  • 风险观察支持人工确认、误报、忽略、已处理等反馈。[CONCEPT: 人工反馈校准] 证据:反馈接口支持 confirm/false_positive/ignore/resolve/comment
  • 风险线索归集员工根据反馈整理待复核线索,不生成、不改写、不上线规则。[CONCEPT: 非目标] 证据:技能配置统一写入 writes_rules=falserole_boundaryallowed_outputs,目录测试覆盖不再注册候选规则技能名或规则优化输出格式。
  • 风险观察详情展示反馈历史和当前处理状态。[CONCEPT: 技术验收] 证据:详情模型保留 statusfeedback_status,反馈历史由 RiskObservationFeedback 存储。
  • 风险看板展示人工确认率、误报率和待复核线索数量。[CONCEPT: 分析看板风险看板] 证据:聚合接口已输出 confirmation_ratefalse_positive_rate;待复核线索口径由风险观察与人工复核状态聚合。

10. 测试与验证

  • 后端模型测试风险观察序列化、状态流转、JSON 字段兼容。[CONCEPT: 后端测试] 证据:server/tests/test_risk_observations_service.py 覆盖 upsert、dashboard、feedback 状态流转。
  • 后端算法测试:同类基线、降级口径、风险总分、图谱异常分。[CONCEPT: 算法与公式] 证据:server/tests/test_financial_risk_graph_algorithm.pypytest --ignore=.venv-ocr312 tests\test_financial_risk_graph_algorithm.py -q 通过。
  • 后端接口测试:单据风险观察、风险观察详情、风险看板聚合、工作记录关联风险观察。[CONCEPT: API 契约建议] 证据:pytest --ignore=.venv-ocr312 tests\test_financial_risk_graph_algorithm.py tests\test_risk_observations_service.py -q 本地与 Docker 均 7 passed。
  • 前端测试:单据详情证据链展示和空状态。[CONCEPT: 前端测试] 证据:node --test web/tests/risk-observation-evidence-card.test.mjs 通过 3 项断言。
  • 前端测试:员工技能详情不显示知识制度图谱。[CONCEPT: 回归测试] 证据:web/tests/digital-employee-work-record-products.test.mjs 断言员工技能详情不渲染 KnowledgeIngestGraphView
  • 前端测试:工作记录详情只展示对应任务的图谱和风险观察。[CONCEPT: 回归测试] 证据:web/tests/digital-employee-work-record-products.test.mjs 覆盖任务类型识别、产物类型解析和风险观察局部展开。
  • 前端测试:风险看板筛选、趋势、排行和卡片数据一致。[CONCEPT: 前端测试] 证据:node --test web/tests/risk-observation-dashboard.test.mjs 通过 3 项断言,覆盖窗口筛选、趋势、排行和 KPI 数据源联动。
  • 在 Docker 容器中执行后端定向测试,命令形态为 docker exec x-financial-main sh -lc "cd /app && pytest <target> -q",测试超时控制在 60s 内。[CONCEPT: 后端测试] 证据:docker exec x-financial-main sh -lc "cd /app/server && python -m pytest --ignore=.venv-ocr312 tests/test_financial_risk_graph_algorithm.py tests/test_risk_observations_service.py -q" 已通过 7 passed。
  • 执行前端构建验证,确认风险看板和详情变更不破坏现有页面。[CONCEPT: 前端测试] 证据:npm.cmd run build 已通过;/app/overview/api/v1/risk-observations/dashboard 本地 HTTP 检查返回 200。

11. 验收

  • 单据详情能解释单个风险:结论、证据链、基线、制度条款、历史案例、建议动作齐全。[CONCEPT: 业务验收] 证据:RiskObservationEvidenceCard.vue 展示风险结论、贡献分、证据、图谱关系、基线建议、制度引用、相似案例和反馈历史;node --test web/tests/risk-observation-evidence-card.test.mjs 通过 3 项断言。
  • 数字员工工作记录能解释一次任务:范围、数量、产出、失败、风险观察齐全。[CONCEPT: 业务验收] 证据:DigitalEmployeeRunProducts.vue 展示扫描范围、处理数量、任务产物、失败摘要和本次风险观察;node --test web/tests/digital-employee-work-record-products.test.mjs 通过 4 项断言。
  • 风险看板能解释整体态势:总览、分布、趋势、排行、算法效果齐全。[CONCEPT: 业务验收] 证据:RiskObservationDashboard.vue 已包含总览 KPI、业务维度分布、趋势、信号排行、异常排行、算法闭环效果npm.cmd run build 通过。
  • 所有风险输出统一进入风险观察模型或兼容结构。[CONCEPT: 技术验收] 证据Hermes 风险扫描已调用 RiskObservationService.upsert_observation()
  • 高风险观察至少包含两类证据来源。[CONCEPT: 算法验收] 证据:_apply_evidence_source_gate() 对单一证据源高风险封顶为 69算法测试覆盖单源封顶和多源高风险通过。
  • 风险观察保留算法版本、来源、时间、反馈状态。[CONCEPT: 技术验收] 证据:RiskObservation 模型包含 algorithm_versionsourcecreated_atupdated_atfeedback_status