MaaS Consumer Planner (MCP)
At a Glance
Section titled “At a Glance”- Category: Smart Planning & Operations
- Primary environment: MaaS Consumer
- Documentation focus: Design reference
- Maturity: TRL 4, progressing towards TRL 5–6 (first release, M18)
- Related architecture docs: Reference Architecture Guide, Environments
Purpose
Section titled “Purpose”The MaaS Consumer Planner (MCP) allows consumers to plan production schedules and shop-floor activities through a multi-objective optimisation approach. Its goal is to produce feasible plans quickly and support reactive replanning when disruptions appear, such as delays, resource conflicts, or changes in demand.
Primary Actors
Section titled “Primary Actors”The D5.2 usage viewpoint defines roles, permissions, constraints, a role-task matrix, and a use case diagram for this solution.
- User: Review and manage consumer-side planning information; constraint: Can only see orders of which the user is the owner, following the principle of least privilege and authentication via the Keycloak system.
- Admin: Configure work schedules, priorities, optimisation targets Manage users and roles (create, edit, deactivate) Set alert thresholds (maximum delays, overbooking); constraint: Versioned and tracked configuration changes Requires MFA for high privilege operations

Use-case diagram extracted from MaaSAI deliverable D5.2.
Functional Components
Section titled “Functional Components”MCP combines user-facing planning screens, scheduling logic, Gantt visualisation, plan approval workflows, and administrative controls. The functional view shows how planning inputs are transformed into feasible schedules, approval decisions, and monitoring outputs for consumer-side operations.

Functional components diagram extracted from MaaSAI deliverable D5.2.
Design Baseline
Section titled “Design Baseline”The MCP design is built around a frontend for plan visualisation, a backend orchestration layer, and integration points with the MaaS Consumer Agent, EDGE Data Storage, and MaaS Supply Chain Simulator.
In implementation terms, the solution is described as a Dockerised web application with a React-based interface, a Flask runtime, and Python analytics libraries that support preprocessing, optimisation, and plan generation.
This makes the MCP a coordination-heavy solution inside the MaaSAI ecosystem: it does not just display planning results, it also exchanges data with other core consumer-side services to keep schedules aligned with negotiation and simulation outputs.

Architecture diagram extracted from MaaSAI deliverable D5.2.
Technology Stack
Section titled “Technology Stack”The MCP is built entirely on open-source technologies and shares its architectural foundation with the MaaS Provider Planner (MPP).
| Category | Technology |
|---|---|
| Backend | Python (> 3.9) with Flask and Flask-CORS for the REST API; NumPy and Pandas for data processing; Requests/HTTPX for communication with the PostgREST-based EDGE Data Storage. |
| Scheduling/AI | Ray, RLlib, PyTorch and Gymnasium power the Deep Reinforcement Learning scheduling engine (Proximal Policy Optimisation agent); Plotly generates JSON-serialisable charts for the frontend. |
| Frontend | React, based on the MaaSAI UI template provided by UPV. |
| Security | Keycloak authentication and access-control layer. |
| Containerisation | Docker, with separate frontend and backend containers orchestrated via Docker Compose. |
Integrations & External Dependencies
Section titled “Integrations & External Dependencies”The MCP reads scheduling inputs from and writes generated plans to the EDGE Data Storage (DS), following the ISA-95 standard. Bidirectional communication with the MaaS Consumer Agent (MCA), which the planner will support during negotiation with feasibility and production-time guidance, is defined for the second release. An exchange with the MaaS Supply Chain Simulator (SCS), providing hints on logistics bottlenecks that may affect the scheduling plan, is also foreseen. Runtime dependencies are Nginx (reverse proxy), Docker, and optionally the shared MaaSAI Keycloak instance.
APIs & Interfaces
Section titled “APIs & Interfaces”The Flask backend exposes a REST API consumed by the React frontend:
POST /api/scheduler/upload-plan— import an existing scheduling plan from JSONPOST /api/scheduler/load-from-edge— retrieve input data from EDGE Data StoragePOST /api/scheduler/run-engine— execute the scheduling engine and produce an updated planPOST /api/scheduler/save-to-edge— store generated results in EDGE Data StoragePOST /api/scheduler/save-plan-json— export the generated plan as JSON
The UI provides Keycloak login, JSON upload or DS connection setup, an editable schedule status table with KPI cards, workload and saturation charts per resource family, and interactive, downloadable Gantt charts.
User Interface
Section titled “User Interface”Representative screens of the MCP web interface in the first release:

Viewing the schedule status and plan indicators — MaaSAI deliverable D12.1.

Gantt chart of orders — MaaSAI deliverable D12.1.
Deployment & Configuration
Section titled “Deployment & Configuration”The MCP is deployed as a Docker-based containerised application split into two services: a React frontend and a Python/Flask backend.
| Requirement | Minimum | Recommended |
|---|---|---|
| CPU | 1 vCPU | 4 vCPU |
| RAM | 4 GB | 8–16 GB |
| Storage | 10 GB | 20 GB |
| OS | 64-bit Linux | 64-bit Linux |
The DS connection is configured through host, port, database name, username and password parameters.