Files
life-echo/api/app/features/conversation/session_history.py
Kevin d0c26242db fix(conversation): 离屏不丢回复、列表预热 WS 与非阻塞进入聊天
- 后端:文本/转写后 AI 生成改为独立任务,避免断连取消整轮;按需 TTS 等与 WS 改动
- 前端:RealtimeSession 重绑 UI 时恢复流式 buffer;列表 onPressIn/挂载预热、已有会话立即 push
- 同步会话相关类型、i18n、测试与 env/资源等累计改动

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 17:28:31 +08:00

31 lines
1.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""ConversationMessage -> Redis conversation history 的纯映射(无 I/O"""
from __future__ import annotations
from typing import Any, Dict, List
from app.features.conversation.models import ConversationMessage
def conversation_messages_to_redis_history(
rows: List[ConversationMessage],
) -> List[Dict[str, Any]]:
"""ConversationMessage 行 -> Redis conversation history 项。"""
history: List[Dict[str, Any]] = []
for row in rows:
item: Dict[str, Any] = {
"role": row.role,
"content": row.content,
"messageType": row.message_type,
"timestamp": row.created_at.isoformat() if row.created_at else None,
"durableMessageId": row.id,
}
if row.voice_session_id:
item["voiceSessionId"] = row.voice_session_id
if row.duration_seconds:
item["durationSeconds"] = row.duration_seconds
if row.tts_audio_urls:
item["ttsAudioUrls"] = row.tts_audio_urls
history.append(item)
return history