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>
52 lines
2.3 KiB
JavaScript
52 lines
2.3 KiB
JavaScript
// 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";
|