Files
BauIN/docs/plaene/AP05-gaeb-pdf.md
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

86 lines
3.3 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.
# 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.