feat: 报销预审会话状态管理与工作台交互增强
- 新增差旅报销会话状态管理与对话模型重构 - 增强风险观测服务与运行时聊天上下文作用域 - 优化工作台图标资源、助理意图识别与摘要工具 - 完善报销创建视图样式与差旅详情页标准调整交互 - 补充风险观测、运行时聊天与报销端点测试覆盖
This commit is contained in:
@@ -10,11 +10,43 @@
|
||||
/>
|
||||
</span>
|
||||
|
||||
<div class="message-bubble" :class="ui.buildMessageBubbleClass(message)">
|
||||
<div class="message-stack">
|
||||
<details
|
||||
v-if="message.role === 'assistant' && message.stewardPlan && (message.stewardPlan.streamStatus === 'streaming' || message.stewardPlan.thinkingEvents?.length)"
|
||||
class="steward-intent-bubble"
|
||||
:open="message.stewardPlan.streamStatus === 'streaming'"
|
||||
aria-label="小财管家意图识别智能体"
|
||||
>
|
||||
<summary>
|
||||
<span>
|
||||
<i class="mdi mdi-brain"></i>
|
||||
意图识别智能体
|
||||
</span>
|
||||
<small>{{ message.stewardPlan.streamStatus === 'streaming' ? '识别中' : `${message.stewardPlan.thinkingEvents?.length || 0} 步` }}</small>
|
||||
<i class="mdi mdi-chevron-down"></i>
|
||||
</summary>
|
||||
<ol v-if="message.stewardPlan.thinkingEvents?.length" class="steward-intent-event-list">
|
||||
<li
|
||||
v-for="event in (message.stewardPlan.thinkingEvents || []).slice(0, message.stewardPlan.visibleThinkingEventCount || message.stewardPlan.thinkingEvents?.length || 0)"
|
||||
:key="`${message.id}-${event.eventId}`"
|
||||
>
|
||||
<strong>{{ event.title }}</strong>
|
||||
<span>{{ event.content }}</span>
|
||||
</li>
|
||||
</ol>
|
||||
<p v-else class="steward-intent-empty">正在建立任务上下文...</p>
|
||||
</details>
|
||||
|
||||
<div
|
||||
v-if="!message.stewardPlan || message.stewardPlan.streamStatus !== 'streaming' || message.text"
|
||||
class="message-bubble"
|
||||
:class="ui.buildMessageBubbleClass(message)"
|
||||
>
|
||||
<header class="message-meta">
|
||||
<strong>{{ message.role === 'assistant' ? (message.assistantName || ui.ASSISTANT_DISPLAY_NAME) : '我' }}</strong>
|
||||
<time>{{ message.time }}</time>
|
||||
</header>
|
||||
|
||||
<div
|
||||
v-if="message.text && message.role === 'assistant' && message.reviewPayload && ui.buildReviewMainMessageText(message)"
|
||||
class="review-summary message-answer-content message-answer-markdown"
|
||||
@@ -40,6 +72,59 @@
|
||||
:report="message.budgetReport"
|
||||
/>
|
||||
|
||||
<div
|
||||
v-if="message.role === 'assistant' && message.stewardPlan && message.stewardPlan.streamStatus !== 'streaming'"
|
||||
class="steward-plan-block"
|
||||
role="group"
|
||||
aria-label="小财管家任务计划"
|
||||
>
|
||||
<div v-if="message.stewardPlan.tasks?.length" class="steward-task-list">
|
||||
<article
|
||||
v-for="task in message.stewardPlan.tasks"
|
||||
:key="`${message.id}-${task.taskId}`"
|
||||
class="steward-task-card"
|
||||
>
|
||||
<header>
|
||||
<span>{{ task.taskTypeLabel }}</span>
|
||||
<small>{{ task.assignedAgentLabel }}</small>
|
||||
</header>
|
||||
<strong>{{ task.title }}</strong>
|
||||
<p>{{ task.summary }}</p>
|
||||
<div class="steward-task-meta">
|
||||
<span>置信度 {{ Math.round((task.confidence || 0) * 100) }}%</span>
|
||||
<span v-if="task.missingFields?.length">待补充 {{ task.missingFields.join('、') }}</span>
|
||||
<span v-else>字段已齐备</span>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div v-if="message.stewardPlan.attachmentGroups?.length" class="steward-attachment-list">
|
||||
<article
|
||||
v-for="group in message.stewardPlan.attachmentGroups"
|
||||
:key="`${message.id}-${group.groupId}`"
|
||||
class="steward-attachment-card"
|
||||
>
|
||||
<header>
|
||||
<span>{{ group.sceneLabel }}</span>
|
||||
<small>{{ Math.round((group.confidence || 0) * 100) }}%</small>
|
||||
</header>
|
||||
<p>{{ group.rationale }}</p>
|
||||
<div class="steward-attachment-chip-row">
|
||||
<span
|
||||
v-for="name in group.attachmentNames"
|
||||
:key="`${group.groupId}-in-${name}`"
|
||||
class="steward-attachment-chip include"
|
||||
>{{ name }}</span>
|
||||
<span
|
||||
v-for="name in group.excludedAttachmentNames"
|
||||
:key="`${group.groupId}-out-${name}`"
|
||||
class="steward-attachment-chip exclude"
|
||||
>排除:{{ name }}</span>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
v-if="message.role === 'assistant' && message.applicationPreview"
|
||||
class="application-preview-table"
|
||||
@@ -472,6 +557,7 @@
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
v-if="ui.isOperationFeedbackVisible(message)"
|
||||
|
||||
Reference in New Issue
Block a user