Skip to content

MaaS Consumer Planner (MCP)

MaaS Consumer Planner (MCP) icon
  • 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

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.

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

MaaS Consumer Planner use case

Use-case diagram extracted from MaaSAI deliverable D5.2.

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.

MaaS Consumer Planner functional components

Functional components diagram extracted from MaaSAI deliverable D5.2.

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.

MaaS Consumer Planner architecture

Architecture diagram extracted from MaaSAI deliverable D5.2.

The MCP is built entirely on open-source technologies and shares its architectural foundation with the MaaS Provider Planner (MPP).

CategoryTechnology
BackendPython (> 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/AIRay, RLlib, PyTorch and Gymnasium power the Deep Reinforcement Learning scheduling engine (Proximal Policy Optimisation agent); Plotly generates JSON-serialisable charts for the frontend.
FrontendReact, based on the MaaSAI UI template provided by UPV.
SecurityKeycloak authentication and access-control layer.
ContainerisationDocker, with separate frontend and backend containers orchestrated via Docker Compose.

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.

The Flask backend exposes a REST API consumed by the React frontend:

  • POST /api/scheduler/upload-plan — import an existing scheduling plan from JSON
  • POST /api/scheduler/load-from-edge — retrieve input data from EDGE Data Storage
  • POST /api/scheduler/run-engine — execute the scheduling engine and produce an updated plan
  • POST /api/scheduler/save-to-edge — store generated results in EDGE Data Storage
  • POST /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.

Representative screens of the MCP web interface in the first release:

MCP schedule status and plan indicators

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

MCP Gantt chart of orders

Gantt chart of orders — MaaSAI deliverable D12.1.

The MCP is deployed as a Docker-based containerised application split into two services: a React frontend and a Python/Flask backend.

RequirementMinimumRecommended
CPU1 vCPU4 vCPU
RAM4 GB8–16 GB
Storage10 GB20 GB
OS64-bit Linux64-bit Linux

The DS connection is configured through host, port, database name, username and password parameters.