# 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.