Operator Dashboard — lokalni tvornički sustav
{{ AUTH.err }}
factory {{ HEALTH.factory || 'Factory' }}
schedule {{ shiftLabel }} · {{ clock }}
{{ n }}
{{ LIVE.status === 'live' ? 'LIVE' : LIVE.status === 'poll' ? 'POLL' : 'STREAM OFF' }}
edge→factory {{ LIVE.linkRx }}
precision_manufacturing {{ OV.data ? OV.data.kpis.RUNNING : '—' }}/{{ OV.data ? OV.data.kpis.machines_total : '—' }} online
error {{ OV.data.kpis.critical_alarms }} critical
notifications {{ OV.data.kpis.active_alarms }}
account_circle {{ AUTH.user || 'anonymous' }} ({{ AUTH.role }})
warning {{ TOAST.msg }}
hourglass_top
Loading factory data…
cloud_off
{{ OV.error }}
MACHINES total {{ MA.data.total }}
Loading…
cloud_off {{ MA.error }}
MachineModelSiteCustomerRecipe StateHeartbeatCycles todayAlarms
{{ m.serial }}{{ m.model || '—' }}{{ m.site || '—' }} {{ m.customer || '—' }}{{ m.recipe || '—' }} {{ stIcon(m.state) }}{{ m.state }} {{ m.hb_age_s!==null ? fmtAge(m.hb_age_s) : '—' }} {{ m.cycles_today }} {{ m.active_alarms }}
No machines match filters
ACTIVE ALARMS ACK = operator je vidio alarm (nije PLC reset)
Loading…
cloud_off {{ AL.error }}
TimeMachineTagNamePriority Value / LimitACK
{{ new Date(a.ts).toLocaleString() }}{{ a.machine_id }} {{ a.tag }}{{ a.name || a.message }} warning{{ a.priority || '—' }} {{ a.value }} / {{ a.limit }} {{ a.ack.acked_by }} ✓ UNACK
No active alarms
hourglass_top
Loading production data…
cloud_off
{{ PR.error }}
Loading…
{{ TW.error }}
Loading…
{{ QL.error }}
Loading…
{{ AI.error }}
Loading…
SHOT {{ QIMG.shot }} — X-RAY
Učitavanje slike…
{{ QIMG.err }}
GENERIRANJE
iz stvarnih production/quality/alarm podataka · reportlab PDF + UTF-8 CSV
{{ RP.error }}
REPORT LIBRARY
Loading…
Nema generiranih izvještaja
NazivTipPeriodStatusFormatVeličinaChecksumGeneriraoOdobrio↓Akcije
{{ r.name }}{{ r.kind }}{{ r.period }} {{ r.status }} {{ r.format }}{{ fmt(r.size_bytes) }} B {{ (r.checksum||'').slice(0,10) }}… {{ r.created_by }}{{ r.approved_by || '—' }}{{ fmt(r.downloads) }}
Izvještaji se spremaju na S3 objektni storage (object_key s3:…) uz sha256 checksum i lokalni fallback; audit bilježi generiranje/odobrenje/preuzimanje (§19.5). XLSX (openpyxl) dostupan preko XLSX gumba ili ?fmt=xlsx (§19.3).
{{ pageMeta.icon }}
{{ pageMeta.title }}
{{ pageMeta.note }}
Planirani izvor podataka: {{ pageMeta.src }}
{{ MD.id }}
{{ MD.data.machine.model || "Model N/A" }} · {{ MD.data.machine.site || "Site N/A" }} · recipe {{ MD.data.machine.recipe }}
Loading…
{{ MD.error }}
Machine not found