from fastapi import FastAPI from dotenv import load_dotenv from pathlib import Path from datetime import datetime from dateutil import tz from signing_service.application.settings.container import get_settings from signing_service.application.settings.setup_logger import create_logger from signing_service.api.routes.sign_document import router as sign_router from signing_service.application.settings.version import get_package_version load_dotenv() # 👇 FAIL FAST: load settings at startup settings = get_settings() version = get_package_version() local_tz = tz.gettz(settings.local_tz) state_path = Path(settings.state_path) # Logging log_dir = state_path / "logs" log_dir.mkdir(parents=True, exist_ok=True) logger = create_logger( name="factuges-document-signing-service", log_path=log_dir / "factuges-document-signing-service.log", # Solo lo genera en producción ) logger.info("") logger.info("============================================================") logger.info("FactuGES Document Signing Service - START ") logger.info("Version: %s", version) logger.info("UTC Now: %s", datetime.utcnow().isoformat()) logger.info("Environment: %s", settings.app_env) logger.info("") logger.info("Log Level: %s", settings.log_level) logger.info("Log: %s", log_dir / "factuges-document-signing-service.log") logger.info("") logger.info("Secret Provider: %s", settings.secret_provider) logger.info("Infisical project ID: %s", settings.infisical_project_id) logger.info("Infisical environment: %s", settings.infisical_env_slug) logger.info("") app = FastAPI(title="FactuGES Document Signing Service") app.add_event_handler("startup", lambda: logger.info("Application startup complete")) app.add_event_handler("shutdown", lambda: logger.info("Application shutdown complete")) app.add_exception_handler(Exception, lambda request, exc: logger.error(f"Unhandled exception: {exc}")) # Register routers app.include_router(sign_router) logger.info("API routes registered from sign_document router") app.add_api_route("/health", lambda: {"status": "ok"}, methods=["GET"]) logger.info("Health check endpoint registered at /health")