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

@@ -56,16 +56,52 @@
object-fit: cover;
}
.message-bubble {
max-width: min(100%, 760px);
padding: 12px 14px;
border: 1px solid #d8e4f0;
border-radius: 4px;
background: #ffffff;
color: #24324a;
font-size: var(--wb-fs-bubble, 13px);
line-height: 1.62;
box-shadow: 0 10px 22px rgba(148, 163, 184, 0.14);
.message-bubble-compact-guidance {
max-width: min(100%, 640px);
padding: 10px 12px;
border-color: rgba(var(--theme-primary-rgb, 58, 124, 165), 0.18);
background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
box-shadow: 0 8px 18px rgba(148, 163, 184, 0.12);
}
.message-bubble-compact-guidance .message-meta {
margin-bottom: 6px;
}
.message-bubble-compact-guidance .message-meta strong {
font-size: 12px;
}
.message-bubble-compact-guidance .message-answer-content {
font-size: 12px;
}
.message-bubble-compact-guidance .message-answer-markdown {
display: grid;
gap: 6px;
}
.message-bubble-compact-guidance .message-answer-markdown :deep(h3) {
margin: 0;
padding-left: 8px;
border-left: 3px solid rgba(var(--theme-primary-rgb, 58, 124, 165), 0.42);
color: #17324a;
font-size: 12px;
font-weight: 860;
line-height: 1.4;
}
.message-bubble-compact-guidance .message-answer-markdown :deep(ul),
.message-bubble-compact-guidance .message-answer-markdown :deep(ol) {
gap: 4px;
}
.message-bubble-compact-guidance .message-answer-markdown :deep(li) {
line-height: 1.55;
}
.message-bubble-compact-guidance .message-suggested-actions {
margin-top: 8px;
}
.message-row.has-steward-plan .message-bubble {
@@ -135,7 +171,7 @@
.steward-intent-event-list {
margin: 0;
padding: 0 12px 12px 30px;
padding: 0 12px 12px 44px;
display: grid;
gap: 7px;
}
@@ -274,6 +310,42 @@
color: #24324a;
}
.message-answer-markdown {
display: grid;
gap: 8px;
word-break: break-word;
overflow-wrap: anywhere;
}
.message-answer-markdown :deep(h1),
.message-answer-markdown :deep(h2),
.message-answer-markdown :deep(h3),
.message-answer-markdown :deep(h4) {
margin: 0;
color: #0f172a;
line-height: 1.35;
}
.message-answer-markdown :deep(h1) {
font-size: 15px;
font-weight: 860;
}
.message-answer-markdown :deep(h2) {
font-size: 14px;
font-weight: 850;
}
.message-answer-markdown :deep(h3) {
font-size: 13px;
font-weight: 840;
}
.message-answer-markdown :deep(h4) {
font-size: 12px;
font-weight: 820;
}
.message-answer-markdown :deep(p),
.message-answer-markdown :deep(li),
.message-answer-markdown :deep(td),
@@ -281,16 +353,66 @@
.message-answer-markdown :deep(blockquote) {
margin: 0;
color: inherit;
line-height: 1.62;
line-height: 1.6;
}
.message-answer-markdown :deep(p + p),
.message-answer-markdown :deep(p + ul),
.message-answer-markdown :deep(p + ol),
.message-answer-markdown :deep(ul + p),
.message-answer-markdown :deep(ol + p) {
.message-answer-markdown :deep(ol + p),
.message-answer-markdown :deep(blockquote + p) {
margin-top: 8px;
}
.message-answer-markdown :deep(ul),
.message-answer-markdown :deep(ol) {
margin: 0;
padding-left: 1.2em;
display: grid;
gap: 6px;
}
.message-answer-markdown :deep(li) {
margin: 0;
}
.message-answer-markdown :deep(li > p) {
margin: 0;
}
.message-answer-markdown :deep(blockquote) {
padding: 8px 10px;
border-left: 3px solid rgba(var(--theme-primary-rgb, 58, 124, 165), 0.38);
border-radius: 4px;
background: #f8fbff;
color: #475569;
}
.message-answer-markdown :deep(code) {
padding: 0 5px;
border-radius: 4px;
background: #eef6fb;
color: #1d4ed8;
font-size: 0.95em;
}
.message-answer-markdown :deep(pre) {
margin: 0;
padding: 10px 12px;
overflow: auto;
border-radius: 4px;
background: #0f172a;
color: #e2e8f0;
}
.message-answer-markdown :deep(pre code) {
padding: 0;
background: transparent;
color: inherit;
font-size: 12px;
}
.message-answer-markdown :deep(strong) {
color: #0f172a;
font-weight: 850;
@@ -649,6 +771,40 @@
gap: 8px;
}
.message-bubble-compact-guidance .message-suggested-actions.compact-guidance-actions {
grid-template-columns: repeat(auto-fit, minmax(136px, 1fr));
gap: 6px;
}
.message-bubble-compact-guidance .message-suggested-actions.compact-guidance-actions .message-suggested-action-btn {
min-height: 40px;
padding: 8px 10px;
grid-template-columns: 22px minmax(0, 1fr);
gap: 8px;
border-color: rgba(var(--theme-primary-rgb, 58, 124, 165), 0.18);
background: #ffffff;
}
.message-bubble-compact-guidance .message-suggested-actions.compact-guidance-actions .message-suggested-action-icon {
width: 22px;
height: 22px;
font-size: 13px;
}
.message-bubble-compact-guidance .message-suggested-actions.compact-guidance-actions .message-suggested-action-copy {
gap: 0;
}
.message-bubble-compact-guidance .message-suggested-actions.compact-guidance-actions .message-suggested-action-title {
font-size: 12px;
line-height: 1.35;
}
.message-bubble-compact-guidance .message-suggested-actions.compact-guidance-actions .message-suggested-action-btn small,
.message-bubble-compact-guidance .message-suggested-actions.compact-guidance-actions .message-suggested-action-arrow {
display: none;
}
.structured-card-reveal-enter-active {
transition:
opacity 220ms cubic-bezier(0.2, 0, 0, 1),