SIMS · ALIGNMENT
Reference docs →
01 / 10

Team alignment · onboarding · 2026-06-01

SIMS — to demo-ready
in 21 days.

Simoldes Industrial Monitoring System. Where the project stands, how the data flows, what must be true on Jun 22–23, and who owns what while Joaquim is out.

Repos
3

backend · frontend · ingestion

D2 manual inputs
~99%

4/4 demo-blockers closed

Demo
Jun 22-23

1 machine · 1 VM · Plastaze

New devs
2

Pedro · Vusal

What it is

An MES that replaces proGrow with real-time OEE from the machines.

Automated input

EWON IoT telemetry over OPC-UA → ingestion → backend → production_events. No human. Tells you that a machine stopped or produced a cycle.

Manual input

Operators on tablets enter why — stoppage reason codes, rejections, OF/mould changes. Queued offline when the network drops.

Manual SIMS entries are canonical. proGrow is fallback / validation only — and is being removed at D4. Tablet-first, role-based, European Portuguese.

Data pipeline

Machine → tablet → KPI, end to end.

01 · EWON
OPC-UA poll
24/651 tags · 5s · buffers on N_Ciclo / Estado change
02 · INGESTION
SQLite buffer
APScheduler · 60s · ≤100 rows + heartbeat
03 · BACKEND
/machine-data
X-API-Key · classify · SHA256 dedup · JSONB
04 · FRONTEND
TanStack poll
/machines/:code/status + /kpis · 10s
Mapping gotcha

DEVICE_MAPPING
"KM850II" → "KM 850 II"

Seeding

machines table is manually seeded — 404 if a code is missing.

Auth split

JWT on /api/v1/*; /machine-data uses X-API-Key (keys must match).

Where we are

D2 done. The demo runs on D3 — which is barely started.

  • D1 Foundation — ✅ done (nav, tablet auth, PWA, manual-input scaffolding)
  • D2 Core Manual Inputs — ~99%, all 4 named demo-blockers closed
  • D3 Dashboards & Integration1.5% demo runs against these · unassigned
  • D4 proGrow Elimination — 0% · holds Epic 16 (all demo coordination)
  • D5 Multi-Tenant DB — rollout prereq, not a demo prereq
  • R1 Plastaze (Jul 31) — pilot; the demo is its kickoff
  • R2–R8 (Aug–Dec) — 7 more factories, proGrow off by year-end
  • In-flight: branch DEV2-tablet-device-pairing, 31 commits ahead, PRs #94/#104 — shipped with no AC (now governance-ticketed)

The headline: nothing in D3/D4 had an owner. That's the gap the two new devs fill.

The calendar spine

Hard gates, in order. Most fall while Joaquim is out.

Jun 12
Cloudflare tunnel live + E2E suite · HARD GATE
Jun 15
Merge + deploy to Plastaze · feature freeze
Jun 18
Internal dry-run · bug list · go/no-go
Jun 19
R1 Phase-2 deploy to Plastaze
Jun 21
Paulo rehearsal · final go/no-go
Jun 22-23
Demo · Domingos & Couto
Not blocking the demo

Xpert ERP · multi-tenant · backups · monitoring. proGrow fallback is fine for the demo.

Owner-less & urgent

DEV2-603 · 602 · 606 · 650 — assign before you leave.

Gatekeeper

IT-security review of the cloud-FE/on-prem-BE arch — confirm it was sent.

Who owns what

Two lanes, split by strength.

Pedro → Work Orders DEV2-703

  • DEV2-346 Work Order Management (recommended D3 starter, no blocker)
  • DEV2-359 WO API CRUD · DEV2-360 WO Selection UI
  • DEV2-536 "próxima OF" tile — Paulo demanded for the demo

Vusal → proGrow comparison DEV2-704

  • DEV2-347 Comparison Mode + KPI source priority chain
  • DEV2-602 Cut proGrow from KPI calculator (urgent)
  • DEV2-604 Evidence package — ≥7 shifts, ≥3 proGrow-wrong cases

Shared with Gabriel: Cloudflare (Jun 12), runbook, dry-runs, and the demo-visible data bugs. Xpert is blocked on Simoldes IT — escalate via Paulo, soft for the demo.

Risk register

What can go wrong on screen.

  • STOP-1 — "N por justificar" badge never decrements as operators justify. Visible mid-demo.
  • CLOCK-01 — machine-switch doesn't close prior session → inflated hours + double-counted parts.
  • PGW-* — proGrow numbers render next to canonical SIMS KPIs, no staleness badge — can visibly disagree.
  • Mould 404 — unknown mould 404s as "Máquina não encontrada" (should say "Molde"). Re-verify the fix held.
  • DEV2-535 — bulk-justify lacks shift-boundary check. Paulo demanded shift-scoped edits.
  • Script drift — demo script narrates device-code; shipped flow is per-machine PIN. Reconcile before rehearsing.

And the one test everyone defers: 768px tablet smoke with real KM 850 II data (offline cache + queue). No agent can do it — by hand, before sign-off.

Demo-readiness checklist

Run the script end-to-end on the demo VM.

Functional path
  • Supervisor login → /machines shows KM 850 II + KM1300 live
  • Machine detail tabs render with real data
  • Operator keypad clock-in → /input
  • Rejection submits + offline-queue replays
  • Stoppage justify — badge decrements (STOP-1)
  • Tempo de Trabalho CSV exports in proGrow schema, opens in Excel
Integrity + infra
  • No proGrow-vs-SIMS disagreement on Overview/Timeline
  • Machine-switch closes prior session (CLOCK-01)
  • Day-boundary / timezone correct for the demo shift
  • Cloudflare tunnel live OR decision to demo on plain VM
  • Frontend built --platform linux/amd64 · keys match
  • 768px tablet smoke, real data, offline queue

Rules of the road

Five things that save you a bad PR.

Linear only

Ignore the bd/beads instructions in AGENTS.md. Tasks come from Linear, team Dev Team - Joaquim.

Add the pt key

App is lng:pt with pt fallback. A missing pt key silently leaks English to supervisors. CI guard enforces it.

Don't relitigate KPI math

Paulo signed off 2026-04-08, <1% OEE deviation. The proGrow cut is a code-path removal, not a math change.

Generated API types

npm run generate:types from backend OpenAPI. Never hand-write src/types/generated.

Verify offline with real data

The PWA cache + input queue is sensitive. Smoke it on a real tablet before claiming success.

File tickets as you go

Find a gap → file it. Milestone D3/D4, link the onboarding doc. You're trusted to grow the backlog.

First day

Boot it, click it,
own a lane.

  • cd sims-backend && docker compose up -d
  • alembic upgrade head if api 500s
  • Open :5173 → log in as supervisor → click through
  • Read docs/sims-demo-script.md, run the flow
  • Run G1 gates on a no-op to confirm toolchain
  • Pull DEV2-tablet-device-pairing (PRs #94/#104)
  • Read your ticket — DEV2-703 (Pedro) / DEV2-704 (Vusal)
  • Sync with Gabriel · post in #ops-weekly-updates

Full detail in the reference docs →

← → · space · F fullscreen