Spaces:
Running
Running
| from __future__ import annotations | |
| import os | |
| from app.config import settings | |
| from fastapi import APIRouter, Depends, HTTPException | |
| from api.auth import require_pipeline_guid | |
| from database.connection import connect | |
| from database.retrain_repository import ( | |
| acknowledge_flag, get_database_url, get_pending_flag, resolve_flag | |
| ) | |
| router = APIRouter(prefix="/retrain", tags=["retraining"]) | |
| def _db(): | |
| value = settings.DATABASE_URL | |
| if not value: | |
| raise HTTPException(status_code=500, detail="DATABASE_URL is not configured") | |
| return value | |
| def retrain_status(): | |
| with connect(_db()) as conn: | |
| pending = get_pending_flag(conn) | |
| return {"retrain_required": pending is not None, "flag": pending} | |
| def acknowledge(flag_id: int, notes: str | None = None): | |
| with connect(_db()) as conn: | |
| updated = acknowledge_flag(conn, flag_id, notes) | |
| if updated is None: | |
| raise HTTPException(status_code=404, detail="Pending retrain flag not found") | |
| return {"status": "acknowledged", "flag_id": updated} | |
| def resolve(flag_id: int, notes: str | None = None): | |
| with connect(_db()) as conn: | |
| updated = resolve_flag(conn, flag_id, notes) | |
| if updated is None: | |
| raise HTTPException(status_code=404, detail="Open retrain flag not found") | |
| return {"status": "resolved", "flag_id": updated} | |