OUI_XFAB documentation

OUI, EAPWebManager, and EAP System Architecture and UI Decision

Status: Proposed target architecture; current-state inventory verified against the three repositories on 20 August 2026.

Decision: Keep OUI as the production operator UI. Keep EAPWebManager as a standalone runtime service. If engineering diagnostics require a browser UI, build a separately deployed, restricted, initially read-only EAP Web Manager Console and link it explicitly from OUI. Do not embed it in an iframe and do not expose the existing PlantU listener directly to users.

1. Purpose and scope

This document explains the system as one end-to-end product while preserving its real ownership boundaries. It covers:

The proposed Web Manager Console is not implemented today. The target-state sections define the conditions under which it should be built.

2. Executive decision

Use a linked-hybrid architecture:

  1. OUI remains the only production operator-facing application.
  2. Daily equipment work and curated safe configuration remain in OUI.
  3. EAPWebManager remains an independent backend/runtime deployment.
  4. A future Web Manager Console is a sibling frontend for authorized engineers, not another operator shell.
  5. Phase 1 of that console is read-only and exposes only bounded, typed diagnostic contracts.
  6. The console is reached through an authenticated HTTPS management route such as /webmanager-console/.
  7. OUI and the console use explicit navigation and return links; neither embeds the other.
  8. Future mutations require authorization, validation, audit, concurrency control, and recovery semantics before release.

This decision preserves a coherent operator workflow without coupling runtime engineering controls to the production UI release and failure boundary.

3. Current system landscape

Open the interactive system landscape.

System landscape showing browser presentation, trusted server services, PLUS integration, EAP, equipment, MES, and SQL ownership.

The application crosses three principal boundaries:

The current source repositories and deployments remain separate:

Unit Primary responsibility Technology/runtime Independent release
OUI Operator presentation, application state, typed client gateways, browser access flows Vue 3, Vuetify 4, Pinia, TypeScript Yes
OUI access service Browser identity, administrator session, account/audit operations, single-use WebSocket tickets Node.js service and SQL adapter Packaged with OUI release, operated separately
EAPWebManager WebSocket command/event boundary, subscriptions, shared snapshots, persistence, PLUS routing PlantU STP/STS Yes
Equipment EAP Equipment authority, process state, commands, snapshots, MES/equipment integration PlantU STP/STS Yes, usually per equipment family/instance
SQL Server Accounts, ticket hashes, workstation rules, tool types, history, alarms, retention data SQL Server Operational dependency

4. Ownership model

OUI owns

OUI does not own the authoritative equipment state or execute equipment commands directly.

EAPWebManager owns

EAPWebManager does not own the production operator experience. Its current PlantU scope intentionally does not implement a complete in-project browser authentication/RBAC product.

EAP owns

The browser must never infer a final equipment state from an acknowledgement alone. It reconciles against the later authoritative EAP state.

5. OUI function catalog

Area Current functions Owner
Equipment catalog Load tool list, select equipment, retain stale selection safely Equipment module
Equipment monitoring Basic information, connectivity, transaction log, load-port state, active alarms Equipment module
Equipment actions Reset EAP, set control mode, load/unload actions with pending-state reconciliation Equipment module
Lot dispatch Equipment-scoped lot rows and generation-safe refresh Lot-dispatch module
History Query bounded equipment history records History module
Alarms Active alarms and alarm-history queries Equipment and alarm-history modules
Prompts Run-information confirmation and equipment-scoped dynamic popups Equipment and dynamic-popup modules
Configuration Tool-type configuration list, edit, validation, and result handling Configuration module
Administration Login/session, accounts, audit, WebSocket admin binding, workstation rules Administration module and access service
Identity IIS/DNS workstation lookup and per-WebSocket-generation binding Workstation-identity module
Version OUI/static version and EAPWebManager version display Version module
Shared runtime Transport, codec, broker, event bus, reconnect, errors, toast, Vuetify, i18n Infrastructure and shared owners

