feat: 扩展风险规则体系、审批动态路由与预算中心列表化改造

- 新增 25+ 条风险规则(预算/报销/申请/通用类),完善风险规则模拟与反馈发布机制
- 引入费用审批动态路由、平台风险分级、预审与风险阶段管理
- 预算中心列表化改造,优化票据夹仪表盘与数字员工工作看板
- 新增 Hermes 风险线索收集器、Agent 链路追踪中心
- 扩展数字员工能力库(18 个领域 Skill)与交通费用自动预估
- 完善报销申请快速预览、权限控制与前端测试覆盖
This commit is contained in:
caoxiaozhu
2026-06-01 17:07:14 +08:00
parent 7989f3a159
commit 92444e7eae
285 changed files with 25075 additions and 2986 deletions

View File

@@ -137,6 +137,16 @@
@update:window-days="setRiskWindowDays"
/>
<DigitalEmployeeDashboard
v-else-if="activeDashboard === 'digitalEmployee'"
:dashboard="digitalEmployeeDashboard"
:loading="digitalEmployeeDashboardLoading"
:error="digitalEmployeeDashboardError"
:daily-rows="digitalEmployeeDailyRows"
:task-ranking="digitalEmployeeTaskRanking"
:category-rows="digitalEmployeeCategoryRows"
/>
<template v-else>
<div class="system-observability-grid">
<article class="panel dashboard-card system-agent-ratio-panel">
@@ -295,6 +305,7 @@ import SystemAgentRatioBar from '../components/charts/SystemAgentRatioBar.vue'
import SystemLoginWaveChart from '../components/charts/SystemLoginWaveChart.vue'
import SystemTokenDailyWaveChart from '../components/charts/SystemTokenDailyWaveChart.vue'
import SystemUserTokenPie from '../components/charts/SystemUserTokenPie.vue'
import DigitalEmployeeDashboard from '../components/dashboard/DigitalEmployeeDashboard.vue'
import RiskObservationDashboard from '../components/dashboard/RiskObservationDashboard.vue'
import EnterpriseSelect from '../components/shared/EnterpriseSelect.vue'
@@ -318,6 +329,13 @@ const {
bottlenecks,
budgetSummary,
departmentRangeOptions,
digitalEmployeeCategoryRows,
digitalEmployeeDashboard,
digitalEmployeeDashboardError,
digitalEmployeeDashboardLoading,
digitalEmployeeDailyRows,
digitalEmployeeKpiMetrics,
digitalEmployeeTaskRanking,
kpiMetrics,
rankedDepartments,
riskDashboard,
@@ -350,15 +368,15 @@ const {
const activeDashboard = computed(() => {
if (props.dashboard === 'system') return 'system'
if (props.dashboard === 'risk') return 'risk'
if (props.dashboard === 'digitalEmployee') return 'digitalEmployee'
return 'finance'
})
const activeKpiMetrics = computed(() => (
activeDashboard.value === 'system'
? systemKpiMetrics.value
: activeDashboard.value === 'risk'
? riskKpiMetrics.value
: kpiMetrics.value
))
const activeKpiMetrics = computed(() => {
if (activeDashboard.value === 'system') return systemKpiMetrics.value
if (activeDashboard.value === 'digitalEmployee') return digitalEmployeeKpiMetrics.value
if (activeDashboard.value === 'risk') return riskKpiMetrics.value
return kpiMetrics.value
})
</script>
<style scoped src="../assets/styles/views/overview-view.css"></style>