Files

64 lines
8.2 KiB
Markdown
Raw Permalink 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.
# Sprint-Plan MVP (V1)
Bezug: [[18_version_1]], [[22_testkonzept]], `testphasen.md` (Phase 05; Phase S = Satellit, Roadmap), `reihenfolge.md`, Karten [[01_rollen_zuordnung]], [[04_organisationsstruktur]], [[13_satelliten_server]].
Grundprinzip: fachliche Abhängigkeitskette bauen, Domänenlogik vor UI, Leitplanke „Mindermenge ≠ erledigt" früh beweisen. Kein Feature ohne Test (CI-Gate greift ab Sprint 0). Satelliten-Betrieb ist NICHT Teil dieses Plans (eigene Phase S in `testphasen.md`).
## 0. Fixierte Entscheidungen (bindend)
| # | Entscheidung | Konsequenz |
|---|---|---|
| E1 | **Keine Kontrollfälligkeit/-intervalle in V1.** Einzige zeitgetriebene Sichtbarkeit: Ablaufdaten (Prompt 14). Kontrolle wird organisatorisch angewiesen, System dokumentiert nur Durchführung (letzter Kontrollzeitpunkt sichtbar). | Kein Fälligkeitsfeld im Schema, keine „überfällig"-Kennzahl. Dashboard-Zeitkennzahl bleibt nur „bevorstehende Ablaufdaten" (Prompt 12.7). Fälligkeitslogik = Roadmap-Kandidat (verwandt mit Eskalation, Karte 12). |
| E2 | **Zuständigkeit vererbt sich vom Standort auf alle dortigen Objekte.** Standort-Zuordnung impliziert alle Objekte am Standort; objektspezifische Zeilen (`zustaendigkeit.objekt_id`) sind feinere Ergänzung, kein Ersatz. | Auswertelogik: Benutzer ist für Objekt zuständig, wenn ENTWEDER Standort-Zeile für dessen Standort ODER Objekt-Zeile existiert (Vereinigung, keine Überschreibung). Mehrere Verantwortliche je Objekt möglich (n:m). (Karte 04) |
| E3 | **Kontrollverantwortung ist nur Sichtbarkeit/Priorisierung, keine Pflichtkontrolle.** Zugewiesene Objekte werden im UI hervorgehoben, schließen andere Mitarbeiter nicht aus. | Screen 1 (Prompt 11): zugewiesene Objekte zuerst/hervorgehoben, darunter „alle Objekte". Keine Sperrlogik durch Zuweisung Schutz vor Doppelarbeit ist die Objekt-Sperre (Prompt 02.8). (Karte 01) |
| E4 | **Nachfüllung über Soll hinaus ist erlaubt**, wird als Überbestand protokolliert (informativ), erzeugt keinen Fehlbestand und keinen Fehler (Prompt 02.4 / 21.9). | API: kein 422, Response kennzeichnet den Fall als „Überbestand"-Info. |
| E5 | **Touch-Signatur: Datenmodell-Feld vorhanden (`kontrolle.signatur`, Prompt 20), UI dafür Roadmap.** V1 nutzt Login-gebundenen Kontrollnachweis als Unterschriftsersatz (Prompt 16.5). | Keine Einstellungs-Entität „Signatur pro Standort ein/aus" in V1; Konfigurierbarkeit erst mit Signatur-UI (Roadmap). |
| E6 | **V1-Seed: genau ein `systemknoten`-Datensatz (typ='haupt')** per Alembic-Migration angelegt; Backend liest dessen ID aus Config (z. B. Umgebungsvariable `SYSTEMKNOTEN_ID`) und setzt sie bei jedem Insert in `erzeugt_von_server_id`/`zustaendiger_server_id`. | Verhindert NOT NULL-Verletzungen ab dem allerersten Datensatz (Details/Begründung: `testphasen.md` Phase 0); Satelliten kommen später als weitere Zeilen dazu. |
## 1. Sprint-Übersicht
| Sprint | Inhalt | Fachbasis | Tests |
|---|---|---|---|
| **0 Fundament** | FastAPI-Skeleton, SQLAlchemy/Alembic, PostgreSQL, CI (pytest + Coverage-Gate 50 %); Auth (JWT, Passwort-Hashing bcrypt/argon2) + Rollen-Dependency; Schema-Grundgerüst inkl. `systemknoten` + UUID-Tabellen (Karte-13-Vorbereitung, kein späterer Umbau); Seed Hauptserver (E6) | Prompt 19/20, Karte 09 | Testphase 0 komplett |
| **1 Stammdaten** | Bereich, Kategorie, Standort, Objekttyp, Material (3 Typen); Benutzer/Rollen/Zuständigkeiten inkl. Vererbungslogik (E2); Admin-API 7a (Prompt 21) | Prompt 06/07, Karte 04 | Testphase 2 für diese Endpunkte; parametrisierter Rollenmatrix-Test angelegt |
| **2 Vorlagen & Objekte** | Beladungsvorlagen + Versionierung, Objekte anlegen/duplizieren, Objektpositionen + Override-Logik | Prompt 08/09/10 | U8, U9, U10 |
| **3 Kontroll-Kern** | Kontroll-Statusmaschine, Objekt-Sperre + Übernahme (protokolliert), Abschluss/Abbruch, Kontrollnachweis, automatische Fehlbestand-Erzeugung; Mitarbeiter-UI Screens 16 inkl. Zuweisungs-Hervorhebung (E3) | Prompt 02/11/16 | U1, U11, U12; Sperr-/409-Tests |
| **4 Fehlbestand & Nachfüllung** | Fehlbestand-Statusmaschine komplett, Nachfüllung sofort/später/teilweise, Überbestand-Regel (E4) | Prompt 03 | U3, U4, U5, U13 |
| **5 Mindermengen & Historie** | Genehmigung + automatischer Ablauf bei nächster Kontrolle; Historie-Vervollständigung (alle Ereignistypen), Audit-Suche/-UI | Prompt 04/13 | **U2, U6, U7, U14 Leitplanke final bewiesen**; Testphase 3 startet (S7S9, S15) |
| **6 Dashboard, Ablaufdaten, E-Mail** | Kennzahlen mit Aggregationsregel (offen + in_bearbeitung + nachgefuellt_teilweise = offen), Filter, Ablauf-Warnungen (einzige Zeit-Sicht, E1), asynchroner E-Mail-Versand bei neuem Fehlbestand | Prompt 12/14, Karte 05 | Testphase 3 weiter |
| **7 Offline-Härtung & E2E** | Service Worker / lokale Pufferung, Abschluss blockiert bei ungesendeten Positionen, Idempotenz, Statusanzeige | Prompt 17 | Testphase 3 komplett (S1S17), Testphase 4 (Playwright, Viewports, Praktiker-Session) |
| **8 Pilotvorbereitung** | Excel-Import der 3 Ist-Listen, Test-Deployment auf VPS, Parallelbetrieb Papier, Go/No-Go | Prompt 23 | Testphase 5 |
**Nicht im Plan** (bewusst, Prompt 18 Abschnitt 4): QR-Scan-Funktion, Eskalation, Lagerverwaltung, Push, Satelliten-Betrieb (Phase S).
## 2. Regeln übergreifend
- **Historie ab Sprint 1 mitbauen:** jeder schreibende Endpunkt protokolliert ab seiner Entstehung (wer/wann/alt→neu); Sprint 5 komplettiert nur Ereignistypen und Audit-UI. Keine nachträgliche Nachrüstung.
- **Testphasen 1+2 laufen IN den Sprints** (kein Merge ohne Test, CI-Gate), Phasen 35 sind die Endphasen.
- **Kein UI vor Domänenlogik** erste nennenswerte UI in Sprint 3, weil dort erstmals ein Mitarbeiter-Flow existiert (direkte Umsetzung der `reihenfolge.md`-Philosophie).
## 3. Größenordnung
9 Sprints × 2 Wochen ≈ 45 Monate bei Vollzeit-ähnlicher Kapazität; als Nebenbei-Projekt entsprechend länger. Engstellen: Sprint 3 (größter UI-Block), Sprint 7 (Offline-Verhalten technisch am fummeligsten).
## 4. Abnahmekriterien je Sprint
- **S0:** CI grün, Login funktioniert, Rollen-Dependency greift auf einem Test-Endpunkt, Seed `systemknoten` vorhanden und vom Backend verwendet (E6).
- **S1:** Alle Stammdaten-Endpunkte + Admin-API per Tests abgedeckt; Vererbungslogik (E2) durch Test bewiesen (Standort-Zuordnung → Sicht enthält alle Objekte des Standorts, Vereinigung mit Objekt-Zeilen).
- **S2:** Vorlagen-Versionierung + Duplizieren + Override durch U8/U9/U10 bewiesen.
- **S3:** Komplette Kontrolle digital durchspielbar inkl. Sperre/Übernahme/Abbrechen; Fehlbestand entsteht automatisch bei Ist < Soll.
- **S4:** Fehlbestand-Lebenszyklus komplett (U3/U4/U5/U13); Überbestand protokolliert ohne Fehlbestand (E4).
- **S5:** U2/U6/U7/U14 grün; Historie-Kette S15 vollständig referenziert und chronologisch korrekt.
- **S6:** Dashboard-Kennzahlen stimmen mit Aggregationsregel überein; E-Mail kommt bei neuem Fehlbestand an (Test-Mailserver).
- **S7:** Netzausfall-Szenario S16 grün, keine Datenverluste; Praktiker-Session ohne kritische UX-Befunde.
- **S8:** Echtdaten importiert, Parallelbetrieb ohne fachliche Diskrepanz → Go/No-Go-Entscheidung.
## 5. Excel-Import (Sprint 8)
Das detaillierte Spalten-Mapping, der Import-Ablauf und die bekannten Lücken (Einheiten-Nachpflege, Artikelnummer-Abgleich, Deployment-Regel) sind in **`testphasen.md`, Abschnitt „Excel-Import-Mapping"** ausgearbeitet und dort verbindlich hier bewusst kein Duplikat, um Divergenz zu vermeiden.
Kurzfassung für die Sprint-Planung: einmaliges idempotentes CLI-Import-Skript (Abgleich über Artikelnummer) erzeugt Bereich/Kategorie, je Excel-Datei einen Objekttyp + Beladungsvorlage Version 1 mit Vorlagenpositionen; konkrete Objekte werden danach über die UI aus den Vorlagen angelegt (Prompt 09-Flow), erste Kontrolle erfasst den Ist-Bestand (= Übergang Papier → digital, Prompt 23). Review-Schritt für die Materialtyp-Zuordnung (`standard`/`geraet_sn`; `ablauf_charge` kommt in den drei Quell-Listen nicht vor) ist Pflicht.
## Referenzen
Bezug: [[18_version_1]], [[22_testkonzept]], [[19_technische_architektur]], [[20_datenbank_schema]], [[21_api]], Karten [[01_rollen_zuordnung]], [[04_organisationsstruktur]], [[05_benachrichtigungen]], [[09_authentifizierung]], [[13_satelliten_server]], `testphasen.md`