feat(welcome): página de bienvenida en / del Golden Path (shape 1.2.0)
Some checks failed
__APP_NAME__ — build & deploy / ¿Credenciales de build listas? (push) Has been cancelled
__APP_NAME__ — build & deploy / Calidad + build + push (push) Has been cancelled
__APP_NAME__ — build & deploy / ¿Cluster del tenant listo? (push) Has been cancelled
__APP_NAME__ — build & deploy / Helm upgrade --install (push) Has been cancelled

This commit is contained in:
2026-06-10 23:07:01 +00:00
parent d4ab31b2ff
commit 56aa5f78a4

View File

@@ -2,24 +2,28 @@
Aplicación FastAPI — entry point.
Endpoints obligatorios del shape web-backend/python (ver coralware-shape.yaml):
- / → página de bienvenida (instrucciones de uso del tenant; tu código la reemplaza)
- /health → liveness + readiness
- /docs → Swagger UI (auth opcional)
- /demo → frontend estático servido desde STATIC_DEMO_PATH
- /metrics → Prometheus
Endpoints de dominio: agregar en app/routers/ y registrar en _register_routers().
La ruta raíz `/` sirve la página de bienvenida por defecto; en cuanto agregues tu
propio handler de `/` (o lo registres en app/routers/) tu desarrollo la reemplaza.
"""
import logging
import os
from fastapi import Depends, FastAPI, HTTPException, Request, status
from fastapi.responses import JSONResponse, Response
from fastapi.responses import HTMLResponse, JSONResponse, Response
from fastapi.staticfiles import StaticFiles
from prometheus_client import CONTENT_TYPE_LATEST, generate_latest
from app.db import db_alive
from app.settings import settings
from app.welcome import WELCOME_HTML
logging.basicConfig(
level=getattr(logging, settings.LOG_LEVEL, logging.INFO),
@@ -67,6 +71,15 @@ def create_app() -> FastAPI:
response.headers[settings.CORRELATION_ID_HEADER] = cid
return response
@app.get("/", response_class=HTMLResponse, include_in_schema=False)
async def welcome() -> HTMLResponse:
"""
Página de bienvenida por defecto del Golden Path.
El tenant la ve en cuanto su plataforma queda lista. En cuanto agrega
su propio handler de `/` (su desarrollo), esta página es reemplazada.
"""
return HTMLResponse(content=WELCOME_HTML)
@app.get("/health", tags=["platform"])
async def health() -> JSONResponse:
db_status = "up" if db_alive() else "down"