后端新增风险图谱算法模块、风险观察与反馈服务、规则 DSL 校验器和可解释性引擎,完善系统仪表盘和财务仪表盘统计, 优化 agent 运行和编排执行链路,清理旧开发文档,前端新增 系统趋势、负载热力图等多种仪表盘图表组件,完善操作反馈 对话框和工作台日期选择器,优化报销创建和审批详情交互, 补充单元测试覆盖。
33 KiB
33 KiB
数字员工财务行为图谱风险算法开发 TODO
更新日期:2026-05-30
1. 调研与契约
- 梳理现有风险相关数据来源:报销单、费用明细、票据、审批记录、规则命中、AgentRun、ToolCall、语义解析日志。[CONCEPT: 背景与问题] 证据:
RISK_SOURCE_AND_MOAT.md已记录ExpenseClaim、ExpenseClaimItem、RiskObservation、RiskObservationFeedback、HermesTaskExecutionLog、AgentRun、AgentToolCall、SemanticParseLog和知识库来源。 - 梳理现有数字员工技能和工作记录模型,确认员工技能详情、工作记录详情、知识制度记录详情的边界。[CONCEPT: 非目标] 证据:
DigitalEmployeesView.vue保持员工技能/工作记录页签,DigitalEmployeeWorkRecords.vue负责完整详情页,AuditDigitalEmployeeDetail.vue不引入知识图谱组件。 - 梳理分析看板现有数据来源和页面结构,确认风险看板作为独立页签的接入方式。[CONCEPT: 分析看板风险看板] 证据:
TopBar.vue的分析看板下拉已新增risk,OverviewView.vue已按dashboard=risk渲染独立风险看板。 - 定义
RiskObservation后端字段、状态枚举、来源枚举和 JSON 字段结构。[CONCEPT: 统一风险观察模型] 证据:server/src/app/models/risk_observation.py与server/src/app/schemas/risk_observation.py已实现。 - 定义图谱节点和边的最小字段,不急于引入图数据库。[CONCEPT: 实体图谱层] 证据:
RiskGraphNode.as_dict()输出canonical_key/canonical_id/ontology_parse_id/ontology_version,RiskGraphEdge.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已记录用友公开资料中的事前申请、商旅预订、报销、审批、结算、分析和归档链路,并映射到ObjectCentricEvent、RiskObservation、RiskDataLineage。 - 复核用友公开资料中的规则模板、预算刚柔控制、信用抽审和商旅推荐能力,映射为
PolicyTemplateLibrary、PreControlRecommender、RiskSamplingPlanner。[CONCEPT: 用友费用可借鉴模式] 证据:PUBLIC_COMPETITOR_REFERENCE.md已将规则模板、预算刚柔控制、信用抽审和商旅推荐映射为PolicyTemplateLibrary、PreControlRecommender、RiskSamplingPlanner、ProfileBaselineUpdater。 - 复核合思公开资料中的 AI 审核、人机共审、多凭证校验、时空推理和低置信度转人工能力,映射为
MultiEvidenceReconciler、SpatioTemporalRiskEngine、HumanInLoopAutomationGate。[CONCEPT: 合思费控可借鉴模式] 证据:PUBLIC_COMPETITOR_REFERENCE.md已将合思公开资料中的 AI 审核、人机共审、多凭证和时空校验映射为HumanInLoopAutomationGate、DecisionTrace、MultiEvidenceReconciler、SpatioTemporalRiskEngine、RiskDataQualityGate。 - 明确竞品资料只作为产品能力和方法论参考,不能作为内部算法实现依据。[CONCEPT: 资料边界] 证据:
PUBLIC_COMPETITOR_REFERENCE.md已写明只使用公开资料做产品能力和方法论校准,不推断竞品内部算法实现。 - 把竞品借鉴项转成 X-Financial 自有数据、可解释算法、可审计证据和可回放测试,不直接复制竞品页面或术语。[CONCEPT: 对当前方案的补强] 证据:
PUBLIC_COMPETITOR_REFERENCE.md已把竞品能力转译为自有财务本体、对象中心事件日志、画像基线、反馈池、回放集和解释资产。
1.2 本体与风险图谱桥接
- 梳理现有
/api/v1/ontology/parse、SemanticParseLog、scenario、intent、entities、risk_flags、missing_slots的当前字段和落库方式。[CONCEPT: 本体与风险图谱桥接] 证据:RISK_SOURCE_AND_MOAT.md已记录OntologyParseRequest/OntologyParseResult字段,以及AgentRun.ontology_json与SemanticParseLog.*_json落库方式。 - 定义本体输出进入风险图谱的最小协议:
ontology_parse_id、ontology_version、domain、scenario、intent、entities、constraints、risk_signals、confidence。[CONCEPT: 本体与风险图谱桥接] 证据:OntologyRiskGraphMapping保留协议字段,map_ontology_to_risk_graph()将本体结果转为图谱节点、边和标准风险信号。 - 定义本体实体到图谱节点的映射表,例如
expense_type -> expense_type、document_type -> invoice / expense_claim、risk_signal -> risk_observation / risk_signal。[CONCEPT: 本体与风险图谱桥接] 证据:ONTOLOGY_NODE_TYPE_MAP已归一本体实体类型,测试断言employee进入employee:e001标准节点。 - 定义图谱边白名单,禁止数字员工自由创造运行时边类型。[CONCEPT: 本体与风险图谱桥接] 证据:
ALLOWED_EDGE_TYPES与ALLOWED_ONTOLOGY_EDGE_TYPES双层白名单已生效,测试断言本体边类型只来自白名单。 - 定义风险信号标准词典,把“住宿超标 / 酒店超标 / 差旅住宿异常”等近义说法归一到同一个
risk_signal。[CONCEPT: 本体与风险图谱桥接] 证据:SIGNAL_ALIASES和normalize_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_type、canonical_key、canonical_id、ontology_parse_id、ontology_version字段。[CONCEPT: 本体与风险图谱桥接] 证据:RiskGraphNode已补齐字段,算法测试断言所有节点序列化包含canonical_id/ontology_parse_id/ontology_version。 - 为图谱边增加白名单校验和来源字段,记录边由规则、数字员工、本体解析还是人工反馈生成。[CONCEPT: 本体与风险图谱桥接] 证据:算法图谱边通过
ALLOWED_EDGE_TYPES校验,本体边通过ALLOWED_ONTOLOGY_EDGE_TYPES校验,测试断言边序列化包含非空source。 - 新增人工反馈模型或扩展现有反馈表,支持确认、误报、忽略、已处理等状态。[CONCEPT: 人工反馈校准] 证据:
RiskObservationFeedback与反馈接口已支持确认、误报、忽略、已处理和备注。 - 为风险观察补充
control_stage、control_mode、automation_mode、confidence_score、sampling_strategy和evaluation_case_id。[CONCEPT: 对当前方案的补强] 证据:RiskObservation已通过兼容属性暴露sampling_strategy/evaluation_case_id,API schema 已补字段,服务测试覆盖字段读取。 - 为风险观察补充
ontology_parse_id、ontology_version、domain、scenario、intent、ontology_entities_json、risk_signals_json和canonical_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()已同步更新status与feedback_status。 - 在服务层保留算法版本和来源信息,避免风险结论不可追溯。[CONCEPT: 技术验收] 证据:
RiskObservationService.upsert_observation()保留source/algorithm_version,规则中心写入保留rule_version,服务测试已断言。
4. 算法与图谱
- 实现同类基线计算方法,支持部门、职级、费用类型、城市等级等口径。[CONCEPT: 同类基线偏离] 证据:
server/src/app/algorithem/risk_graph/engine.py,pytest --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已定义DecisionTrace与DecisionTraceBuilder,算法输出保留公式、算法版本、输入分、输出分、命中行和元数据,测试已断言。 - 实现风险解释贡献字段
feature_contributions_json、uncertainty_reasons_json和explanation_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-scanner、employee-behavior-profile-scanner技能包,并通过任务资产种子和补齐逻辑进入员工技能列表。 - 员工技能详情的立即运行按技能类型调用真实后端任务。[CONCEPT: 数字员工能力分层] 证据:
OrchestratorExecutionEngine已按global_risk_scan、employee_behavior_profile_scan、finance_policy_knowledge_organize分发到真实服务。 - 新增或扩展画像更新员工,定期更新员工、部门、供应商、费用类型基线。[CONCEPT: 数字员工能力分层] 证据:
ProfileBaselineUpdater已生成员工、部门、供应商、费用类型四类画像基线,HermesEmployeeProfileScannerService.scan_employee_profiles()已返回baseline_summary;pytest --ignore=.venv-ocr312 tests/test_risk_graph_profile_baselines.py tests/test_hermes_employee_profile_baselines.py -q通过。 - 新增规则发现员工候选输出,候选规则必须带证据、来源和置信度。[CONCEPT: 数字员工能力分层] 证据:
rule_discovery.py已定义CandidateRiskRuleDiscovery和CandidateRiskRule,输出包含证据、来源、置信度和候选状态;数字员工任务与技能已注册为“风险规则候选发现”。 - 数字员工运行完成后写入处理范围、处理数量、风险观察数量和失败原因。[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: 非目标] 证据:
CandidateRiskRuleDiscovery.discover_from_feedback()只输出status == "candidate_review"的候选规则,技能文件要求auto_publish=false,测试覆盖不直接上线。 - 风险观察详情展示反馈历史和当前处理状态。[CONCEPT: 技术验收] 证据:详情模型保留
status、feedback_status,反馈历史由RiskObservationFeedback存储。 - 风险看板展示人工确认率、误报率和候选规则数量。[CONCEPT: 分析看板风险看板] 证据:聚合接口已输出
confirmation_rate和false_positive_rate;候选规则数待规则发现员工接入后补充。
10. 测试与验证
- 后端模型测试:风险观察序列化、状态流转、JSON 字段兼容。[CONCEPT: 后端测试] 证据:
server/tests/test_risk_observations_service.py覆盖 upsert、dashboard、feedback 状态流转。 - 后端算法测试:同类基线、降级口径、风险总分、图谱异常分。[CONCEPT: 算法与公式] 证据:
server/tests/test_financial_risk_graph_algorithm.py,pytest --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_version、source、created_at、updated_at、feedback_status。