Files
BauIN/docs/plaene/AP01-fundament.md
T
ChristophandClaude Opus 5.5 2143f4e955 Detaillierter Projektplan mit Teilplänen und Fragenliste
- docs/projektplan.md neu gegliedert: Arbeitsweise mit Freigaben, Zuständigkeiten,
  Meilensteine mit Abnahmekriterien, Arbeitspakete mit Status, Zeitplan, Entscheidungen
- docs/plaene/: Teilplan je Arbeitspaket (detailliert für AP0, AP1, AP2, AP3, AP5, AP11,
  AP13; grob für AP4, AP6–AP10, AP12, Optionen) und Vorlage
- docs/fragen.md: alle offenen Fragen mit Status, Empfänger und betroffenem Teilplan
- CLAUDE.md: Umsetzung nur nach freigegebenem Teilplan

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 08:47:05 +02:00

5.5 KiB
Raw Blame History

AP1 – Fundament: CI, Rechte, Benutzer, Projekte, Upload, Protokoll

Status in Arbeit; Schritte ab 1.5 detailliert, warten auf Freigabe
Aufwand 1,25 PW offen (mit Claude Code)
Zeitraum KW 40–43
Meilenstein M1 (30.10.)
Freigabe offen

Ziel

Benutzer melden sich an, sehen nur die Projekte, in denen sie Mitglied sind, legen Projekte mit PFA und Verträgen an und laden LV-Pakete hoch. Jede wichtige Aktion wird protokolliert.

Umfang

Enthalten:

  • CI
  • Rechtekonzept und Policies
  • Benutzerverwaltung
  • Projektverwaltung (Projekt, PFA, Verträge, Auftragnehmer, Mitglieder)
  • Upload und Download im privaten Speicher, auch als ZIP
  • Protokoll
  • Länderstruktur

Nicht enthalten:

  • GAEB-Import (AP5)
  • Anmeldung mit dem Microsoft-Konto (erst nach Antwort B1, eigener Schritt)
  • Endgültiges Design (AP13): Die Oberflächen entstehen zuerst mit TallStackUI-Standard und werden in AP13 angepasst.

Voraussetzungen

  • Fragen: A1 (Gliederung), A25 (Rollen), B1 (Anmeldung), B4 (Ordnerstruktur für ZIP)
  • D5 (Actions-Runner auf dem Synology-Gitea)

Entscheidungen

Nr. Frage Vorschlag Entschieden
E1.1 Projektrollen über eigene Tabelle oder Spatie-Teams? Eigene Tabelle projekt_mitglieder (umgesetzt); globale Rollen über Spatie offen
E1.2 Protokoll: Paket oder eigene Tabelle? spatie/laravel-activitylog (MIT, verbreitet) offen
E1.3 Neue Benutzer: Einladung per E-Mail mit Link zum Passwort setzen, oder Admin vergibt Startpasswort? Einladung per E-Mail (Mailpit in der Entwicklung) offen
E1.4 Benutzer löschen oder nur deaktivieren? Nur deaktivieren, damit Protokoll und Zuordnungen erhalten bleiben offen
E1.5 Darf der Administrator Projektinhalte sehen? Nein, nur wenn er Projektmitglied ist offen (A25)

