Spaces:
Runtime error
Runtime error
Download api/main.py from Satyam311/maintenance-classifier-api: direct link, hf CLI and curl.
- Browser
- Download file 2.44 kB
-
https://huggingface.co/spaces/Satyam311/maintenance-classifier-api/resolve/main/api/main.py
- Command line
-
hf download hf://spaces/Satyam311/maintenance-classifier-api/api/main.py
-
curl -L -o main.py https://huggingface.co/spaces/Satyam311/maintenance-classifier-api/resolve/main/api/main.py
2.44 kB
| import logging | |
| from fastapi import FastAPI | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from api.config import IS_PRODUCTION, FRONTEND_URL | |
| from api.routes.classify import router as classify_router | |
| from api.routes.search import router as search_router | |
| from api.routes.corrections import router as corrections_router | |
| from api.routes.ask import router as ask_router | |
| from api.routes.stats import router as stats_router | |
| from api.routes.model_performance import router as model_performance_router | |
| from api.services.model_service import model_service | |
| from api.services.embedding_service import embedding_service | |
| from api.services.vector_store import vector_store | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| app = FastAPI(title="Maintenance Log Classifier API", version="0.1.0") | |
| # CORS: permissive in dev to make local frontend work painlessly; tighten before any | |
| # real deployment (per Security doc's "ENV toggles debug logging and CORS rules") | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"] if not IS_PRODUCTION else ([FRONTEND_URL] if FRONTEND_URL else []), | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| def load_models_on_startup(): | |
| from api.services.model_downloader import ensure_models_available | |
| ensure_models_available() | |
| logger.info("Loading models...") | |
| model_service.load() | |
| if not model_service.loaded: | |
| logger.error(f"Models failed to load: {model_service.load_error}") | |
| embedding_service.load() | |
| if not embedding_service.loaded: | |
| logger.warning(f"Embedding model failed to load (search will degrade): {embedding_service.load_error}") | |
| vector_store.load() | |
| if not vector_store.loaded: | |
| logger.warning(f"Vector store failed to load (search will degrade): {vector_store.load_error}") | |
| def health(): | |
| return { | |
| "status": "ok" if model_service.loaded else "degraded", | |
| "models_loaded": model_service.loaded, | |
| } | |
| app.include_router(classify_router) | |
| app.include_router(search_router) | |
| app.include_router(corrections_router) | |
| app.include_router(ask_router) | |
| app.include_router(stats_router) | |
| app.include_router(model_performance_router) | |
| from fastapi.staticfiles import StaticFiles | |
| from api.config import BASE_DIR | |
| _reports_dir = BASE_DIR / "reports" | |
| if _reports_dir.exists(): | |
| app.mount("/reports", StaticFiles(directory=str(_reports_dir)), name="reports") | |