monitor/html/js/demo-data.js
fds2610-bot 37693a09a1 Phase 2 der Neuausrichtung: Statische Buero-Szene (SVG, Demo-Daten)
Setzt Phase 2 aus Visualization.md um: Vanilla-SVG-Buero-Szene (Waende, 2 Tueren,
8 Schreibtische, Kanban-Board-Rahmen mit 7 Spalten, Monitor-Wand mit Event-/System-/
KPI-Monitor) ohne Animation, gespeist mit statischen Demo-Daten im Format der
Phase-1-API-Responses. Board-Stapel-Logik (>5 Tickets, Done-Spalte als Dauerstapel)
folgt Detailantworten.md F2/F3.

Reine Layout-Logik (html/js/office-scene.js) ist ausgelagert und mit dem Node-
Testrunner abgedeckt (100% Zeilenabdeckung, tests/frontend/), das DOM-Rendering
(office-render.js) bleibt bewusst duenne Glue-Logik. Docker-Compose um web- (nginx,
serviert html/) und frontend-Service (node, "npm test") erweitert, analog zum
bestehenden api-Service und zum NC-Gantt-Vorbild: kein PHP/Node auf dem Host noetig.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 00:19:22 +02:00

52 lines
2.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Statische Demo-Daten fuer Phase 2 ("Statische Buero-Szene", Visualization.md Abschnitt 9).
// Die Form entspricht bewusst den echten API-Responses (siehe API.md), damit ab Phase 3 nur
// noch die Quelle (fetch() statt dieses Moduls) getauscht werden muss.
// Entspricht der Struktur von GET /api/v1/tickets, hier aber bereits zu Zaehlern je Spalte
// aggregiert (die eigentliche Aggregation aus Einzel-Tickets kommt mit der Live-Anbindung
// in Phase 3).
export const DEMO_TICKET_COUNTS = {
backlog: 8,
bereit: 3,
in_arbeit: 2,
qa: 1,
testing: 0,
fertig: 2,
done: 12,
};
// Entspricht GET /api/v1/agents, "pose" ist reine Darstellungs-Deko fuer Phase 2 (ohne
// Animation) und kein Feld der echten API.
export const DEMO_AGENTS = [
{ name: "Alice", role: "entwickler", pose: "working" },
{ name: "Bob", role: "entwickler", pose: "reading_newspaper" },
{ name: "Petra", role: "product_owner", pose: "working" },
{ name: "Quentin", role: "qa", pose: "idle" },
{ name: "Dirk", role: "entwickler", pose: "working" },
{ name: "Nadja", role: "qa", pose: "coffee" },
null,
null,
];
// Entspricht GET /api/v1/systems.
export const DEMO_SYSTEMS = [
{ id: "srv1", name: "Webserver", status: "ok" },
{ id: "srv2", name: "Mailserver", status: "ok" },
{ id: "srv3", name: "Datenbank", status: "error" },
{ id: "srv4", name: "Backup", status: "ok" },
{ id: "srv5", name: "VPN", status: "ok" },
{ id: "srv6", name: "DNS", status: "ok" },
];
// Entspricht GET /api/v1/events, bereits absteigend nach Zeit sortiert (neuestes zuerst).
export const DEMO_EVENTS = [
{ time: "14:32", system: "Datenbank", message: "Verbindung fehlgeschlagen", severity: "error" },
{ time: "14:20", system: "Backup", message: "Backup dauert laenger als ueblich", severity: "warning" },
{ time: "13:58", system: "Webserver", message: "Hohe Antwortzeit", severity: "warning" },
{ time: "12:10", system: "VPN", message: "Client getrennt", severity: "warning" },
{ time: "09:05", system: "Datenbank", message: "Reconnect erfolgreich", severity: "warning" },
];
// KPI-Monitor: F7 ist noch offen ("kommt spaeter") - Phase 2 zeigt daher nur einen leeren
// Rahmen mit Platzhaltertext, bewusst keine erfundenen Kennzahlen.
export const DEMO_KPI_PLACEHOLDER = "KPI-Monitor – Kennzahlen folgen in einer späteren Phase";