feat(web): 工作台 AI 模式与差旅/风险建议交互优化

- 新增 PersonalWorkbenchAiMode 组件、AI 侧边栏与 orb 机器人视觉资源
- 新增 aiApplicationDraftModel / aiExpenseDraftModel / aiWorkbenchConversationStore
  及业务准入 aiSidebarBusinessAccess,支撑 AI 模式下的申请与报销草稿
- 顶栏、侧边栏、工作台样式重构,适配 AI 模式切换与响应式布局
- 同步 steward plan/off_topic、差旅报销引导流、风险建议卡片等测试
This commit is contained in:
caoxiaozhu
2026-06-18 22:12:24 +08:00
parent a6674a1e76
commit 0cde1f8990
65 changed files with 8011 additions and 1608 deletions

View File

@@ -380,6 +380,14 @@
min-width: 0;
}
.topbar-utility-actions {
display: inline-flex;
align-items: center;
justify-content: flex-end;
gap: 10px;
min-width: 0;
}
.topbar-icon-btn {
position: relative;
width: 34px;
@@ -1113,6 +1121,68 @@
font-size: 16px;
}
.topbar-ai-mode-toggle {
flex: 0 0 38px;
width: 38px;
height: 38px;
display: inline-grid;
place-items: center;
padding: 0;
border: 2px solid transparent;
border-radius: 50%;
background:
linear-gradient(#ffffff, #ffffff) padding-box,
conic-gradient(from 210deg, #15b8c8, #4f6fef, #b65cff, #ec4899, #f59e0b, #15b8c8) border-box;
box-shadow:
0 8px 18px rgba(79, 111, 239, 0.16),
0 0 0 1px rgba(255, 255, 255, 0.78) inset;
transition:
transform 180ms var(--ease),
box-shadow 180ms var(--ease),
filter 180ms var(--ease);
}
.topbar-ai-mode-toggle__glyph {
display: inline-block;
background: linear-gradient(135deg, #0ea5b7 4%, #4f6fef 34%, #a855f7 58%, #ec4899 76%, #f59e0b 96%);
background-clip: text;
-webkit-background-clip: text;
color: transparent;
font-size: 15px;
font-weight: 950;
line-height: 1;
letter-spacing: 0;
}
.topbar-ai-mode-toggle:hover,
.topbar-ai-mode-toggle:focus-visible {
transform: translateY(-1px);
box-shadow:
0 12px 24px rgba(79, 111, 239, 0.2),
0 0 0 4px rgba(236, 72, 153, 0.08),
0 0 0 1px rgba(255, 255, 255, 0.86) inset;
}
.topbar-ai-mode-toggle:focus-visible {
outline: 2px solid color-mix(in srgb, var(--theme-primary-active) 72%, #ffffff);
outline-offset: 3px;
}
.topbar-ai-mode-toggle.active {
filter: saturate(1.1);
box-shadow:
0 12px 24px rgba(79, 111, 239, 0.22),
0 0 0 4px rgba(14, 165, 183, 0.09),
0 0 0 1px rgba(255, 255, 255, 0.88) inset;
}
.topbar-ai-mode-toggle:not(.active) {
filter: saturate(0.82);
box-shadow:
0 6px 14px rgba(15, 23, 42, 0.1),
0 0 0 1px rgba(255, 255, 255, 0.82) inset;
}
.kpi-chip {
display: grid;
grid-template-columns: auto auto;
@@ -1259,6 +1329,10 @@
gap: 12px;
}
.topbar-utility-actions {
gap: 8px;
}
.topbar-icon-btn {
width: 30px;
height: 30px;
@@ -1271,6 +1345,16 @@
font-size: 12px;
}
.topbar-ai-mode-toggle {
flex: 0 0 34px;
width: 34px;
height: 34px;
}
.topbar-ai-mode-toggle__glyph {
font-size: 14px;
}
.kpi-chips {
gap: 8px;
}
@@ -1329,6 +1413,7 @@
.search-wrap,
.search-wrap.wide,
.topbar-toolset,
.topbar-utility-actions,
.detail-alert-strip,
.month-chip,
.qa-filter,
@@ -1344,6 +1429,15 @@
justify-content: flex-end;
}
.topbar-utility-actions {
justify-content: flex-end;
}
.topbar-ai-mode-toggle {
width: 34px;
height: 34px;
}
.range-shell {
flex: 1;
}
@@ -1505,6 +1599,10 @@
justify-content: space-between;
}
.topbar-ai-mode-toggle {
flex: 0 0 34px;
}
.range-combo {
display: grid;
gap: 8px;