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