feat: 新增风险图谱算法与系统仪表盘及操作反馈体系
后端新增风险图谱算法模块、风险观察与反馈服务、规则 DSL 校验器和可解释性引擎,完善系统仪表盘和财务仪表盘统计, 优化 agent 运行和编排执行链路,清理旧开发文档,前端新增 系统趋势、负载热力图等多种仪表盘图表组件,完善操作反馈 对话框和工作台日期选择器,优化报销创建和审批详情交互, 补充单元测试覆盖。
This commit is contained in:
@@ -60,6 +60,68 @@ export const metricBlueprints = [
|
||||
}
|
||||
]
|
||||
|
||||
export const systemMetricBlueprints = [
|
||||
{
|
||||
key: 'toolCalls',
|
||||
label: '工具调用次数',
|
||||
unit: '次',
|
||||
accent: 'var(--theme-primary)',
|
||||
icon: 'mdi mdi-tools',
|
||||
trend: 'up',
|
||||
change: '18.6%',
|
||||
delta: '较昨日 +286 次'
|
||||
},
|
||||
{
|
||||
key: 'modelTokens',
|
||||
label: '大模型 Token',
|
||||
unit: 'tokens',
|
||||
accent: 'var(--chart-blue)',
|
||||
icon: 'mdi mdi-chip',
|
||||
trend: 'up',
|
||||
change: '11.2%',
|
||||
delta: '较昨日 +43.2K'
|
||||
},
|
||||
{
|
||||
key: 'onlineUsers',
|
||||
label: '当前在线人数',
|
||||
unit: '人',
|
||||
accent: 'var(--chart-purple)',
|
||||
icon: 'mdi mdi-account-multiple-outline',
|
||||
trend: 'up',
|
||||
change: '9.4%',
|
||||
delta: '峰值 168 人'
|
||||
},
|
||||
{
|
||||
key: 'avgOnlineMinutes',
|
||||
label: '平均在线时长',
|
||||
unit: '分钟',
|
||||
accent: 'var(--chart-amber)',
|
||||
icon: 'mdi mdi-timer-outline',
|
||||
trend: 'down',
|
||||
change: '4.8%',
|
||||
delta: '较昨日 -1.9 分钟'
|
||||
},
|
||||
{
|
||||
key: 'executionSuccessRate',
|
||||
label: '执行成功率',
|
||||
unit: '%',
|
||||
accent: 'var(--success)',
|
||||
icon: 'mdi mdi-check-decagram-outline',
|
||||
trend: 'up',
|
||||
change: '2.1%',
|
||||
delta: '错误率 3.6%'
|
||||
},
|
||||
{
|
||||
key: 'positiveFeedback',
|
||||
label: '好评 / 差评',
|
||||
accent: 'var(--danger)',
|
||||
icon: 'mdi mdi-thumb-up-outline',
|
||||
trend: 'up',
|
||||
change: '5.7%',
|
||||
delta: '差评 31 次'
|
||||
}
|
||||
]
|
||||
|
||||
export const trendRanges = ['近12天', '近7天', '近30天']
|
||||
|
||||
export const trendSeries = {
|
||||
@@ -132,3 +194,141 @@ export const budgetSummary = {
|
||||
used: '¥2,128,000',
|
||||
left: '¥672,000'
|
||||
}
|
||||
|
||||
export const systemDashboardTotals = {
|
||||
toolCalls: 1842,
|
||||
modelTokens: 428600,
|
||||
onlineUsers: 126,
|
||||
avgOnlineMinutes: 38.6,
|
||||
executionSuccessRate: 96.4,
|
||||
positiveFeedback: 215,
|
||||
negativeFeedback: 31
|
||||
}
|
||||
|
||||
export const systemTrendSeries = {
|
||||
labels: ['09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00'],
|
||||
toolCalls: [148, 196, 252, 184, 216, 318, 296, 232],
|
||||
tokens: [36200, 48600, 64200, 41800, 52300, 73600, 68900, 43000],
|
||||
onlineUsers: [76, 94, 118, 86, 104, 143, 137, 126],
|
||||
onlineMinutes: [31.2, 35.4, 39.8, 34.1, 36.6, 42.5, 41.7, 38.6]
|
||||
}
|
||||
|
||||
export const systemAgentDailyRatio = {
|
||||
labels: ['05-23', '05-24', '05-25', '05-26', '05-27', '05-28', '05-29'],
|
||||
agents: [
|
||||
{ key: 'preAudit', name: '报销预审', color: 'var(--theme-primary)' },
|
||||
{ key: 'policyQa', name: '政策问答', color: 'var(--chart-blue)' },
|
||||
{ key: 'invoiceOcr', name: '票据识别', color: 'var(--chart-amber)' },
|
||||
{ key: 'ruleAudit', name: '规则审核', color: 'var(--chart-purple)' },
|
||||
{ key: 'employeeLookup', name: '员工查询', color: 'var(--success)' },
|
||||
{ key: 'diagnosis', name: '异常诊断', color: 'var(--danger)' }
|
||||
],
|
||||
series: {
|
||||
preAudit: [30, 32, 35, 31, 34, 37, 33],
|
||||
policyQa: [24, 22, 21, 25, 22, 20, 23],
|
||||
invoiceOcr: [18, 19, 17, 18, 16, 15, 17],
|
||||
ruleAudit: [16, 15, 15, 14, 16, 15, 15],
|
||||
employeeLookup: [8, 8, 8, 8, 8, 7, 8],
|
||||
diagnosis: [4, 4, 4, 4, 4, 6, 4]
|
||||
}
|
||||
}
|
||||
|
||||
export const systemLoginWave = {
|
||||
labels: ['08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00'],
|
||||
loginUsers: [18, 56, 94, 121, 84, 73, 116, 158, 146, 126, 92, 58, 34],
|
||||
interactions: [36, 118, 214, 286, 174, 156, 268, 348, 326, 278, 188, 102, 54]
|
||||
}
|
||||
|
||||
export const systemTokenDailyWave = {
|
||||
labels: ['05-23', '05-24', '05-25', '05-26', '05-27', '05-28', '05-29'],
|
||||
inputTokens: [38200, 41600, 48600, 46200, 53800, 58400, 52600],
|
||||
outputTokens: [18600, 22400, 25800, 23600, 28600, 31800, 29400],
|
||||
totalTokens: [56800, 64000, 74400, 69800, 82400, 90200, 82000]
|
||||
}
|
||||
|
||||
export const systemUsageDurationSummary = {
|
||||
average: '38.6 分钟',
|
||||
median: '34.2 分钟',
|
||||
peak: '58.4 分钟',
|
||||
trend: '+6.8%',
|
||||
rows: [
|
||||
{ label: '0-10 分钟', value: 28, color: 'var(--chart-blue)' },
|
||||
{ label: '10-30 分钟', value: 64, color: 'var(--theme-primary)' },
|
||||
{ label: '30-60 分钟', value: 82, color: 'var(--chart-purple)' },
|
||||
{ label: '60 分钟以上', value: 31, color: 'var(--chart-amber)' }
|
||||
]
|
||||
}
|
||||
|
||||
export const systemUserTokenUsage = [
|
||||
{ name: '陈雨晴', role: '财务经理', tokens: 96800, color: 'var(--theme-primary)' },
|
||||
{ name: '顾成宇', role: '研发负责人', tokens: 82500, color: 'var(--chart-blue)' },
|
||||
{ name: '沈佳宁', role: '销售运营', tokens: 68400, color: 'var(--chart-amber)' },
|
||||
{ name: '赵明轩', role: '行政专员', tokens: 53800, color: 'var(--chart-purple)' },
|
||||
{ name: '李思远', role: '部门主管', tokens: 42600, color: 'var(--success)' },
|
||||
{ name: '王若彤', role: '费用审核', tokens: 31500, color: 'var(--danger)' }
|
||||
]
|
||||
|
||||
export const systemAccuracyComparison = {
|
||||
categories: ['报销预审', '政策问答', '票据识别', '规则审核', '员工查询', '异常诊断'],
|
||||
correct: [516, 410, 313, 275, 172, 102],
|
||||
wrong: [12, 6, 15, 11, 2, 8]
|
||||
}
|
||||
|
||||
export const systemLoadHeatmap = {
|
||||
hours: ['09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00'],
|
||||
tools: ['报销预审', '政策问答', '票据识别', '规则审核', '员工查询', '异常诊断'],
|
||||
values: [
|
||||
[0, 0, 42], [1, 0, 58], [2, 0, 74], [3, 0, 52], [4, 0, 64], [5, 0, 88], [6, 0, 82], [7, 0, 68],
|
||||
[0, 1, 36], [1, 1, 44], [2, 1, 61], [3, 1, 40], [4, 1, 46], [5, 1, 69], [6, 1, 64], [7, 1, 56],
|
||||
[0, 2, 28], [1, 2, 39], [2, 2, 52], [3, 2, 33], [4, 2, 41], [5, 2, 67], [6, 2, 58], [7, 2, 46],
|
||||
[0, 3, 24], [1, 3, 32], [2, 3, 45], [3, 3, 30], [4, 3, 36], [5, 3, 55], [6, 3, 52], [7, 3, 38],
|
||||
[0, 4, 12], [1, 4, 20], [2, 4, 26], [3, 4, 18], [4, 4, 22], [5, 4, 34], [6, 4, 29], [7, 4, 24],
|
||||
[0, 5, 6], [1, 5, 12], [2, 5, 18], [3, 5, 11], [4, 5, 13], [5, 5, 22], [6, 5, 19], [7, 5, 15]
|
||||
]
|
||||
}
|
||||
|
||||
export const systemToolCallMix = [
|
||||
{ name: '报销预审', value: 528, color: 'var(--theme-primary)' },
|
||||
{ name: '政策问答', value: 416, color: 'var(--chart-blue)' },
|
||||
{ name: '票据识别', value: 328, color: 'var(--chart-amber)' },
|
||||
{ name: '规则审核', value: 286, color: 'var(--chart-purple)' },
|
||||
{ name: '员工查询', value: 174, color: 'var(--success)' },
|
||||
{ name: '异常诊断', value: 110, color: 'var(--danger)' }
|
||||
]
|
||||
|
||||
export const systemExecutionMix = [
|
||||
{ name: '成功', value: 1776, color: 'var(--success)' },
|
||||
{ name: '业务拦截', value: 38, color: 'var(--chart-amber)' },
|
||||
{ name: '超时', value: 16, color: 'var(--warning)' },
|
||||
{ name: '错误', value: 12, color: 'var(--danger)' }
|
||||
]
|
||||
|
||||
export const systemToolRankings = [
|
||||
{ name: '费用规则匹配', value: 486, color: 'var(--theme-primary)' },
|
||||
{ name: '发票结构化解析', value: 392, color: 'var(--chart-blue)' },
|
||||
{ name: '差旅标准查询', value: 318, color: 'var(--chart-amber)' },
|
||||
{ name: '审批流推荐', value: 241, color: 'var(--chart-purple)' },
|
||||
{ name: '员工组织查询', value: 176, color: 'var(--success)' }
|
||||
]
|
||||
|
||||
export const systemModelUsage = [
|
||||
{ name: '智能填单与预审', tokens: 146800, share: 34, color: 'var(--theme-primary)' },
|
||||
{ name: '政策知识问答', tokens: 118400, share: 28, color: 'var(--chart-blue)' },
|
||||
{ name: '票据 OCR 解释', tokens: 86300, share: 20, color: 'var(--chart-amber)' },
|
||||
{ name: '异常原因归纳', tokens: 77100, share: 18, color: 'var(--chart-purple)' }
|
||||
]
|
||||
|
||||
export const systemFeedbackSummary = [
|
||||
{ label: '好评次数', value: 215, tone: 'success', icon: 'mdi mdi-thumb-up-outline' },
|
||||
{ label: '差评次数', value: 31, tone: 'danger', icon: 'mdi mdi-thumb-down-outline' },
|
||||
{ label: '反馈率', value: '13.4%', tone: 'info', icon: 'mdi mdi-message-processing-outline' }
|
||||
]
|
||||
|
||||
export const systemToolDetailRows = [
|
||||
{ name: '报销预审', calls: 528, successRate: 97.8, avgLatency: '1.8s', tokens: 146800, color: 'var(--theme-primary)' },
|
||||
{ name: '政策问答', calls: 416, successRate: 98.6, avgLatency: '1.2s', tokens: 118400, color: 'var(--chart-blue)' },
|
||||
{ name: '票据识别', calls: 328, successRate: 95.4, avgLatency: '2.6s', tokens: 86300, color: 'var(--chart-amber)' },
|
||||
{ name: '规则审核', calls: 286, successRate: 96.1, avgLatency: '1.5s', tokens: 77100, color: 'var(--chart-purple)' },
|
||||
{ name: '员工查询', calls: 174, successRate: 99.2, avgLatency: '0.8s', tokens: 18200, color: 'var(--success)' },
|
||||
{ name: '异常诊断', calls: 110, successRate: 92.7, avgLatency: '2.9s', tokens: 31800, color: 'var(--danger)' }
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user