重构: 移除 AI 消息重新生成入口及配套调整
- MessageList: 移除末条 AI 消息重新生成操作栏入口 - package.json: build:dev 改 tauri build --debug --no-bundle(只编译不打包) - 文档: workspace_root 弱化决策 + BUG-260625-01/02 工具修复记录
This commit is contained in:
@@ -722,20 +722,6 @@ async function copyMsgContent(msg: AiMessage): Promise<void> {
|
||||
})
|
||||
}
|
||||
|
||||
// ── UX-02: 重新生成最后一条 AI 回复 ──
|
||||
// 复用 store.regenerate(后端 ai_regenerate:弹末尾 AI 回复→重跑 loop)。
|
||||
// 失败 toast 提示,不影响其他状态(后端已复位 generating)。
|
||||
async function handleRegenerate(): Promise<void> {
|
||||
try {
|
||||
await store.regenerate()
|
||||
await nextTick()
|
||||
scrollToBottom()
|
||||
} catch (e) {
|
||||
const msg = e instanceof Error ? e.message : String(e)
|
||||
emit('toast', { msg: t('aiChat.regenerateFailed', { msg }), type: 'error' })
|
||||
}
|
||||
}
|
||||
|
||||
// ── UX-03: 错误气泡操作入口 ──
|
||||
// errorType 经 useAiEvents push 错误消息时附带(types.ts AiMessage 未含此字段,
|
||||
// 经 cast 读写闭环在 AiChat.vue / useAiEvents 两端,不污染 types.ts 定义)。
|
||||
@@ -1059,33 +1045,8 @@ defineExpose({
|
||||
<span class="ai-cursor"></span>
|
||||
</div>
|
||||
|
||||
<!-- UX-02:AI 消息操作栏(hover 显示:重新生成)。
|
||||
复制走气泡内右下角图标(ai-copy-btn--ai),本栏仅留重新生成,故只在
|
||||
末条 AI 消息(重生成语义)、非错误、有内容、非流式中显示。 -->
|
||||
<div
|
||||
v-if="isLastAi(item.msg) && item.msg.content && !item.msg.isError && !store.state.streaming"
|
||||
class="ai-msg-actions"
|
||||
>
|
||||
<button
|
||||
class="ai-msg-act"
|
||||
:disabled="store.state.streaming"
|
||||
:title="$t('aiChat.regenerate')"
|
||||
@click.stop="handleRegenerate"
|
||||
>
|
||||
<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"/><path d="M20.49 15a9 9 0 11-2.12-9.36L23 10"/></svg>
|
||||
<span>{{ $t('aiChat.regenerate') }}</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- UX-03 / UX-260616-01:错误气泡操作入口(重试 / 去设置)。
|
||||
仅 isError 消息显示;「重试」仅可重试错误(network/timeout/unknown)显示,
|
||||
Fatal 类(auth/provider_config — 鉴权/4xx/参数错)重试必败故隐藏;
|
||||
「去设置」仅 error_type ∈ {auth, provider_config} 显示;
|
||||
Fatal 时附 notRetryable 提示,说明为何无重试按钮。 -->
|
||||
<div
|
||||
v-if="item.msg.isError && !store.state.streaming"
|
||||
class="ai-msg-actions ai-msg-actions--error"
|
||||
>
|
||||
<!-- UX-03 / UX-260616-01:错误气泡操作入口(重试 / 去设置) -->
|
||||
<div v-if="item.msg.isError" class="ai-msg-actions ai-msg-actions--error">
|
||||
<span v-if="!canRetry(item.msg)" class="ai-msg-not-retryable">{{ $t('ai.notRetryable') }}</span>
|
||||
<button
|
||||
v-if="canRetry(item.msg)"
|
||||
|
||||
Reference in New Issue
Block a user