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>
This commit is contained in:
Christoph
2026-10-05 08:47:05 +02:00
co-authored by Claude Opus 5.5
parent 6aac8b0a16
commit 2143f4e955
19 changed files with 1653 additions and 212 deletions
+85
View File
@@ -0,0 +1,85 @@
# AP5 – GAEB-Import und PDF-Anzeige
| | |
|---|---|
| Status | detailliert, wartet auf Freigabe |
| Aufwand | 1,25 PW |
| Zeitraum | KW 41 (Test), KW 43–45 |
| Meilenstein | M1 (LV-Baum), M2 (PDF, Nachträge) |
| Freigabe | offen |
## Ziel
LVs und Nachtrags-LVs werden aus X86-Dateien eingelesen: Positionen, Vorbemerkungen und Gliederung.
Jede Position lässt sich im zugehörigen PDF an der richtigen Stelle anzeigen.
## Umfang
**Enthalten:**
- GAEB DA XML (X86) für Vertrags-LVs und Nachtrags-LVs
- LV-Baum, PDF-Anzeige mit Markierung, Zuordnung von OZ zur PDF-Seite
- Nachtrag ohne X86 über Texterkennung mit Bestätigung durch den Bearbeiter
**Nicht enthalten:**
- D86 (GAEB 90), nur falls A5 es erfordert
- Kalkulationen und Preisnachweise (Phase 2)
## Voraussetzungen
- AP1 Schritt 1.10 (Upload)
- A3 (Vorbemerkungen in X86?), A5 (Nachtrags-LV immer als X86?), A18 (anonymisierte Beispiele)
## Entscheidungen
| Nr. | Frage | Vorschlag | Entschieden |
|---|---|---|---|
| E5.1 | Parser: eigene Umsetzung oder Bibliothek? | Nach Schritt 5.1; voraussichtlich eigene Umsetzung mit `XMLReader` (wenige gepflegte PHP-Bibliotheken) | offen |
| E5.2 | PDF-Anzeige | pdf.js (`pdfjs-dist`) lokal über Vite gebündelt, kein CDN | offen |
| E5.3 | Seitenzuordnung | PDF-Text je Seite lokal mit poppler (`pdftotext`), OZ suchen; Sail-Image um poppler-utils ergänzen | offen |
## Schritte
- [ ] **5.1** GAEB-Test (KW 41):
- Öffentliche Beispieldateien suchen und deren Lizenz prüfen; dazu eine selbst erzeugte
X86-Datei nach DA XML 3.3 mit Titeln, Positionen und Vorbemerkungen
- Struktur auswerten, Bibliotheken prüfen
→ `docs/tests/gaeb-test.md` mit Vorschlag zu E5.1
- [ ] **5.2** Datenmodell `lv_elemente`:
- Felder: LV, übergeordnetes Element, Typ (Bereich, Titel, Position, Vorbemerkung, Hinweistext),
OZ, Kurztext, Langtext, Menge, Einheit, EP, GP, Sortierung, PDF-Seite
- Migration und Tests
- [ ] **5.3** Parser und Import-Job X86 → `lv_elemente`:
- Importstatus und Fehlerbericht
- Erneuter Import ersetzt den alten Stand nachvollziehbar
- [ ] **5.4** LV-Ansicht:
- Baum mit Titeln, Positionen und Vorbemerkungen
- Langtext aufklappbar, Suche im LV
- [ ] **5.5** Seitenzuordnung (E5.3): je Element die PDF-Seite ermitteln, Abweichungen protokollieren
- [ ] **5.6** PDF-Anzeige (E5.2):
- Seite, Zoom, Sprung zur Position, Markierung der Stelle
- Auslieferung nur über die Rechteprüfung
- [ ] **5.7** Nachtrags-Import:
- Nachtrags-LV als X86 → `nachtragspositionen`
- Nur PDF → Dokumentdienst (AP3) → erkannte Positionen; der Bearbeiter bestätigt sie
- [ ] **5.8** Anpassen nach den echten Beispielen (A18), sobald sie da sind
## Abnahmekriterien
- Ein Beispiel-LV wird vollständig eingelesen: Anzahl der Positionen und Summen stimmen mit der Datei überein.
- Ein Klick auf eine Position zeigt im PDF die richtige Seite mit Markierung.
- Ein Nachtrags-LV ergibt die Nachtragspositionen.
## Tests
- Parser mit erfundenen Beispieldateien: Gliederung, Langtexte, Sonderfälle wie fehlende Menge
oder Pauschalposition
- Import-Job mit Fehlerfall
- Seitenzuordnung
- Rechteprüfung der PDF-Auslieferung
## Risiken
- Erweiterungen des Kalkulationsprogramms in der X86. Echte Beispiele früh anfordern (A18);
unbekannte Elemente protokollieren statt abbrechen.
- Gescannte PDFs ohne Textebene: dann keine Seitenzuordnung, Hinweis anzeigen.