How linakoz/icts works
ICTS Europe Rostering System is a planner and manager application for maintaining security workers and contracts, importing CSV data, producing monthly shift rosters, resolving gaps, and approving rosters. The main workflow runs from authenticated browser actions through FastAPI routes into domain services and PostgreSQL; roster generation builds a scheduling problem and invokes the isolated CP-SAT process pool. The README documents these capabilities and runtime links, but many backend and roster UI implementations were not excerpted, so uncertain internal calls are omitted.
Main entry points: main.py FastAPI application · App.tsx Browser UI · router.py Roster API · client.ts API client
Components 22
Web application
- Browser UI
frontend/src/App.tsx - Sign-in
frontend/src/auth/LoginPage.tsx - Worker management
frontend/src/features/workers/WorkersPage.tsx - CSV import
frontend/src/features/imports/ImportPage.tsx - Roster workspace
frontend/src/features/roster/RosterPage.tsx - API client
frontend/src/api/client.ts
Workforce data
- Worker records
backend/app/workers/router.py - Contract versions
backend/app/contracts/resolve.py - Change impact
backend/app/changes/service.py - CSV preview and apply
backend/app/csvio/service.py
Roster lifecycle
- Roster API
backend/app/rosters/router.py - Problem builder
backend/app/rosters/problem_builder.py - CP-SAT scheduling
backend/app/scheduling/types.py - Roster operations
backend/app/rosters/generation.py - Roster storage
backend/app/rosters/models.py - Approval workflow
backend/app/rosters/approval.py
Backend runtime
- Authentication routes
backend/app/auth/router.py - Session and roles
backend/app/auth/session.py - Solver process pool
backend/app/engine_pool.py - PostgreSQL
backend/app/db.py - FastAPI application
backend/app/main.py
Other components
- Planner or manager
Connections 31
- Planner or manager → Browser UI: uses
README.md - Browser UI → Sign-in: routes to
frontend/src/App.tsx - Browser UI → Worker management: routes to
frontend/src/App.tsx - Browser UI → CSV import: routes to
frontend/src/App.tsx - Browser UI → Roster workspace: routes to
frontend/src/App.tsx - Sign-in → API client: requests through
- Worker management → API client: requests through
- CSV import → API client: requests through
- Roster workspace → API client: requests through
- API client → FastAPI application: calls API
README.md - FastAPI application → Authentication routes: registers routes
backend/app/main.py - FastAPI application → Worker records: registers routes
backend/app/main.py - FastAPI application → CSV preview and apply: registers routes
backend/app/main.py - FastAPI application → Roster API: registers routes
backend/app/main.py - Authentication routes → Session and roles: uses
backend/app/auth/router.py - Worker records → Change impact: applies changes
backend/app/workers/router.py - Worker records → Contract versions: resolves contracts
backend/app/workers/router.py - CSV preview and apply → Change impact: previews and applies
backend/app/csvio/service.py - Roster API → Problem builder: builds problem
backend/app/rosters/router.py - Roster API → Roster operations: dispatches operations
backend/app/rosters/router.py - Roster API → Approval workflow: delegates approval
backend/app/rosters/router.py - Roster API → Roster storage: reads and writes
backend/app/rosters/router.py - Problem builder → Contract versions: resolves contracts
backend/app/rosters/problem_builder.py - Problem builder → CP-SAT scheduling: builds input types
backend/app/rosters/problem_builder.py - Roster operations → Solver process pool: runs solve
README.md - Solver process pool → CP-SAT scheduling: executes CP-SAT
README.md - Worker records → PostgreSQL: reads and writes
backend/app/workers/router.py - Contract versions → PostgreSQL: stores versions
- Roster storage → PostgreSQL: stores assignments
backend/app/rosters/models.py - FastAPI application → PostgreSQL: connects to
README.md - FastAPI application → Solver process pool: starts pool
README.md