2026-01-22 10:37:35 +00:00
|
|
|
from fastapi import FastAPI
|
|
|
|
|
from dotenv import load_dotenv
|
2026-01-29 17:35:43 +00:00
|
|
|
from pathlib import Path
|
|
|
|
|
from datetime import datetime
|
|
|
|
|
from dateutil import tz
|
2026-01-22 10:37:35 +00:00
|
|
|
|
|
|
|
|
from signing_service.application.settings.container import get_settings
|
2026-01-29 17:35:43 +00:00
|
|
|
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
|
2026-01-22 10:37:35 +00:00
|
|
|
|
|
|
|
|
load_dotenv()
|
|
|
|
|
|
|
|
|
|
# 👇 FAIL FAST: load settings at startup
|
2026-01-29 17:35:43 +00:00
|
|
|
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("")
|
2026-01-22 10:37:35 +00:00
|
|
|
|
2026-01-22 12:07:15 +00:00
|
|
|
app = FastAPI(title="FactuGES Document Signing Service")
|
2026-01-29 17:35:43 +00:00
|
|
|
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
|
2026-01-22 10:37:35 +00:00
|
|
|
app.include_router(sign_router)
|
2026-01-29 17:35:43 +00:00
|
|
|
logger.info("API routes registered from sign_document router")
|
2026-01-22 10:37:35 +00:00
|
|
|
|
2026-01-29 17:35:43 +00:00
|
|
|
app.add_api_route("/health", lambda: {"status": "ok"}, methods=["GET"])
|
|
|
|
|
logger.info("Health check endpoint registered at /health")
|