Schritte

  • 1.1 Entwicklungsumgebung, Repository, gitleaks-Hook

  • 1.2 Laravel 13, Livewire 4, TallStackUI 4, Fortify (2FA, Passkeys), Spatie, Mehrsprachigkeit

  • 1.3 Nicht-funktionale Grundlagen: keine externen Ressourcen (Test), CLAUDE.md, Tech-Stack-Doku

  • 1.4 Datenmodell Kern (docs/datenmodell.md). Umgesetzt vor Freigabe.

    • 1.4a Review mit dir: Erklärung der Tabellen, Entscheidung E1.1
    • 1.4b Anpassen nach den Antworten A1, A4, A8 und A10
  • 1.5 CI in Gitea Actions:

    • Runner auf dem Synology prüfen bzw. einrichten (Skript von Claude Code, du führst es aus).
    • Workflow mit composer install, npm run build, Tests gegen MySQL, Pint (--test), PHPStan, Proxy-Tests und gitleaks.

    → Ergebnis: Jeder Push zeigt grün oder rot.

  • 1.6 Rechtekonzept docs/rechte.md → Ergebnis: Rechte-Matrix zur Freigabe durch dich (vorläufig bis A25):

    • Rollen: global Administrator (optional Regelverantwortlicher); je Projekt Projektleiter, Bearbeiter, Leser
    • Matrix Aktion × Rolle: Projekt sehen, anlegen, bearbeiten, archivieren; Mitglieder verwalten; Dokumente hochladen, sehen, herunterladen; vertrauliche Dokumente; Nachträge anlegen, zuweisen, prüfen; Export; Regeln vorschlagen und freigeben; Verwaltung
    • Mandantentrennung und Regeln für archivierte Projekte (nur lesen)
  • 1.7 Policies und Gates nach dem Rechtekonzept:

    • zentrale Abfrage „Projekte des Benutzers“
    • Mandanten-Scope
    • vertrauliche Dokumente nur für freigegebene Personen

    → Ergebnis: Je Aktion ein Test mit und einer ohne Berechtigung.

  • 1.8 Benutzerverwaltung (Administrator):

    • Liste mit Suche
    • Anlegen (Einladung nach E1.3), Bearbeiten, Deaktivieren (E1.4)
    • Globale Rolle, Mandant, 2FA-Status

    → Ergebnis: Verwaltung → Benutzer.

  • 1.9 Projektverwaltung:

    • Projektliste
    • Projekt anlegen in drei Schritten wie im Claude-Design-Entwurf: Projektdaten, PFA und Verträge mit Auftragnehmern, Mitglieder
    • Bearbeiten, Archivieren (schreibgeschützt)

    → Ergebnis: Projekte → Neues Projekt.

  • 1.10 Upload und Download:

    • Speicher storage/app/private/<mandant>/<projekt>/…
    • Einzel- und ZIP-Upload bis 200 MB
    • Paarbildung PDF, X86, D86 nach Dateinamen; Zuordnung zu PFA und Vertrag zum Bestätigen
    • Prüfung von Dateityp und Größe, Erkennung von Duplikaten (sha256)
    • Download nur über eine Route mit Rechteprüfung

    → Ergebnis: LV-Paket hochladen, LVs als Datensätze mit Dokumenten.

  • 1.11 Protokoll (E1.2):

    • Anmeldung (Erfolg und Fehlschlag)
    • Benutzer- und Rechteänderungen
    • Projektänderungen
    • Upload, Löschen, Herunterladen vertraulicher Dokumente
    • Einstellungen und Exporte

    → Ergebnis: Verwaltung → Protokoll mit Filter.

  • 1.12 Länderstruktur:

    • Schnittstelle für länderspezifische Begriffe und Auswahllisten
    • Umsetzung für DE, AT nur als Platzhalter
    • Länderwahl nur bei mehr als einem freigeschalteten Land

Abnahmekriterien

  • Die Kriterien von M1 zu Benutzern, Projekten, Upload, Rechten und Protokoll sind erfüllt (docs/projektplan.md, Abschnitt 5).
  • Ein Benutzer ohne Mitgliedschaft erhält auf jeder Projekt-, Dokument- und Download-URL 403 oder 404.
  • CI ist grün.

Tests

  • Feature-Tests je Aktion mit und ohne Berechtigung, auch für andere Mandanten.
  • Upload: Paarbildung, zu große Datei, falscher Typ, Duplikat, ZIP mit Ordnern.
  • Protokolleinträge für die genannten Ereignisse.

Risiken

  • Die Rollen ändern sich nach A25. Deshalb das Konzept zuerst schriftlich und die Policies zentral halten.
  • Große ZIPs: Upload-Grenzen in PHP, Nginx und Livewire abstimmen und testen.