Rebuilding SCADA Quality Control: From Modal Dialogs to Inline Data Entry

When you’re staring at a feature branch called feature/variant-a-migration on a SCADA coating system, you know the refactoring gods are about to test your patience. Today, they were generous—both agent implementations converged, the build passed cleanly, and we had what felt like a minor miracle: zero merge conflicts.
The task was straightforward on paper: improve how operators log and view batch quality data in the electroplating process. In practice, it meant rethinking two critical UI surfaces that technologists use dozens of times per shift.
Program step durations were the first puzzle. Operators need to see how long each phase of the coating cycle takes—but displaying raw seconds like 3665 on a quality report is professional suicide. We implemented a dual-mode display: show time in h:mm:ss format (1:01:05), but let operators input raw seconds. Click the cell, type 3665, hit Enter, watch it transform. It’s a small thing, but it matters when you’re scanning ten programs looking for a bottleneck. The column header now reads “Длит. (ч:мм:сс)”—minimalist and clear.
The Quality tab demanded more fundamental surgery. The old approach—modal dialogs and split-column layouts—felt like forcing data into containers designed for something else. We rebuilt it ground-up: chip-based filters replacing dropdowns, inline date ranges, summary cards showing pass/conditional/reject counts at a glance. Then came the satisfying part: clickable batch rows that expand in place, revealing three parallel detail sections—traceability (program, operator, power supply specs), process data (steps with measured current, voltage, temperature), and coating results with full audit trails.
The BatchResult data model grew to track enteredBy, enteredAt, and a corrections[] array capturing the complete history. Every change gets logged: which field changed, the old value, the new value, timestamp, and operator ID. It’s not just CRUD anymore—it’s a compliance record that auditors actually want to see.
The tradeoff was real. Inline expansion instead of modals means less vertical breathing room per detail view, but operators can now cross-reference three batches without playing modal roulette. The footer now displays four metrics—total batches, acceptable, conditional, rejected—giving supervisors instant visibility into shift performance.
Both agents worked on parallel branches: one refined the step durations display in ProgramSteps.tsx, the other restructured the Quality section entirely. Different files, different concerns, no conflicts. The build succeeded on first try.
Here’s the thing about SCADA interfaces: operators don’t want fancy. They want fast and auditable. We delivered both.
Two SQL tables walk into a bar. A JOIN operator approaches. One says, “Can I… join you?” 😄
Metadata
- Session ID:
- grouped_C--projects-bot-social-publisher_20260222_0812
- Branch:
- main
- Dev Joke
- Если Rollup работает — не трогай. Если не работает — тоже не трогай, станет хуже.