from __future__ import annotations import sys from pathlib import Path from fastapi import FastAPI PROJECT_ROOT = Path(__file__).resolve().parents[1] QA_SERVICE_ROOT = PROJECT_ROOT / "services" / "qa_v1_1_73" if str(QA_SERVICE_ROOT) not in sys.path: sys.path.insert(0, str(QA_SERVICE_ROOT)) from src.rag.qa_v1_1_73 import __version__ from src.rag.qa_v1_1_73.api import router from src.rag.qa_v1_1_73.backend_guard import validate_backends app = FastAPI( title="Plant Biology QA V1.1.73", version=__version__, description=( "Production full-graph QA with assertion-anchored Qdrant recall, " "bounded canonical Neo4j expansion, BGE reranking, and citation validation." ), ) app.include_router(router) @app.on_event("startup") def validate_production_backends() -> None: app.state.kb_backend_identity = validate_backends() @app.get("/health") def health(): return { "status": "ok", "service": "qa_v1_1_73", "version": __version__, "source": "plantai_git_repository", "backend": app.state.kb_backend_identity, }