import uuid from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.models.context_file import ContextFile DEFAULT_SYSTEM_PROMPT = """You are a personal AI health assistant. Your role is to: - Help users understand their health data and medical documents - Provide health-related recommendations based on uploaded information - Schedule reminders for checkups, medications, and health-related activities - Compile health summaries when requested - Answer health questions clearly and compassionately Always be empathetic, accurate, and clear. When uncertain, recommend consulting a healthcare professional. You can communicate in English and Russian based on the user's preference.""" async def get_primary_context(db: AsyncSession) -> ContextFile | None: result = await db.execute( select(ContextFile).where(ContextFile.type == "primary", ContextFile.user_id.is_(None)) ) return result.scalar_one_or_none() async def get_personal_context(db: AsyncSession, user_id: uuid.UUID) -> ContextFile | None: result = await db.execute( select(ContextFile).where(ContextFile.type == "personal", ContextFile.user_id == user_id) ) return result.scalar_one_or_none() async def upsert_personal_context( db: AsyncSession, user_id: uuid.UUID, content: str ) -> ContextFile: ctx = await get_personal_context(db, user_id) if ctx: ctx.content = content ctx.version = ctx.version + 1 ctx.updated_by = user_id else: ctx = ContextFile( type="personal", user_id=user_id, content=content, version=1, updated_by=user_id, ) db.add(ctx) await db.flush() return ctx async def upsert_primary_context( db: AsyncSession, content: str, admin_user_id: uuid.UUID ) -> ContextFile: ctx = await get_primary_context(db) if ctx: ctx.content = content ctx.version = ctx.version + 1 ctx.updated_by = admin_user_id else: ctx = ContextFile( type="primary", user_id=None, content=content, version=1, updated_by=admin_user_id, ) db.add(ctx) await db.flush() return ctx