"""aiosqlite DB — 요청/응답 로깅 및 메트릭.""" import aiosqlite from config import settings SCHEMA = """ CREATE TABLE IF NOT EXISTS request_logs ( id INTEGER PRIMARY KEY AUTOINCREMENT, job_id TEXT NOT NULL, message TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'queued', model TEXT NOT NULL, response_chars INTEGER DEFAULT 0, latency_ms REAL DEFAULT 0, created_at REAL NOT NULL, completed_at REAL ); CREATE INDEX IF NOT EXISTS idx_logs_job ON request_logs(job_id); CREATE INDEX IF NOT EXISTS idx_logs_created ON request_logs(created_at); """ async def init_db(): async with aiosqlite.connect(settings.db_path) as db: await db.execute("PRAGMA journal_mode=WAL") await db.executescript(SCHEMA) await db.commit() async def log_request(job_id: str, message: str, model: str, created_at: float): async with aiosqlite.connect(settings.db_path) as db: await db.execute( "INSERT INTO request_logs (job_id, message, model, created_at) VALUES (?, ?, ?, ?)", (job_id, message, model, created_at), ) await db.commit() async def log_completion(job_id: str, status: str, response_chars: int, latency_ms: float, completed_at: float): async with aiosqlite.connect(settings.db_path) as db: await db.execute( "UPDATE request_logs SET status=?, response_chars=?, latency_ms=?, completed_at=? WHERE job_id=?", (status, response_chars, latency_ms, completed_at, job_id), ) await db.commit()