|
|
@@ -4,11 +4,8 @@
|
|
|
<!-- Ready 阶段:极简首页(参照 enspeak 布局) -->
|
|
|
<div v-if="dialogueState === 'checking-history'" class="ready-stage">
|
|
|
<div class="ready-header">
|
|
|
- <h1 class="ready-title">
|
|
|
- <!-- <span class="ready-title-icon">💬</span> -->
|
|
|
- Topic Discussion
|
|
|
- </h1>
|
|
|
- <p class="ready-subtitle">正在读取你的练习记录...</p>
|
|
|
+ <!-- <h1 class="ready-title">Topic Discussion</h1> -->
|
|
|
+ <!-- <p class="ready-subtitle">正在读取你的练习记录...</p> -->
|
|
|
</div>
|
|
|
<div class="ready-body">
|
|
|
<span class="start-btn-spinner" />
|
|
|
@@ -17,11 +14,8 @@
|
|
|
|
|
|
<div v-else-if="dialogueState === 'ready'" class="ready-stage">
|
|
|
<div class="ready-header">
|
|
|
- <h1 class="ready-title">
|
|
|
- <!-- <span class="ready-title-icon">💬</span> -->
|
|
|
- Topic Discussion
|
|
|
- </h1>
|
|
|
- <p class="ready-subtitle">话题讨论 · 与 AI 伙伴练习英语对话</p>
|
|
|
+ <!-- <h1 class="ready-title">Topic Discussion</h1> -->
|
|
|
+ <!-- <p class="ready-subtitle">话题讨论 · 与 AI 伙伴练习英语对话</p> -->
|
|
|
</div>
|
|
|
|
|
|
<div class="ready-body">
|
|
|
@@ -528,6 +522,9 @@ async function loadConfigFromBackend(id: string) {
|
|
|
const { config } = await getSpeakingConfig(id)
|
|
|
if (!isHistoryTokenCurrent(token)) return
|
|
|
speakingStore.$patch({ config })
|
|
|
+ // $patch 深合并会把后端 config 里的空 systemPrompt/greeting 槽冲掉之前
|
|
|
+ // hydrate 进来的默认值,这里补回一次(只填空槽,保留老师已编辑的值)。
|
|
|
+ speakingStore.applyDialogueDefaults()
|
|
|
} catch (err) {
|
|
|
if (!isHistoryTokenCurrent(token)) return
|
|
|
console.error('[speaking] load config failed:', err)
|