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

127 lines
5.5 KiB
Markdown
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.
# 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
- [x] **1.1** Entwicklungsumgebung, Repository, gitleaks-Hook
- [x] **1.2** Laravel 13, Livewire 4, TallStackUI 4, Fortify (2FA, Passkeys), Spatie,
Mehrsprachigkeit
- [x] **1.3** Nicht-funktionale Grundlagen: keine externen Ressourcen (Test), `CLAUDE.md`, Tech-Stack-Doku
- [x] **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.