This commit is contained in:
2026-02-20 04:14:16 +00:00
committed by Anibal Angulo
parent 085e4b8610
commit 5fecad8e2d
13 changed files with 492 additions and 1102 deletions

View File

@@ -4,7 +4,7 @@ from datetime import datetime
from redis.asyncio import Redis
from ..config import Settings
from ..models import ConversationSessionDTO
from ..models import ConversationSession
from ..models.notification import NotificationSession, Notification
@@ -48,9 +48,7 @@ class RedisService:
"""Generate Redis key for phone-to-session mapping."""
return f"conversation:phone:{phone}"
async def get_session(
self, session_id_or_phone: str
) -> ConversationSessionDTO | None:
async def get_session(self, session_id_or_phone: str) -> ConversationSession | None:
"""
Retrieve conversation session from Redis by session ID or phone number.
@@ -84,14 +82,14 @@ class RedisService:
try:
session_dict = json.loads(data)
session = ConversationSessionDTO.model_validate(session_dict)
session = ConversationSession.model_validate(session_dict)
logger.debug(f"Retrieved session from Redis: {session_id}")
return session
except Exception as e:
logger.error(f"Error deserializing session {session_id}: {str(e)}")
return None
async def save_session(self, session: ConversationSessionDTO) -> bool:
async def save_session(self, session: ConversationSession) -> bool:
"""
Save conversation session to Redis with TTL.
@@ -156,7 +154,7 @@ class RedisService:
Args:
session_id: The session ID
message: ConversationMessageDTO or ConversationEntryDTO
message: ConversationEntry
Returns:
True if successful, False otherwise
@@ -285,9 +283,7 @@ class RedisService:
# Save to Redis
await self._cache_notification_session(updated_session)
async def _cache_notification_session(
self, session: NotificationSession
) -> bool:
async def _cache_notification_session(self, session: NotificationSession) -> bool:
"""Cache notification session in Redis."""
if not self.redis:
raise RuntimeError("Redis client not connected")