diff --git a/00_Konzept/review-phase_arbeitsstand-frank.md b/00_Konzept/review-phase_arbeitsstand-frank.md index 3b70fd0..0d21f24 100644 --- a/00_Konzept/review-phase_arbeitsstand-frank.md +++ b/00_Konzept/review-phase_arbeitsstand-frank.md @@ -44,9 +44,22 @@ kanonisch ins Konzept übernommen (vor Übernahme mit **Michael** rückkoppeln). | rv_05 Redesign → DPM | 4./5. Starten/Implementieren (Routing) | | rv_06 Außerbetriebnahme | *— nicht explizit abgedeckt* | +## Routing & Change-Arten (geklärt) + +- **MB = Mission Board** (offener Punkt gelöst). Das SOR-Routing am Change ist: + **RUN** (im Betrieb durch den SO) · **DPM** (über den Demand-Prozess) · **MB** + (Mission Board). **Eskalations-Kriterium:** Reicht die **Ressourcen-/ + Entscheidungshoheit der SOR** nicht (z. B. zusätzliches Budget/Mittel), wird der + Change zum **Demand** → über **DPM** ans **Mission Board** (= der DPM-Rücklauf). +- **Change-Arten auf 4 zusammengeführt** (Major · Normal · Standard · Emergency). + Franks frühere *Top-Level/Low-Level*-Unterscheidung ist **Routing/Freigabe-Ebene, + kein Change-Typ** (ITIL 4: „Major" = Normal-Change mit höherer Authority; YASM: + bewusst schlank). In der App umgesetzt: 4 Change-Arten, **24 Action Cards** + (6 Services × 4), klarere Klassifizierung. „Major" nutzt das Top-Level-Beispiel. + → Workshop-Arbeitsstand (App), **nicht** YAML/kanonisches Konzept. + ## Offene Punkte (vor Konzept-/YAML-Übernahme klären) -- **„MB"** als dritter Routing-Weg ist **nicht definiert** (RUN und DPM sind klar). - **Retirement / Außerbetriebnahme** (bisher rv_06) fehlt — bewusst entfallen oder unter „Service-Änderung" subsumiert? - **RACI + Quizfragen** wurden für die App **abgeleitet** (Franks Entwurf nennt nur diff --git a/04_Tablet-Quiz/README.md b/04_Tablet-Quiz/README.md index 023ceed..bb7f2a5 100644 --- a/04_Tablet-Quiz/README.md +++ b/04_Tablet-Quiz/README.md @@ -8,7 +8,7 @@ > (Lebenszyklus-Phase anklicken) → **Stationen** (Diskussion/Quiz/Auflösung) → > **Debrief** mit **Markdown-/JSON-Export**. Inhalte (Stationen, Quizfragen, Use-Cases) > sind derzeit in `app/index.html` eingebettet. Die **finalen Action-Card-Grafiken** -> (Freiburg-digital-Layout) liegen in `app/cards/` (`s-c.png`, **alle 30**). +> (Freiburg-digital-Layout) liegen in `app/cards/` (`s-c.png`, **24** = 6 Services × 4 Change-Arten; Major/Normal/Standard/Emergency). > **Deployment:** statisch, siehe > [`app/DEPLOY.md`](app/DEPLOY.md). **Lokal testen:** `python -m http.server 8099 > --directory 04_Tablet-Quiz/app` (oder Preview-Config `.claude/launch.json`). diff --git a/04_Tablet-Quiz/app/cards/s0-c1.png b/04_Tablet-Quiz/app/cards/s0-c1.png index ac25b8f..255d426 100644 Binary files a/04_Tablet-Quiz/app/cards/s0-c1.png and b/04_Tablet-Quiz/app/cards/s0-c1.png differ diff --git a/04_Tablet-Quiz/app/cards/s0-c2.png b/04_Tablet-Quiz/app/cards/s0-c2.png index 255d426..d7a7587 100644 Binary files a/04_Tablet-Quiz/app/cards/s0-c2.png and b/04_Tablet-Quiz/app/cards/s0-c2.png differ diff --git a/04_Tablet-Quiz/app/cards/s0-c3.png b/04_Tablet-Quiz/app/cards/s0-c3.png index d7a7587..031930c 100644 Binary files a/04_Tablet-Quiz/app/cards/s0-c3.png and b/04_Tablet-Quiz/app/cards/s0-c3.png differ diff --git a/04_Tablet-Quiz/app/cards/s0-c4.png b/04_Tablet-Quiz/app/cards/s0-c4.png deleted file mode 100644 index 031930c..0000000 Binary files a/04_Tablet-Quiz/app/cards/s0-c4.png and /dev/null differ diff --git a/04_Tablet-Quiz/app/cards/s1-c1.png b/04_Tablet-Quiz/app/cards/s1-c1.png index 270c925..692f60c 100644 Binary files a/04_Tablet-Quiz/app/cards/s1-c1.png and b/04_Tablet-Quiz/app/cards/s1-c1.png differ diff --git a/04_Tablet-Quiz/app/cards/s1-c2.png b/04_Tablet-Quiz/app/cards/s1-c2.png index 692f60c..b212aca 100644 Binary files a/04_Tablet-Quiz/app/cards/s1-c2.png and b/04_Tablet-Quiz/app/cards/s1-c2.png differ diff --git a/04_Tablet-Quiz/app/cards/s1-c3.png b/04_Tablet-Quiz/app/cards/s1-c3.png index b212aca..a7bfce7 100644 Binary files a/04_Tablet-Quiz/app/cards/s1-c3.png and b/04_Tablet-Quiz/app/cards/s1-c3.png differ diff --git a/04_Tablet-Quiz/app/cards/s1-c4.png b/04_Tablet-Quiz/app/cards/s1-c4.png deleted file mode 100644 index a7bfce7..0000000 Binary files a/04_Tablet-Quiz/app/cards/s1-c4.png and /dev/null differ diff --git a/04_Tablet-Quiz/app/cards/s2-c1.png b/04_Tablet-Quiz/app/cards/s2-c1.png index afa79a4..cc77016 100644 Binary files a/04_Tablet-Quiz/app/cards/s2-c1.png and b/04_Tablet-Quiz/app/cards/s2-c1.png differ diff --git a/04_Tablet-Quiz/app/cards/s2-c2.png b/04_Tablet-Quiz/app/cards/s2-c2.png index cc77016..3a7fe04 100644 Binary files a/04_Tablet-Quiz/app/cards/s2-c2.png and b/04_Tablet-Quiz/app/cards/s2-c2.png differ diff --git a/04_Tablet-Quiz/app/cards/s2-c3.png b/04_Tablet-Quiz/app/cards/s2-c3.png index 3a7fe04..c7c44bd 100644 Binary files a/04_Tablet-Quiz/app/cards/s2-c3.png and b/04_Tablet-Quiz/app/cards/s2-c3.png differ diff --git a/04_Tablet-Quiz/app/cards/s2-c4.png b/04_Tablet-Quiz/app/cards/s2-c4.png deleted file mode 100644 index c7c44bd..0000000 Binary files a/04_Tablet-Quiz/app/cards/s2-c4.png and /dev/null differ diff --git a/04_Tablet-Quiz/app/cards/s3-c1.png b/04_Tablet-Quiz/app/cards/s3-c1.png index 868ee1b..e5c04d3 100644 Binary files a/04_Tablet-Quiz/app/cards/s3-c1.png and b/04_Tablet-Quiz/app/cards/s3-c1.png differ diff --git a/04_Tablet-Quiz/app/cards/s3-c2.png b/04_Tablet-Quiz/app/cards/s3-c2.png index e5c04d3..1e92d29 100644 Binary files a/04_Tablet-Quiz/app/cards/s3-c2.png and b/04_Tablet-Quiz/app/cards/s3-c2.png differ diff --git a/04_Tablet-Quiz/app/cards/s3-c3.png b/04_Tablet-Quiz/app/cards/s3-c3.png index 1e92d29..2b55f60 100644 Binary files a/04_Tablet-Quiz/app/cards/s3-c3.png and b/04_Tablet-Quiz/app/cards/s3-c3.png differ diff --git a/04_Tablet-Quiz/app/cards/s3-c4.png b/04_Tablet-Quiz/app/cards/s3-c4.png deleted file mode 100644 index 2b55f60..0000000 Binary files a/04_Tablet-Quiz/app/cards/s3-c4.png and /dev/null differ diff --git a/04_Tablet-Quiz/app/cards/s4-c1.png b/04_Tablet-Quiz/app/cards/s4-c1.png index 92c49c8..bde7e0c 100644 Binary files a/04_Tablet-Quiz/app/cards/s4-c1.png and b/04_Tablet-Quiz/app/cards/s4-c1.png differ diff --git a/04_Tablet-Quiz/app/cards/s4-c2.png b/04_Tablet-Quiz/app/cards/s4-c2.png index bde7e0c..3d21db2 100644 Binary files a/04_Tablet-Quiz/app/cards/s4-c2.png and b/04_Tablet-Quiz/app/cards/s4-c2.png differ diff --git a/04_Tablet-Quiz/app/cards/s4-c3.png b/04_Tablet-Quiz/app/cards/s4-c3.png index 3d21db2..5e924cb 100644 Binary files a/04_Tablet-Quiz/app/cards/s4-c3.png and b/04_Tablet-Quiz/app/cards/s4-c3.png differ diff --git a/04_Tablet-Quiz/app/cards/s4-c4.png b/04_Tablet-Quiz/app/cards/s4-c4.png deleted file mode 100644 index 5e924cb..0000000 Binary files a/04_Tablet-Quiz/app/cards/s4-c4.png and /dev/null differ diff --git a/04_Tablet-Quiz/app/cards/s5-c1.png b/04_Tablet-Quiz/app/cards/s5-c1.png index b4e46ea..1df396b 100644 Binary files a/04_Tablet-Quiz/app/cards/s5-c1.png and b/04_Tablet-Quiz/app/cards/s5-c1.png differ diff --git a/04_Tablet-Quiz/app/cards/s5-c2.png b/04_Tablet-Quiz/app/cards/s5-c2.png index 1df396b..b7319d8 100644 Binary files a/04_Tablet-Quiz/app/cards/s5-c2.png and b/04_Tablet-Quiz/app/cards/s5-c2.png differ diff --git a/04_Tablet-Quiz/app/cards/s5-c3.png b/04_Tablet-Quiz/app/cards/s5-c3.png index b7319d8..ab3bb6a 100644 Binary files a/04_Tablet-Quiz/app/cards/s5-c3.png and b/04_Tablet-Quiz/app/cards/s5-c3.png differ diff --git a/04_Tablet-Quiz/app/cards/s5-c4.png b/04_Tablet-Quiz/app/cards/s5-c4.png deleted file mode 100644 index ab3bb6a..0000000 Binary files a/04_Tablet-Quiz/app/cards/s5-c4.png and /dev/null differ diff --git a/04_Tablet-Quiz/app/index.html b/04_Tablet-Quiz/app/index.html index 0d0adfa..490225e 100644 --- a/04_Tablet-Quiz/app/index.html +++ b/04_Tablet-Quiz/app/index.html @@ -222,11 +222,10 @@ /* Empfohlener Einstiegspunkt je Change-Typ (didaktische Auflösung in Schritt 2). Reihenfolge entspricht CHANGE_TYPES. */ const START_EMPFEHLUNG = [ - { id:"ds_01", grund:"Ein Major Change auf Top-Level ist strategisch getrieben und betrifft den Service grundlegend – er durchläuft den vollen Lebenszyklus ab dem Design (Service-Definition)." }, - { id:"ds_01", grund:"Auch ein Major Change auf Low-Level bringt neue Komponenten/Funktionen und braucht ein echtes Design – Einstieg im Design. Unterschied zum Top-Level ist v.a. Tragweite und Freigabe-Ebene, nicht der Einstiegspunkt." }, + { id:"ds_01", grund:"Ein Major Change ist strategisch getrieben und betrifft den Service grundlegend – er durchläuft den vollen Lebenszyklus ab dem Design (Service-Definition)." }, { id:"tr_01", grund:"Ein Normal Change ist geplant und dokumentiert, aber nicht strategisch. Er steigt an Gate 1 ein, wo Build-oder-Konfiguration entschieden wird – meist der Konfigurationspfad (tr_05)." }, - { id:"op_03", grund:"Ein Standard Change ist vorab genehmigt und im Katalog hinterlegt. Er braucht keine Gates und kein Design, sondern wird im laufenden Betrieb umgesetzt (op_03: Umsetzung freigegebener Standard-Changes)." }, - { id:"tr_10", grund:"Ein Emergency Change muss die Störung sofort beheben. Der Fix wird beschleunigt ausgerollt (tr_10); die formale Freigabe (Gate 3) erfolgt nachgelagert. Ausgelöst wird er typischerweise durch einen Incident aus Operation/Support." } + { id:"op_03", grund:"Ein Standard Change ist vorab genehmigt und im Katalog hinterlegt. Er braucht keine Gates und kein Design, sondern wird im laufenden Betrieb umgesetzt (op_03)." }, + { id:"tr_10", grund:"Ein Emergency Change muss die Störung sofort beheben. Der Fix wird beschleunigt ausgerollt (tr_10); die formale Freigabe (Gate 3) erfolgt nachgelagert." } ]; /* Geführtes Beispiel ("for dummies"-Tour): EIN konkreter Fall durch den ganzen @@ -304,15 +303,13 @@ const PHASEN = { }; /* Action Cards: 6 Services × 5 Change-Typen (aus „Use Cases mit möglichen Changes"). */ const CHANGE_TYPES = [ - "Major Change – Top-Level", - "Major Change – Low Level", + "Major Change", "Normal Change", "Standard Change", "Emergency Change" ]; const CHANGE_LEGEND = [ - "Strategisch getrieben, verändert den Service grundlegend — voller Lebenszyklus ab dem Design; Freigabe auf oberster Ebene.", - "Bringt neue Komponenten/Funktionen und braucht ein echtes Design — aber kleinere Tragweite und Freigabe-Ebene als Top-Level.", + "Strategisch/grundlegend, braucht ein echtes Design — durchläuft den vollen Lebenszyklus ab dem Design. Freigabe in der SOR; reicht deren Ressourcen-/Entscheidungshoheit nicht, wird daraus ein Demand (Routing DPM → Mission Board).", "Geplant und dokumentiert, aber nicht strategisch — Einstieg an Gate 1 (Bauen oder Konfigurieren), meist Konfiguration.", "Vorab genehmigt und im Katalog hinterlegt — keine Gates, kein Design, direkt im laufenden Betrieb.", "Muss eine Störung sofort beheben — beschleunigt umgesetzt; die formale Freigabe erfolgt nachgelagert." @@ -322,7 +319,6 @@ const USE_CASES = [ desc:"Bereitstellung von virtuellen Windows-Desktops über das interne Rechenzentrum.", changes:[ {titel:"Open Source von oben!", text:"Der OB gibt die Richtung vor: Die proprietäre VDI-Lösung soll auf eine Open-Source-Alternative (OpenStack + Thin-Client) umgestellt werden."}, - {titel:"Bauamt will mehr!", text:"Das Bauamt fordert ein neues GIS-Fachverfahren, das künftig direkt auf dem virtuellen Desktop laufen soll."}, {titel:"Tapetenwechsel", text:"Die Stadt bekommt ein neues Logo — der Desktop-Hintergrund aller virtuellen Arbeitsplätze muss angepasst werden."}, {titel:"Quartalspflege", text:"Das turnusmäßige Firmware-Update der VDI-Host-Hypervisoren steht an — im Standard-Change-Katalog längst hinterlegt."}, {titel:"Blackout!", text:"Ein Stromausfall reißt ein ganzes VDI-Host-Cluster aus dem Betrieb — die Sitzungen müssen sofort auf ein Backup-Cluster migriert werden."} @@ -331,7 +327,6 @@ const USE_CASES = [ desc:"Zentral verwalteter VPN-Dienst, der Mitarbeitenden der Fachämter sicheren Remote-Zugriff auf interne Systeme (Intranet, Fachanwendungen, Datenbanken) ermöglicht.", changes:[ {titel:"Brüssel ruft!", text:"Eine neue EU-weite IT-Sicherheitsverordnung zwingt dazu, die gesamte VPN-Architektur neu aufzustellen."}, - {titel:"Schlüsselpflicht", text:"Das Hauptpersonalamt verlangt eine neue Authentifizierung: FIDO2-Security-Keys werden für alle verpflichtend."}, {titel:"Heimvorteil", text:"Ein neues Intranet-Portal soll in die Split-Tunnel-Liste, damit Mitarbeitende auch aus dem Homeoffice darauf zugreifen."}, {titel:"Monatsroutine", text:"Das monatliche Firmware-Update der VPN-Appliance steht an — als Standard-Change bereits freigegeben."}, {titel:"Gephisht!", text:"Ein erfolgreicher Phishing-Angriff hat eine VPN-Zertifikatskette kompromittiert — sofort sperren und neu ausstellen."} @@ -340,7 +335,6 @@ const USE_CASES = [ desc:"Zentrales Web-Portal, über das Bürger*innen Meldungen (z. B. Straßenreparatur, Lärm) und Anträge (z. B. Baugenehmigung, Personalausweis) digital einreichen und den Status verfolgen.", changes:[ {titel:"Mitreden, Pflicht!", text:"Ein neues Landesgesetz schreibt digitale Bürgerbeteiligung vor — das Portal muss um komplette Beteiligungs-Module erweitert werden."}, - {titel:"Ratsbeschluss!", text:"Der Gemeinderat will einen neuen Meldetyp „Klimaschutz“ — das Umweltamt braucht dafür eigene Formulare und Workflows."}, {titel:"Rotstift gefragt", text:"Der Bürgerservice meldet einen Rechtschreibfehler in einem statischen Hinweistext, der korrigiert werden muss."}, {titel:"Patchday", text:"Das monatliche Sicherheits-Patch des Webservers (Apache/Nginx) steht an — im Change-Katalog definiert."}, {titel:"Lücke im Formular!", text:"In einem Eingabe-Formular wird eine kritische XSS-Schwachstelle entdeckt — ein Hotfix muss sofort raus."} @@ -349,7 +343,6 @@ const USE_CASES = [ desc:"Elektronisches Archiv, das alle ein- und ausgehenden Dokumente (PDF, Scans, E-Mails) zentral speichert, versioniert und revisionssicher archiviert.", changes:[ {titel:"Datendiät", text:"Eine DSGVO-Ergänzung zur Datenminimierung erzwingt die komplette Neugestaltung von Metadaten-Modell und Archivierungs-Policies."}, - {titel:"Akten-Zuwachs", text:"Ein neues Fachverfahren zieht ein und braucht eigene Dokumentenklassen und Workflows im DMS."}, {titel:"Dropdown-Wunsch", text:"Das Finanzamt bittet um ein neues Metadaten-Feld „Kostenstelle“ als Auswahlliste."}, {titel:"Versionspflege", text:"Das quartalsweise Update der DMS-Software (Sicherheits- und Funktions-Patches) steht an."}, {titel:"Ransomware!", text:"Alarm: Dokumente werden verdächtig verschlüsselt — Storage sofort isolieren und aus den letzten Snapshots wiederherstellen."} @@ -358,7 +351,6 @@ const USE_CASES = [ desc:"Web-basiertes Karten- und Analyse-Portal, das Fachämtern (Bau, Umwelt, Verkehr) räumliche Daten (Flurstücke, Infrastruktur, Umweltzonen) und bearbeitbare Layer bereitstellt.", changes:[ {titel:"Norm-Zwang", text:"Eine bundesweite Vorgabe zu EU-Standards erzwingt die komplette Migration des GIS-Stacks auf konforme Services und Datenmodelle."}, - {titel:"Klimarisiko im Blick", text:"Das Umweltamt will ein neues Analyse-Modul „Klimarisiko“ — mit neuen Daten-Layern und Rechen-Ressourcen."}, {titel:"Falsch beschriftet", text:"Das Bauamt meldet eine falsche Beschriftung eines Karten-Layers, die korrigiert werden muss."}, {titel:"GeoServer-Update", text:"Das monatliche Update der GIS-Software (GeoServer 2.23 → 2.24) steht an — im Standard-Change-Katalog."}, {titel:"Schnittstelle offen!", text:"An einer Schnittstelle wird eine kritische Schwachstelle entdeckt, die unautorisierten Datenzugriff erlaubt — Dienst sofort abschalten und patchen."} @@ -367,7 +359,6 @@ const USE_CASES = [ desc:"Web-Applikation, über die Fachämter interne Beschaffungen (Material, Dienstleistungen) anlegen, prüfen und Verträge digital verwalten.", changes:[ {titel:"Vergabe neu!", text:"Eine neue EU-Vergaberichtlinie zwingt zur Einführung von E-Invoicing und erweiterten Transparenz-Reports."}, - {titel:"Portal für Partner", text:"Ein neues Lieferanten-Portal (z. B. für Badenova) soll andocken — mit neuen API-Schnittstellen und Authentifizierungs-Flows."}, {titel:"Vierstellig, bitte", text:"Das Finanzamt wünscht eine kleine Anpassung: aus dem Label „Kostenstelle“ wird „Kostenstelle (4-stellig)“."}, {titel:"Patch-Quartal", text:"Das quartalsweise Sicherheits-Patch des Anwendungsservers steht an — bereits im Change-Katalog."}, {titel:"Upload-Falle!", text:"Im Vertrags-Upload wird eine kritische Lücke entdeckt, über die sich Schadcode hochladen lässt — Endpoint sofort sperren, Hotfix einspielen."} diff --git a/04_Tablet-Quiz/app/sw.js b/04_Tablet-Quiz/app/sw.js index a516836..f982d55 100644 --- a/04_Tablet-Quiz/app/sw.js +++ b/04_Tablet-Quiz/app/sw.js @@ -1,9 +1,9 @@ /* Service Worker — SLC-Workshop Companion (App-Shell, offline-first) */ -const CACHE = "slc-companion-v3"; +const CACHE = "slc-companion-v4"; const SHELL = ["./", "index.html", "manifest.webmanifest", "icon.svg"]; // Action-Card-Grafiken (cards/s-c.png) fuer Offline vorab cachen (alle 30). const CARDS = []; -for (let s = 0; s <= 5; s++) for (let c = 0; c <= 4; c++) { +for (let s = 0; s <= 5; s++) for (let c = 0; c <= 3; c++) { CARDS.push(`cards/s${s}-c${c}.png`); } const ASSETS = SHELL.concat(CARDS);