feat: 新增风险图谱算法与系统仪表盘及操作反馈体系
后端新增风险图谱算法模块、风险观察与反馈服务、规则 DSL 校验器和可解释性引擎,完善系统仪表盘和财务仪表盘统计, 优化 agent 运行和编排执行链路,清理旧开发文档,前端新增 系统趋势、负载热力图等多种仪表盘图表组件,完善操作反馈 对话框和工作台日期选择器,优化报销创建和审批详情交互, 补充单元测试覆盖。
This commit is contained in:
@@ -24,7 +24,7 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border: 0;
|
||||
border-radius: 10px;
|
||||
border-radius: 4px;
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
overflow: hidden;
|
||||
@@ -142,7 +142,7 @@
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
border: 0;
|
||||
border-radius: 10px;
|
||||
border-radius: 4px;
|
||||
backdrop-filter: none;
|
||||
-webkit-backdrop-filter: none;
|
||||
overflow: hidden;
|
||||
@@ -179,9 +179,8 @@
|
||||
display: grid;
|
||||
grid-template-rows: auto minmax(0, 1fr);
|
||||
transform: none;
|
||||
border-radius: 10px;
|
||||
background:
|
||||
linear-gradient(180deg, #f8fbff 0%, #edf5ff 100%);
|
||||
border-radius: 4px;
|
||||
background: #f6f9fc;
|
||||
box-shadow:
|
||||
0 28px 72px rgba(15, 23, 42, 0.22),
|
||||
0 10px 28px rgba(15, 23, 42, 0.09),
|
||||
@@ -217,7 +216,7 @@
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0 14px;
|
||||
border-radius: 999px;
|
||||
border-radius: 4px;
|
||||
background: linear-gradient(135deg, var(--theme-primary), var(--theme-primary-active));
|
||||
color: #fff;
|
||||
font-size: var(--wb-fs-badge);
|
||||
@@ -290,7 +289,7 @@
|
||||
place-items: center;
|
||||
padding: 0;
|
||||
border: 1px solid rgba(248, 113, 113, 0.28);
|
||||
border-radius: 14px;
|
||||
border-radius: 4px;
|
||||
flex: none;
|
||||
}
|
||||
|
||||
@@ -342,7 +341,7 @@
|
||||
padding: 0;
|
||||
flex: none;
|
||||
border: 1px solid rgba(193, 204, 216, 0.92);
|
||||
border-radius: 14px;
|
||||
border-radius: 4px;
|
||||
background: rgba(248, 251, 251, 0.94);
|
||||
color: #475569;
|
||||
font-size: 16px;
|
||||
@@ -375,7 +374,7 @@
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0 10px;
|
||||
border-radius: 999px;
|
||||
border-radius: 4px;
|
||||
background: #f1f5f9;
|
||||
color: #64748b;
|
||||
font-size: 11px;
|
||||
@@ -405,7 +404,7 @@
|
||||
place-items: center;
|
||||
padding: 0;
|
||||
border: 1px solid rgba(203, 213, 225, 0.86);
|
||||
border-radius: 12px;
|
||||
border-radius: 4px;
|
||||
background: rgba(255, 255, 255, 0.92);
|
||||
color: #475569;
|
||||
font-size: 16px;
|
||||
@@ -493,7 +492,7 @@
|
||||
gap: 7px;
|
||||
padding: 13px 14px;
|
||||
border: 1px solid #e5edf5;
|
||||
border-radius: 12px;
|
||||
border-radius: 4px;
|
||||
background: #fff;
|
||||
box-shadow: 0 8px 22px rgba(226, 232, 240, 0.34);
|
||||
}
|
||||
@@ -531,7 +530,7 @@
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 0 9px;
|
||||
border-radius: 999px;
|
||||
border-radius: 4px;
|
||||
background: #f1f5f9;
|
||||
color: #64748b;
|
||||
font-size: 11px;
|
||||
@@ -563,7 +562,6 @@
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
|
||||
.flow-step-tool,
|
||||
.flow-step-detail,
|
||||
.flow-step-error {
|
||||
margin: 0;
|
||||
@@ -632,7 +630,7 @@
|
||||
min-width: 0;
|
||||
min-height: 0;
|
||||
border: 1px solid rgba(189, 201, 214, 0.74);
|
||||
border-radius: 16px;
|
||||
border-radius: 4px;
|
||||
background: #ffffff;
|
||||
box-shadow:
|
||||
0 14px 32px rgba(148, 163, 184, 0.16),
|
||||
@@ -646,8 +644,7 @@
|
||||
display: grid;
|
||||
grid-template-rows: auto minmax(0, 1fr) auto;
|
||||
overflow: hidden;
|
||||
background:
|
||||
linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
|
||||
background: #ffffff;
|
||||
transition:
|
||||
transform 320ms cubic-bezier(0.22, 1, 0.36, 1),
|
||||
box-shadow 320ms cubic-bezier(0.22, 1, 0.36, 1);
|
||||
@@ -715,7 +712,7 @@
|
||||
gap: 6px;
|
||||
padding: 0 13px;
|
||||
border: 1px solid rgba(219, 230, 240, 0.9);
|
||||
border-radius: 8px;
|
||||
border-radius: 4px;
|
||||
background: rgba(255, 255, 255, 0.95);
|
||||
color: #334155;
|
||||
font-size: 13px;
|
||||
@@ -812,7 +809,7 @@
|
||||
max-width: min(100%, 720px);
|
||||
padding: 12px 14px;
|
||||
border: 1px solid rgba(210, 220, 230, 0.94);
|
||||
border-radius: 20px;
|
||||
border-radius: 4px;
|
||||
background: rgba(253, 254, 254, 0.94);
|
||||
color: #24324a;
|
||||
font-size: var(--wb-fs-bubble);
|
||||
@@ -940,7 +937,7 @@
|
||||
margin-top: 12px;
|
||||
overflow: hidden;
|
||||
border: 1px solid #d7e4f2;
|
||||
border-radius: 8px;
|
||||
border-radius: 4px;
|
||||
background: #ffffff;
|
||||
color: #334155;
|
||||
font-size: var(--wb-fs-bubble);
|
||||
@@ -1113,7 +1110,7 @@
|
||||
.message-answer-markdown :deep(blockquote) {
|
||||
padding: 8px 10px;
|
||||
border-left: 3px solid #cbd5e1;
|
||||
border-radius: 0 10px 10px 0;
|
||||
border-radius: 0 4px 4px 0;
|
||||
background: rgba(248, 250, 252, 0.84);
|
||||
color: #475569;
|
||||
}
|
||||
@@ -1123,7 +1120,7 @@
|
||||
padding: 12px 14px;
|
||||
border: 1px solid #dbe4ee;
|
||||
border-left: 4px solid #2563eb;
|
||||
border-radius: 8px;
|
||||
border-radius: 4px;
|
||||
background: #f8fafc;
|
||||
color: #334155;
|
||||
}
|
||||
@@ -1152,7 +1149,7 @@
|
||||
|
||||
.message-answer-markdown :deep(code) {
|
||||
padding: 2px 6px;
|
||||
border-radius: 6px;
|
||||
border-radius: 4px;
|
||||
background: #e2e8f0;
|
||||
font-size: 12px;
|
||||
}
|
||||
@@ -1160,7 +1157,7 @@
|
||||
.message-answer-markdown :deep(pre) {
|
||||
overflow-x: auto;
|
||||
padding: 12px;
|
||||
border-radius: 14px;
|
||||
border-radius: 4px;
|
||||
background: #0f172a;
|
||||
color: #e2e8f0;
|
||||
}
|
||||
@@ -1218,7 +1215,7 @@
|
||||
margin: 8px 0 10px;
|
||||
overflow-x: auto;
|
||||
border: 1px solid #dbe4ee;
|
||||
border-radius: 10px;
|
||||
border-radius: 4px;
|
||||
background: #fff;
|
||||
box-shadow: 0 8px 20px rgba(15, 23, 42, 0.05);
|
||||
}
|
||||
@@ -1262,13 +1259,6 @@
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.message-meta-row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.message-suggested-actions {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
@@ -1276,7 +1266,7 @@
|
||||
margin-top: 14px;
|
||||
padding: 10px;
|
||||
border: 1px solid rgba(203, 213, 225, 0.72);
|
||||
border-radius: 14px;
|
||||
border-radius: 4px;
|
||||
background:
|
||||
linear-gradient(180deg, rgba(248, 250, 252, 0.92), rgba(255, 255, 255, 0.98));
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.78);
|
||||
@@ -1291,7 +1281,7 @@
|
||||
gap: 10px;
|
||||
padding: 12px 11px;
|
||||
border: 1px solid rgba(203, 213, 225, 0.8);
|
||||
border-radius: 10px;
|
||||
border-radius: 4px;
|
||||
background: rgba(255, 255, 255, 0.9);
|
||||
color: #0f172a;
|
||||
text-align: left;
|
||||
@@ -1309,7 +1299,7 @@
|
||||
height: 34px;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
border-radius: 10px;
|
||||
border-radius: 4px;
|
||||
background: #f1f5f9;
|
||||
color: var(--theme-primary-active);
|
||||
font-size: 18px;
|
||||
@@ -1396,7 +1386,6 @@
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.message-meta-chip,
|
||||
.capability-chip,
|
||||
.risk-chip,
|
||||
.message-risk-chip,
|
||||
@@ -1405,35 +1394,16 @@
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 0 10px;
|
||||
border-radius: 999px;
|
||||
border-radius: 4px;
|
||||
font-size: var(--wb-fs-chip);
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.message-meta-chip,
|
||||
.capability-chip {
|
||||
background: #eef6ff;
|
||||
color: #1d4ed8;
|
||||
}
|
||||
|
||||
.message-meta-chip.high {
|
||||
background: #fef2f2;
|
||||
color: #dc2626;
|
||||
border: 1px solid #fecaca;
|
||||
}
|
||||
|
||||
.message-meta-chip.medium {
|
||||
background: #fffbeb;
|
||||
color: #b45309;
|
||||
border: 1px solid #fde68a;
|
||||
}
|
||||
|
||||
.message-meta-chip.low {
|
||||
background: #eff6ff;
|
||||
color: #1d4ed8;
|
||||
border: 1px solid #bfdbfe;
|
||||
}
|
||||
|
||||
.risk-chip,
|
||||
.message-risk-chip {
|
||||
background: #fff1f2;
|
||||
@@ -1460,7 +1430,7 @@
|
||||
.message-citation-disclosure {
|
||||
overflow: hidden;
|
||||
border: 1px solid #dbe4ee;
|
||||
border-radius: 16px;
|
||||
border-radius: 4px;
|
||||
background: #fbfdff;
|
||||
}
|
||||
|
||||
@@ -1531,7 +1501,7 @@
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 0 10px;
|
||||
border-radius: 999px;
|
||||
border-radius: 4px;
|
||||
font-size: 11px;
|
||||
font-weight: 800;
|
||||
background: #eef2ff;
|
||||
@@ -1571,7 +1541,7 @@
|
||||
gap: 10px;
|
||||
padding: 10px 12px;
|
||||
border: 1px solid #dbe4ee;
|
||||
border-radius: 14px;
|
||||
border-radius: 4px;
|
||||
background: #fbfdff;
|
||||
cursor: pointer;
|
||||
font: inherit;
|
||||
@@ -1646,7 +1616,7 @@
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 0 8px;
|
||||
border-radius: 999px;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
font-weight: 800;
|
||||
background: #f1f5f9;
|
||||
@@ -1698,7 +1668,7 @@
|
||||
gap: 5px;
|
||||
padding: 0 8px;
|
||||
border: 1px solid #fecaca;
|
||||
border-radius: 999px;
|
||||
border-radius: 4px;
|
||||
background: #fff7ed;
|
||||
color: #9a3412;
|
||||
font: inherit;
|
||||
@@ -1763,7 +1733,7 @@
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 1px solid #dbe4ee;
|
||||
border-radius: 999px;
|
||||
border-radius: 4px;
|
||||
background: #fff;
|
||||
color: #475569;
|
||||
transition: border-color 0.2s ease, color 0.2s ease, background 0.2s ease;
|
||||
@@ -1808,7 +1778,7 @@
|
||||
gap: 10px;
|
||||
padding: 0 14px;
|
||||
border: 1px dashed #dbe4ee;
|
||||
border-radius: 16px;
|
||||
border-radius: 4px;
|
||||
color: #64748b;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
@@ -1845,7 +1815,7 @@
|
||||
.action-card {
|
||||
padding: 12px 14px;
|
||||
border: 1px solid #e2e8f0;
|
||||
border-radius: 16px;
|
||||
border-radius: 4px;
|
||||
background: #f8fbff;
|
||||
}
|
||||
|
||||
@@ -1887,8 +1857,8 @@
|
||||
margin-top: 12px;
|
||||
padding: 12px 14px;
|
||||
border: 1px solid #dbe3ec;
|
||||
border-radius: 16px;
|
||||
background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
|
||||
border-radius: 4px;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.draft-preview header {
|
||||
@@ -1931,7 +1901,7 @@
|
||||
gap: 6px;
|
||||
padding: 0 10px;
|
||||
border: 0;
|
||||
border-radius: 999px;
|
||||
border-radius: 4px;
|
||||
background: #f1f5f9;
|
||||
color: #475569;
|
||||
font-size: 12px;
|
||||
@@ -1990,7 +1960,7 @@
|
||||
gap: 12px;
|
||||
padding: 14px;
|
||||
border: 1px solid rgba(203, 213, 225, 0.92);
|
||||
border-radius: 16px;
|
||||
border-radius: 4px;
|
||||
background: rgba(255, 255, 255, 0.98);
|
||||
box-shadow:
|
||||
0 18px 40px rgba(15, 23, 42, 0.16),
|
||||
@@ -2007,7 +1977,7 @@
|
||||
gap: 12px;
|
||||
padding: 14px;
|
||||
border: 1px solid rgba(203, 213, 225, 0.92);
|
||||
border-radius: 16px;
|
||||
border-radius: 4px;
|
||||
background: rgba(255, 255, 255, 0.98);
|
||||
box-shadow:
|
||||
0 18px 40px rgba(15, 23, 42, 0.16),
|
||||
|
||||
Reference in New Issue
Block a user