Files
wecom-ai-assistant/backend/app/services/session_service.py
2026-02-05 16:36:32 +08:00

31 lines
1.0 KiB
Python

"""会话与消息入库;仅存 public 可见内容,隔离内部信息。"""
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.models import ChatSession, Message
async def get_or_create_session(
db: AsyncSession,
external_user_id: str,
external_name: str | None = None,
) -> ChatSession:
r = await db.execute(select(ChatSession).where(ChatSession.external_user_id == external_user_id))
row = r.scalar_one_or_none()
if row:
if external_name is not None and row.external_name != external_name:
row.external_name = external_name
await db.flush()
return row
session = ChatSession(external_user_id=external_user_id, external_name=external_name or None)
db.add(session)
await db.flush()
return session
async def add_message(db: AsyncSession, session_id: int, role: str, content: str) -> Message:
msg = Message(session_id=session_id, role=role, content=content)
db.add(msg)
await db.flush()
return msg