from fastapi import APIRouter, Depends from sqlalchemy import text from sqlalchemy.orm import Session from app.config import settings from app.db import get_db router = APIRouter(prefix="/api", tags=["version"]) @router.get("/version") def get_version(db: Session = Depends(get_db)) -> dict: """Build + schema version, for the About dialog and the 'new version' banner. Intentionally public (no auth) and cheap: just env-baked build info plus the current Alembic migration head (the 'database version'). app_version/git_sha/build_date are injected at image build time (see the Dockerfile build-args).""" db_revision = db.execute(text("SELECT version_num FROM alembic_version")).scalar() return { "app_version": settings.app_version, "git_sha": settings.git_sha, "build_date": settings.build_date or None, "db_revision": db_revision, }