Files
life-echo/api/tests/test_session_history.py
Kevin 8af37e5e8e 修复:CI 部署环境与 ref 错配、迁移碎片化、图片意图 source_span、章节物化脏版式、会话历史与本地语音不一致
新增:TTS 上传 COS 与分片、章节 reading_segments 物化与快照、markdown 清洗、会话消息 repository、语音 store 重构与相关测试
2026-03-20 16:43:02 +08:00

58 lines
2.1 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.
"""session_history 纯映射测试ConversationService 的会话层,非 Agent"""
import unittest
from datetime import datetime, timezone
from app.features.conversation.models import Segment
from app.features.conversation.session_history import segments_to_redis_history
class SegmentsToRedisHistoryTest(unittest.TestCase):
def test_text_turn_maps_to_human_and_ai(self):
seg = Segment(
id="s1",
conversation_id="c1",
transcript_text="我在杭州长大",
audio_url=None,
created_at=datetime(2024, 1, 2, 3, 4, 5, tzinfo=timezone.utc),
agent_response="听起来很温润的城市。",
)
h = segments_to_redis_history([seg])
self.assertEqual(len(h), 2)
self.assertEqual(h[0]["role"], "human")
self.assertEqual(h[0]["messageType"], "text")
self.assertEqual(h[0]["content"], "我在杭州长大")
self.assertEqual(h[1]["role"], "ai")
self.assertEqual(h[1]["content"], "听起来很温润的城市。")
def test_voice_segment_sets_voice_session_id(self):
seg = Segment(
id="s1",
conversation_id="c1",
transcript_text="",
audio_url="audio-segment:vs-9:0",
created_at=datetime(2024, 1, 2, tzinfo=timezone.utc),
agent_response=None,
)
h = segments_to_redis_history([seg])
self.assertEqual(len(h), 1)
self.assertEqual(h[0]["messageType"], "audio")
self.assertEqual(h[0]["voiceSessionId"], "vs-9")
def test_voice_segment_includes_duration_seconds_when_set(self):
seg = Segment(
id="s1",
conversation_id="c1",
transcript_text="",
audio_url="audio-segment:vs-9:0",
audio_duration_seconds=12,
created_at=datetime(2024, 1, 2, tzinfo=timezone.utc),
agent_response=None,
)
h = segments_to_redis_history([seg])
self.assertEqual(h[0]["durationSeconds"], 12)
if __name__ == "__main__":
unittest.main()