OUI routes currently include equipment, lot dispatch, events/alarms, version, configuration overview/tools/workstations/accounts, and configuration login.

6. EAPWebManager function catalog

The verified WebSocket command handlers are:

The verified EAP/event handlers include dynamic popups, alarm/history records, basic/load-port/connectivity/transaction snapshots and updates, heartbeat, and run-information display. Scheduled functions cover popup expiry, history retention, tool-type refresh, EAP liveness, and engine liveness.

Its configuration families cover runtime/TCP settings, logging, PLUS, database connection, alive intervals, tool-list refresh, transaction caps, workstation policy, initial administrator bootstrap, history retention, global maps, and SQL templates. Secret values must remain redacted from documentation and diagnostics.

7. EAP function catalog

Common/EAP_WebUI.sts provides the EUI/PLUS bridge used by equipment EAP projects. Its responsibilities include:

Different equipment projects can include the common bridge while retaining equipment-specific process and factory logic.

8. Data and configuration ownership

Data/configuration Authoritative owner Persistence/transport Presentation owner
Equipment process and load-port state EAP Equipment interfaces and PLUS snapshots OUI
Current subscription snapshots EAPWebManager cache, sourced from EAP PlantU maps/state OUI
Transaction log display window EAP/EAPWebManager, bounded at each layer PLUS and WebSocket OUI
Tool-type configuration EAPWebManager/SQL SQL plus WebSocket commands OUI configuration module
History and alarm records EAP events persisted by EAPWebManager SQL OUI history/alarm modules
Workstation rules EAPWebManager/SQL WebSocket admin commands OUI administration module
Accounts, sessions, CSRF, audit, ticket hashes OUI access service/SQL HTTPS and SQL OUI administration module
Browser preferences OUI Browser storage, failure-tolerant OUI
PlantU runtime configuration EAPWebManager/EAP deployment App.ini, Code.ini, operational configuration No direct editor in current OUI

9. Protocol and request model

OUI sends typed JSON envelopes over one managed WebSocket connection. Command and event names come from the central WS_EVENTS registry. Incoming data remains unknown until the owning gateway/decoder validates it.

RequestBroker registers reply ownership before sending. Requests sharing a reply event are serialized because replies do not include a correlation identifier. A timed-out reply event is quarantined for the current connection so a late reply cannot satisfy later work. Disconnect rejects pending work and resets quarantine with the transport generation.

EAPWebManager translates approved WebSocket commands into PLUS EUI messages. EAP handles the operation and replies with S99F98 where required. Separately, EAP emits authoritative snapshots or incremental state, which EAPWebManager routes to the correct subscriber.

10. Operator command workflow

Open the interactive operator-command sequence.

Sequence showing an operator command moving from OUI through RequestBroker, EAPWebManager and PLUS to EAP and equipment, followed by acknowledgement and authoritative state reconciliation.

  1. OUI renders an action only when EAP state and OUI lifecycle gates permit it.
  2. The module validates the action and marks the command pending.
  3. RequestBroker owns the expected reply before transport send.
  4. EAPWebManager validates command context and routes an S99F97W request through PLUS.
  5. EAP executes against equipment and emits S99F98 acknowledgement where appropriate.
  6. The acknowledgement resolves the command request, but does not replace authoritative state.
  7. A later EAP snapshot/update changes the displayed control state.
  8. Generation guards prevent replies from a former equipment selection or connection from mutating current state.

11. Connection and synchronization workflow

Open the interactive synchronization lifecycle.

Lifecycle showing disconnected, connecting, subscribed, synchronizing, ready, retryable failure, and degraded states with snapshot and SyncComplete gates.

Connectivity and readiness are separate. After a false-to-true connection transition, OUI refreshes the catalog, subscribes to the selected equipment, and begins recovery. Basic info, load-port info, connectivity, and transaction log are core snapshots. When SyncComplete.activeAlarmAvailable advertises active-alarm support, the alarm snapshot is also required.

