Quellcode durchsuchen

docs: 补充重试原则 - 全部 user-triggered,无自动重试

明确设计不引入 setTimeout/指数退避/自动重连,失败后 UI 回到可点状态由
用户再次点击触发重试。说明 greeting 失败保留 error-card 而不完全清空
loading 的理由。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
jimmylee vor 2 Monaten
Ursprung
Commit
14319a1a42
1 geänderte Dateien mit 11 neuen und 0 gelöschten Zeilen
  1. 11 0
      doc/DialogueSessionSplitDesign.md

+ 11 - 0
doc/DialogueSessionSplitDesign.md

@@ -44,6 +44,17 @@
 
 `POST /session/{id}/greeting` 必须幂等:若该 session `round=1` 已存在 `role='ai'` 消息,直接返回已有内容,不重复落库、不重复调 LLM。这让前端重试 100% 安全。
 
+### 2.4 重试原则:全部 user-triggered,失败即回到可点状态
+
+设计里**不引入任何自动重试机制**(无 setTimeout、无指数退避、无 onError 自动重连)。所有失败的处理一律遵循:
+
+- **不自动重发请求**
+- 失败后 UI 回到"失败前状态 + 一个明确可点击的重试入口",用户再次点击才触发请求
+- 对 session 创建:失败入口 = Ready 页"开始对话"按钮本身
+- 对 greeting / 对话中 AI / 学生消息:失败入口 = 消息上的 error-card"重新生成"/"重试"按钮
+
+之所以 greeting 失败是"把 loading 消息直接改成 error-card"而不是"完全移除 loading,什么都不显示",是为了让重试入口有明确的点击目标 —— 完全清空会让用户无法感知失败位置。从交互语义上,error-card 可视为 typing-bubble 的等价替代态,**仍符合"回到失败前状态"** 的原则。
+
 ---
 
 ## 3. API 契约变化