Files
MobilityOps/PROJECT_STATE.md
T
NuklearRabbit 04d26f1f2e M0: implement operational core
Backend: SQLAlchemy models, Alembic migrations, requirements lockfile. Frontend: pinned deps, package-lock, vite-env types fix. Verified compose build/health, pytest, ruff clean.
2026-08-01 21:01:04 +02:00

3.3 KiB

Project state

Current milestone

M0 — complete. Starting M1 next.

Locked decisions

  • Product name: MobilityOps.
  • Fictitious tenant: Northstar Mobility Demo.
  • PoC only; all operational and knowledge data are synthetic.
  • Core stack and boundaries are defined in CLAUDE.md and docs/03-architecture.md.
  • RAGcore and ITWorx MCP Hub are external central services.
  • n8n receives post-commit events through an outbox dispatcher.
  • SQLAlchemy 2 declarative models cover the full domain model (backend/app/models/); enums are plain String columns validated at the Pydantic/service layer, not native PG enums (simpler migrations).
  • backend/requirements.lock is compiled inside a python:3.12-slim container (matches the Dockerfile base image) via pip-compile --extra dev; regenerate the same way if pyproject.toml changes.
  • Frontend dependencies pinned (no more "latest"); package-lock.json committed; Docker build uses npm ci.

Completed evidence

M0 — Reproducible foundation

  • Added backend/app/core/db.py (engine/session), backend/app/models/* (User, Customer, Vehicle, Booking, Inspection, MaintenanceRecord, DataQualityIssue, OutboxEvent, AuditEvent), Alembic config (backend/alembic.ini, backend/alembic/env.py) and initial migration backend/alembic/versions/c9498525abb5_initial_schema.py.
  • Commands run and verified from this checkout:
    • docker compose build api — OK
    • docker compose run --rm api alembic upgrade head — applied cleanly to empty DB, created 9 tables + alembic_version.
    • docker compose run --rm api pytest -q — 1 passed.
    • docker compose run --rm api ruff check . — All checks passed (added extend-exclude = ["alembic/versions"] to backend/pyproject.toml for autogenerated migration line length).
    • docker compose up -d --build — all 4 services healthy: curl http://localhost:8128/health{"status":"ok",...}; curl -o /dev/null -w "%{http_code}" http://localhost:1228/ → 200; curl http://localhost:5678/healthz → 200.
  • Fixed a real scaffold bug: frontend/src/App.tsx used import.meta.env without a vite/client types reference, which broke npm run build in Docker (works fine under plain vite dev because Vite injects the global at dev-time but tsc -b still type-checks it). Added frontend/src/vite-env.d.ts.
  • make is not installed in this Windows/git-bash shell — validated the underlying docker compose ... commands directly instead (Makefile targets are thin wrappers around them and are correct as written for a Linux/CI shell or WSL).
  • Known accepted gap: npm audit reports 1 moderate/1 high transitive esbuild advisory (dev-server-only, fixed only by a Vite 8 major bump); left as-is for the PoC, noted here rather than silently upgrading a major version.

Known blockers

None. External service credentials may be absent; use the documented demo/degraded providers.

Exact next action

Start M1 (operational core): read docs/02-user-stories.md, docs/05-api-contract.md, docs/06-ui-ux.md, docs/13-seed-and-demo-scenarios.md (already read this session). Implement: app/cli.py seed import/reset from seed/*.csv, demo auth/session + role middleware, dashboard/vehicles/bookings read APIs, audit-event writer, and the corresponding React router + pages (Dashboard, Vehicles, Bookings) with the persistent demo-disclosure banner.