Only a successful equipment-scoped SyncComplete plus the required current-generation snapshots produces ready. Retryable failures use bounded backoff and ultimately enter degraded. Monitoring data is retained as stale and read-only while disconnected, synchronizing, or degraded. Manual retry preserves that data.

12. Prompt and dynamic-popup workflow

EAP emits run-information or dynamic-popup content through EAPWebManager. The owning OUI module validates bounded localized content before rendering it. Prompt state is explicitly consumed so dismissal does not reopen an old request.

One dynamic popup may be active per UI owner. A load-port popup uses durable load-origin ownership. A generic popup is delivered only when exactly one OUI engine owns the equipment; ambiguous ownership is rejected. Confirm/Cancel remains pending until the equipment-scoped acknowledgement. Local expiry closes without inventing a backend action and releases ownership.

13. Alarm and history workflow

EAP emits alarm and history events. EAPWebManager persists them and provides bounded query handlers. OUI requests equipment-scoped active alarms, history, or alarm-history rows through typed gateways. Decoders validate payloads before domain state is updated.

Retention runs in EAPWebManager, not the browser. A future console may show retention health and last-run evidence, but it should not expose arbitrary deletion or SQL execution.

14. Identity, administration, and ticket binding

The OUI access service and EAPWebManager have different responsibilities:

Workstation identity is informational and does not gate equipment mutations. Administrator session/CSRF and administrator WebSocket binding still gate protected administration. On reconnect, OUI obtains a fresh single-use ticket. Stale binding responses cannot restore authority to a new generation.

15. Deployment and trust boundaries

Production browser traffic terminates at IIS or nginx. The edge serves the OUI SPA and proxies browser-safe same-origin routes. EAPWebManager listens behind the proxy for equipment WebSocket traffic. The OUI access service stays loopback-only and has a narrowly routed workstation identity endpoint.

The Web Manager Console target adds a separate HTTPS path and static deployment. It must not make the raw PlantU WebSocket listener a public management endpoint. Required controls are:

16. UI placement options

Option A: Integrate all Web Manager functions into OUI

Advantages: one navigation system, one design language, reuse of existing access/session infrastructure, and minimal context switching.

Disadvantages: engineering/runtime functions increase the operator UI blast radius; OUI releases become coupled to WebManager internals; roles and navigation become harder to reason about; diagnostic failures can affect production workflows; unsafe functionality is easier to expose accidentally.

Option B: Fully standalone Web Manager UI

Advantages: clean deployment and failure isolation; engineering workflow can evolve independently; runtime diagnostics stay out of the operator shell.

Disadvantages: duplicates login/navigation/design/access integration; fragments safe curated configuration already implemented in OUI; increases training and support burden; can produce conflicting representations of equipment state.

Option C: Linked hybrid

Advantages: operators retain a single OUI workflow; engineering diagnostics are isolated; shared access/ticket contracts can be reused; each application releases independently; deep links preserve context without iframe coupling.

Disadvantages: requires deliberate cross-application navigation, shared identity design, contract/version management, and an additional deployable frontend.

17. Weighted decision matrix

Scores use 1 (poor) to 5 (strong). Weighted total is out of 500.

Criterion Weight All in OUI Standalone only Linked hybrid
Operator workflow continuity 20 5 2 5
Engineering/runtime isolation 20 2 5 5
Security boundary clarity 20 2 4 5
Independent release/failure boundary 15 2 5 5
Reuse of current UI/access investment 10 5 2 4
Long-term maintainability 10 2 4 5
Delivery complexity 5 4 3 3
Weighted total 100 300 375 480

The linked hybrid wins because it separates user personas and operational risk while retaining OUI for tasks that are already coherent and governed there.

18. Recommended target architecture

Open the interactive linked-hybrid target diagram.

Recommended architecture with OUI as the operator UI and a separately deployed restricted Web Manager Console linked through the HTTPS management edge and access boundary.

