Ihorog's picture
Update app.py
071d1e4 verified
# app.py
from fastapi import FastAPI, Request
from fastapi.responses import RedirectResponse, JSONResponse
# Імпорти внутрішніх модулів
# (файли мають існувати: ci_trigger_engine.py, ci_sync_monitor.py)
from ci_trigger_engine import trigger_engine
from ci_sync_monitor import sync_monitor
app = FastAPI(title="ci_inputs_system", version="0.1.0")
# Локальне сховище отриманих подій (для демо)
inputs_store: list[dict] = []
# --- Системні маршрути ---
@app.get("/", include_in_schema=False)
def root():
# редірект на інтерактивну документацію
return RedirectResponse(url="/docs")
@app.get("/здоров'я", include_in_schema=False)
@app.get("/healthz", include_in_schema=False)
def healthcheck():
return JSONResponse({"status": "ok"})
# --- Базові API ---
@app.post("/входи")
@app.post("/inputs")
async def receive_input(req: Request):
data = await req.json()
inputs_store.append(data)
# Безпечно викликаємо обробники, якщо вони реалізовані
add_input = getattr(trigger_engine, "add_input", None)
if callable(add_input):
add_input(data)
log_event = getattr(sync_monitor, "log_event", None)
if callable(log_event):
log_event(data)
check_alignment = getattr(sync_monitor, "check_alignment", None)
if callable(check_alignment):
check_alignment(data)
return {"status": "received"}
@app.get("/входи")
@app.get("/inputs")
async def get_all():
return inputs_store