feat: Problems API, ingest hook, and UI

This commit is contained in:
PTah
2026-05-27 11:24:19 +10:00
parent b19cdf2b47
commit 5fce00faae
14 changed files with 451 additions and 10 deletions
+6
View File
@@ -13,6 +13,7 @@ from app.database import get_db
from app.models import Event, Host
from app.schemas.list_models import EventDetail, EventListResponse, EventSummary
from app.services.ingest import ingest_event
from app.services.problems import maybe_create_problem
from app.services.schema_validate import validate_event_payload
router = APIRouter(prefix="/events", tags=["events"])
@@ -23,6 +24,7 @@ class IngestResponse(BaseModel):
event_id: str
created: bool
sac_event_url: str
problem_id: int | None = None
@router.post("", status_code=202, response_model=IngestResponse)
@@ -36,6 +38,9 @@ def post_event(
raise HTTPException(status_code=422, detail={"schema_errors": errors[:20]})
event, created = ingest_event(db, payload)
problem = None
if created:
problem = maybe_create_problem(db, event)
db.commit()
settings = get_settings()
@@ -45,6 +50,7 @@ def post_event(
event_id=event.event_id,
created=created,
sac_event_url=f"{base}/api/v1/events/{event.id}",
problem_id=problem.id if problem else None,
)