The console is a sibling client of EAPWebManager. It does not own equipment authority and does not bypass EAP. OUI and the console can share navigation conventions and an access boundary without sharing the same release artifact or runtime state.

19. Functions that stay in OUI

These functions participate directly in the production operating workflow or already have a bounded configuration contract.

20. Functions for the standalone console

Phase 1 should be read-only:

Do not include in phase 1:

21. Integration and deep-link contract

Use explicit browser navigation, not an iframe. A link from OUI can carry only non-sensitive context, for example equipment ID and a target console view. The console must revalidate the requested equipment and the engineer's authorization server-side.

Recommended rules:

22. Security prerequisites

Before console implementation begins, approve:

The accepted lack of in-project PlantU RBAC is not an authorization model for a new browser console. The external access/proxy boundary must supply that control, and EAPWebManager must still validate scoped capabilities on each management command.

23. Phased implementation roadmap

Phase 0: Decision and contracts

Phase 1: Restricted read-only console

Phase 2: Operational evidence and support tools

Phase 3: Selected mutations only if justified

24. Test and acceptance matrix

Area Required acceptance evidence
OUI regression Existing unit, type, lint, build, and production-preview browser suites remain green
Contract compatibility Producer/consumer fixtures for every new management request, reply, error, and version capability
Authorization Role/capability allow and deny tests at server boundary; UI hiding is not sufficient
Tickets/session Single-use, expiry, replay rejection, disconnect/reconnect, revocation, and stale-generation tests
Redaction Known secret keys and connection strings never leave server in diagnostics or exports
Bounds Maximum rows, payload bytes, event rates, query ranges, and export sizes enforced server-side
Audit Success, denial, failure, export, and future mutation events produce durable evidence
Failure isolation Console unavailable does not affect OUI or EAPWebManager operator traffic
Deployment Independent build, immutable artifact, rollback, proxy route, health check, and access-policy verification
Browser UX Supported 768px+ layouts, keyboard/focus behavior, localization, empty/loading/error/stale states

25. Operational failure boundaries

26. Risks and open decisions

Before implementation, resolve:

  1. Who qualifies as an authorized engineer, and which organization owns approvals?
  2. Is same-origin access sufficient, or must the console require VPN/jump-host/network segmentation?
  3. Should the existing OUI access service own engineer roles, or should a separately approved management identity service do so?
  4. Which exact diagnostics are required for first release, and what are their size/time bounds?
  5. What retention and privacy rules apply to subscriber and command diagnostics?
  6. Which repository owns the new console, its contract fixtures, and deployment pipeline?
  7. Is any mutation truly required after the read-only phase, and what is its rollback model?

27. Decision consequences

Positive consequences:

Costs:

28. Glossary

Term Meaning
OUI Operator-facing Vue web application
EAPWebManager PlantU runtime connecting browser WebSocket traffic, SQL state, and EAP through PLUS
EAP Equipment Automation Program; authoritative equipment/process integration runtime
EUI Equipment UI message contract implemented by the shared EAP bridge
PLUS Transport used between EAPWebManager and EAP
S99F97W PLUS request/event message used by the EUI bridge
S99F98 Valid acknowledgement message for EUI requests
RequestBroker OUI infrastructure that owns request/reply serialization, timeout, and quarantine
SyncComplete Equipment-scoped recovery completion event used with required snapshots to establish readiness
Linked hybrid OUI and a separate console connected by explicit links and shared governed contracts

29. Evidence and authority

The current-state inventory was derived from the OUI route/module/runtime sources, EAPWebManager EAPWebManager.stp and included STS sources, and the EAP Common/EAP_WebUI.sts bridge. Static PlantU inspection establishes source design and handler presence; it does not prove that a deployed PlantU runtime compiled, loaded, or exercised every path.

For authoritative OUI implementation rules, also read the architecture guide, runtime flows, security and deployment, and repository AGENTS.md/docs/architecture.md contracts.