Initial commit: 浼佷笟寰俊 AI 鏈哄櫒浜哄姪鐞?MVP
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
30
backend/app/services/session_service.py
Normal file
30
backend/app/services/session_service.py
Normal file
@@ -0,0 +1,30 @@
|
||||
"""会话与消息入库;仅存 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
|
||||
Reference in New Issue
Block a user