initial commit

This commit is contained in:
2026-02-12 18:45:10 +01:00
commit be7bbba456
42 changed files with 3767 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
"""FluentGerman.ai — Instruction assembly service."""
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.models import Instruction, InstructionType
async def get_system_prompt(db: AsyncSession, user_id: int) -> str:
"""Assemble the full system prompt from global + personal + homework instructions."""
# Global instructions (no user_id)
result = await db.execute(
select(Instruction).where(
Instruction.user_id.is_(None),
Instruction.type == InstructionType.GLOBAL,
)
)
global_instructions = result.scalars().all()
# Personal + homework for this user
result = await db.execute(
select(Instruction).where(Instruction.user_id == user_id)
)
user_instructions = result.scalars().all()
parts: list[str] = []
if global_instructions:
parts.append("=== TEACHING METHOD ===")
for inst in global_instructions:
parts.append(f"[{inst.title}]\n{inst.content}")
personal = [i for i in user_instructions if i.type == InstructionType.PERSONAL]
if personal:
parts.append("\n=== PERSONAL INSTRUCTIONS ===")
for inst in personal:
parts.append(f"[{inst.title}]\n{inst.content}")
homework = [i for i in user_instructions if i.type == InstructionType.HOMEWORK]
if homework:
parts.append("\n=== CURRENT HOMEWORK ===")
for inst in homework:
parts.append(f"[{inst.title}]\n{inst.content}")
if not parts:
return (
"You are a helpful German language tutor. Help the student learn German "
"through conversation, corrections, and explanations."
)
return "\n\n".join(parts)