Files
MobilityOps/artifacts/evidence/architecture.md
T
NuklearRabbit 29325b6c27
MobilityOps acceptance / backend (push) Canceled after 0s
MobilityOps acceptance / frontend (push) Canceled after 0s
M29: polish recruiter engineering story
2026-08-10 18:13:18 +02:00

2.9 KiB

Fleet Ops — as-built architecture

flowchart TB
    UI["Fleet Ops Web\nReact + TypeScript + Vite"]

    subgraph CORE["Fleet Ops — this repository"]
        API["FastAPI /api/v1\nRBAC + domain rules"]
        OUT["Outbox dispatcher\nleases + bounded retry"]
        DB[(PostgreSQL)]
        OBS["Prometheus metrics\nGrafana dashboards"]
        API --> DB
        OUT --> DB
        API --> OBS
    end

    subgraph EXT["Existing external platforms"]
        N8N["Central n8n\nsecondary orchestration"]
        RAG["RAGcore\ngrounded procedure retrieval"]
        HUB["ITWorx MCP Hub\ntool transport + publication"]
    end

    UI -->|secure session cookie| API
    API -->|tenant/workspace adapter| RAG
    OUT -->|vehicle.returned.v1| N8N
    N8N -->|service-authenticated callback| API
    HUB -->|service-authenticated read-only tools| API

Ownership and trust boundaries

Component Owns Explicitly does not own
Fleet Ops vehicles, customers, bookings, inspections, quality issues, audit, permissions, outbox state external workflow execution or procedure retrieval
RAGcore indexing/retrieval and grounded procedure evidence Fleet Ops database or business state
ITWorx MCP Hub MCP transport, connector publication and central tool-call audit Fleet Ops database or write actions
n8n post-commit workflow orchestration critical business rules or the source-of-truth transaction

End-to-end return trace

sequenceDiagram
    actor Operator
    participant Web
    participant API
    participant DB
    participant n8n
    Operator->>Web: Review and confirm return
    Web->>API: POST return with idempotency key
    API->>DB: Lock booking and validate invariants
    API->>DB: Commit inspection, state, audit and outbox atomically
    API-->>Web: Result + correlation ID
    Web-->>Operator: Human result and full processing trace
    API->>n8n: Deliver persisted outbox event
    n8n->>API: Authenticated status callback
    API->>DB: Persist delivery/audit evidence

Verified reliability properties

  1. Concurrent returns serialize through PostgreSQL row locking; only one can commit.
  2. Local return success is independent of n8n availability. Pending delivery remains persisted and retryable.
  3. Outbox delivery is at-least-once and idempotent by event ID, with crash-recoverable leases and bounded backoff.
  4. RAGcore failure affects knowledge answers only. The UI reports unavailable/insufficient evidence and does not invent an answer.
  5. MCP endpoints are a separate tenant-bound, client-identity-validated, read-only surface; every call is audited with a correlation ID.
  6. Browser authorization is enforced again on the API. Hiding a navigation item is never the security boundary.

The live deployment has exercised all three external boundaries. Local clean-checkout acceptance can use the deterministic extractive knowledge provider while reporting that mode honestly.