- Move shared platform JS (source/point/equipment/chart/events/...) from
web/feeder/js to web/core/js/platform; both apps load it via the ServeDir
core fallback (subdir avoids shadowing ops' own api.js/dom.js).
- Add platform-config.js and log-stream.js as shared modules; feeder app.js
and logs.js now delegate instead of inlining (no duplication).
- ops: add 平台配置 tab reusing the shared panels; rename 段/工位配置 ->
应用配置; move tabs into the topbar like feeder.
- Align view layout across both apps: 系统事件 in 运行监控 (live via WS),
实时日志 in 平台配置.
- Titles: 投煤控制系统 / 隧道窑运转系统; feeder 运维 tab -> 运行监控.
- Update README; add CLAUDE.md documenting the shared-frontend architecture.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Core styles.css ships a global button { background: var(--accent);
color: #fff } primary rule. The ops overrides reset background to
var(--surface) (white) but inherited color: #fff, leaving white text
on a white background until the hover rule swapped color to accent.
Explicitly sets color on .card-actions / .row-actions / .form-actions
buttons and reshapes .toolbar so the "+ 新增" stays primary (filled
accent) and .secondary toolbar buttons get the white-with-accent-hover
treatment.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds Monitor/Config tab switcher. Config view splits into stations
panel (inline create/edit/delete + per-station signal binding expand)
and segments panel (inline create/edit/delete + expandable detail with
step add/delete, interlock add/delete, and resource-keys replace).
UI talks to the existing ops CRUD endpoints exclusively; no engine
changes. node --check passes for all eight ops JS modules; backend
tests still green. Browser verification still required end-to-end.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the ops UI placeholder with a single-panel monitor: fetches
/api/runtime/overview to render one card per segment with state badge,
current step, fault / block note, and per-card Start / Stop / Ack-Fault
/ Reset buttons plus batch start/stop. WebSocket subscriber routes
app_event(app=operation-system, event_type=segment_runtime_changed)
into in-place card updates with exponential reconnect.
Note: UI not verified in-browser; the engine + WebSocket plumbing has
unit + smoke test coverage but the page itself needs runtime
validation by running app_operation_system and visiting /ui/.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The web/core, web/feeder, and web/ops directories were mistakenly
committed as deletions. Restore from f8757a7.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Clean up old web module files that were superseded by the per-app
split architecture. Includes plan documentation for the migration.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>