Files
Projektwissen/docs/status/STATUS.md
T
DanielandClaude Opus 5.5 3e335cb0c7 Merge origin/main in feature/16-test-audit
Konflikte aufgelöst:
- docs/status/STATUS.md: Baustellen aus main (Basemap #88 ff., #93, #99, #100, #104) und aus dem
  Audit-Branch zusammengeführt und neu nummeriert; Punkt Test-Audit auf den Endstand für sn_basis
  (#76, PR #117) und den nächsten Schritt sn_verfahrensgebiet (#60) umgeschrieben; Stand 26.10.2026.
- docs/tests/testkatalog.md/.html: nicht von Hand zusammengeführt, sondern mit
  scripts/testkatalog.py neu erzeugt (sn_basis auf unstable nach PR #117,
  sn_verfahrensgebiet auf unstable).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 21:00:37 +01:00

156 lines
13 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.
# Status des Projekts
Kurz und aktuell. Wird bei jedem Merge und jeder Übergabe gepflegt (Skill `sn-uebergabe`). Älteres wandert nach unten
in „Erledigt" oder wird gelöscht. **Stand: 26.10.2026.**
## Aktuelle Phase
**Vorbereitung der gemeinsamen KI-gestützten Entwicklung.** Wissensbasis, Regeln, Skills, Leitfäden und Werkzeuge
liegen als Vorschlag vor (dieses Repository, künftig `AG_QGIS/Projektwissen`). Das grundlegende Refactoring ist eine
spätere Phase und beginnt erst, wenn die Test-Baseline grün ist und das Projektwissen vom Team abgenommen wurde.
## Wer arbeitet woran
| Person / Behörde | Schwerpunkt | Stand |
|---|---|---|
| Daniel Helbig (LK Meißen) | Fachfunktionen Verfahrensgebiet, Plan41, VLN-API; Basemap im Druck (Basis #88 ff.); Test-Audit (sn_basis abgeschlossen, Basis #76; als Nächstes sn_verfahrensgebiet, Verfahrensgebiet #60) | aktiv |
| Michael Otto (LK Mittelsachsen) | Release-Infrastruktur, Linkliste, zuletzt Verfahrensgebiet (Shape-Laden, Beteiligung) | aktiv |
| 22munzke | Druck/Layout-Anforderungen (Issues Basis #37–#44) | Issues |
| weitere Behörden | Einstieg über dieses Repository | ab 09/2026 |
## Offene Baustellen (priorisiert)
1. **Repository `AG_QGIS/Projektwissen` auf Gitea anlegen** und diesen Ordner pushen.
Prüfliste: `docs/konzept/08_repo_einrichten.md`. Danach Teamabnahme der Entscheidungen 0006–0009.
2. **`stable` in den Plugin-Repositories anlegen** und Branch-Schutz für `stable`, `testing`, `unstable` setzen.
Der stabile Kanal existiert heute nicht; ein Tag ohne Suffix würde fehlschlagen (ADR 0007,
`docs/konzept/08_repo_einrichten.md` Abschnitt 5).
3. **QGIS-Mindestversion klären.** `qgis_min = "3.40"` in `workspace.toml` und `qgisMinimumVersion=3.40` in allen
`metadata.template` zeigen auf eine Version, die seit Januar 2026 End of Life ist. Aktueller LTR ist 3.44,
Stable 4.2 wird am 25.09.2026 LTR. Produktentscheidung, blockiert die CI-Matrix
(`docs/konzept/07_qgis_tests_plan.md` Abschnitt 2).
4. **Test-Baseline grün machen.** Ist-Stand Mock-Modus laut `docs/status/testbaseline.json`:
sn_basis 166/166 grün, sn_plan41 43/44 (1 Fehler in `test_tab_a_ui`), sn_verfahrensgebiet 157/201
(36 rot, 8 übersprungen; meist veraltete Tests nach dem Mehrfachauswahl-Umbau).
Probelauf am 03.09.2026 mit frischen Klonen: `sn_verfahrensgebiet` 154/201, **drei neue rote Tests** in
`test_verfahrensgebiet_alkis_komplett` durch PR #43 („Nur-laden-Option durch Stop-Abfrage ersetzt").
Entscheidung des Maintainers: Tests anpassen oder Baseline mit `--update-baseline` nachziehen.
5. **Testbeschreibungen nachziehen.** `sn_basis` und `sn_verfahrensgebiet` (Docstring-Pflicht) sind in Arbeit,
`sn_plan41` weiterhin fast vollständig ohne Docstring (1 von 44). Ohne Beschreibung ist von außen nicht
erkennbar, was ein Test prüft. Arbeitsliste: Abschnitt „Lücken" in `docs/tests/testkatalog.md`. Pflicht für
neue und geänderte Tests gilt ab sofort (ADR 0009). Seit 15.09.2026 zusätzlich als Dashboard
`docs/tests/testkatalog.html` (lokal im Browser öffnen) – zeigt Testabdeckung und -status auf einen Blick,
seit 18.09.2026 auch strukturelle Lücken (Quellcode-Funktionen ohne Testbezug, Abschnitt „Ungetestete
Funktionen"), ohne in den Code zu schauen.
6. **Testlücken beim Shape-Import schließen.** Beim Erstellen von `docs/tests/verfahrensgebiet-shape-import.md`
gefunden und gegen `origin/unstable` geprüft: `_ermittle_gebietstyp_aus_fbschl` hat **keinen** Test — obwohl
PR #44/#45 genau diese Funktion tolerant gemacht hat. Ebenso ungetestet: mehrere Shapefile-Sätze in einer
ZIP-Datei, Fehlersammlung über mehrere Dateien. Issues anzulegen.
7. **CI für Tests** in den drei Plugin-Repos einrichten (Vorlage `docs/vorlagen/gitea_workflow_tests.yaml`),
Push/PR auf `unstable`.
8. **`.vscode/` aus den Plugin-Repos entfernen.** Liegt noch in `Plugin_SN_Basis`, `Plugin_SN_Plan41`,
`Plugin_SN_Verfahrensgebiet` und `Plugin_SN_Widmung`, mit fest verdrahteten Pfaden eines einzelnen
Arbeitsplatzes (OSGeo-Installationspfad und ein persönliches Benutzerprofil unter `C:/Users/...`). Im Projektwissen ist er am 04.09.2026 entfernt worden; die
brauchbaren Einstellungen stehen jetzt in `docs/leitfaden/04_werkzeuge_einrichten.md` Abschnitt 4.2.
9. **Release-Excludes ergänzen** (`Repository:hidden/workflows`): `AGENTS.md`, `CLAUDE.md`, `.agents/`,
`.claude/`, `docs/`, `tests/`, `.vscode/`.
10. **Metadata-Templates korrigieren** (Plan41 → eigenes Repo, FLT → `Plugin_SN_FLT`, Widmung-Version).
11. **Abhängigkeiten deklarieren** (`openpyxl`, `requests`; Basis-Abhängigkeit in `metadata.template` als
`plugin_dependencies`).
12. **Linkliste zusammenführen** (Entscheidung: zentrale CSV als einzige Quelle, XLSX generieren).
13. Fachlich offen: Planstand-Versionierung (Plan41 #3), Fachschale aus dem Alternativansatz
(`docs/analyse/00_vergleich_alternativansatz_2026-09-02.md`). Shape-Import mit abweichendem
`FBSchl`-Feldnamen ist seit PR Verfahrensgebiet #45 umgesetzt; QGIS-Test mit echtem DAVID-Export steht aus.
14. **ALKIS-7-Umstellung vorbereiten.** `sn_verfahrensgebiet` trifft an mehreren Stellen ALKIS-6-Annahmen
(fest verdrahteter NAS-Namespace `gid/6.0` in `grenzpunkt_alkis.py`, abgeflachte WFS-Feldnamen in
`sql=`-Filtern). Vergleich 6↔7 und Anpassungsliste: `docs/konzept/09_alkis7_umstellung.md`.
Nächster Schritt: Gitea-Issue in `Plugin_SN_Verfahrensgebiet`.
15. **Basemap-Legende im Druck (Basis #88).** In `unstable` gemergt: #88 (PR #89), Punktlinien-Korrektur #90
(PR #91), Rand für weiße Flächen #92. Offen: **fachliche Abnahme des Legendenkatalogs** `sn_basis/data/basemap_legende.json`
(Bezeichnungen, Gruppen, Zusammenfassungen; Konzept `docs/konzept/10_basemap_legende.md` Abschnitt 10,
ADR 0010; bisher unauffällig). Unter QGIS 4 geprüft (Plugin funktioniert, Rückmeldung 02.10.2026).
16. **Kartenrand-Überlappung bei kleinen Verfahren (Basis #93).** Gemergt (PR #95). Mehrspaltige Legenden schmaler
(#96: Textumbruch 60 mm, ungleiche Spaltenbreiten, zweizeiliger Basemap-Titel, Mindestbreite 180 mm wie das
Kartenschild) auf
`Plugin_SN_Basis:bugfix/96-legenden-spaltenbreite`, gemergt (PR #97).
17. **Basemap hinzufügen und Thema wechseln (Basis #100).** Gemergt (PR #103, Doku PR #25).
Themen Farbe/Grau, Erkennung über Kachel-URL, Prüfwert für ungespeicherte Änderungen. Manueller QGIS-Test
am 05.10.2026 bestanden (Laden über `styleUrl`, Themenwechsel per `setDataSource`, Prüfwert stabil). Folge-Issues: #101
(Import/Export der Stile), P10 Vektor (#102: technisch geprüft 06.10.2026, fachliche Entscheidung offen –
Beta-Lizenz nur zu Testzwecken, siehe `fallstricke.md`), Relief.
18. **Langer Tab verlängert das QGIS-Fenster (Basis #104).** Gemergt (PR #105, Doku PR #26): jeder Tab im
Scroll-Bereich über `BaseDockWidget.setWidget`, wirkt auch für Plan41/Verfahrensgebiet.
19. **Zoom und Drucklayout bei anderem Projekt-KBS (Basis #99).** Behoben auf `Plugin_SN_Basis:bugfix/99-druck-kbs`
und `Plugin_SN_Verfahrensgebiet:bugfix/99-zoom-kbs` (Doku: `Projektwissen:docs/99-druck-kbs`), PRs stehen aus;
**Basis zuerst mergen** (Verfahrensgebiet nutzt `zoom_auf_layer`). Layoutkarte im KBS des Verfahrensgebiets.
Offen: QGIS-Test. Folge-Issue (Entwurf): Projekt-KBS prüfen und amtliches KBS nach Länderkennung vorschlagen.
20. **Test-Audit (Projektwissen #16).** Werkzeug: `scripts/test_audit.py` (`status`/`markieren`) und
`docs/status/testpruefungen.json` zeigen im Prüfstand (`docs/tests/testkatalog.html`) je Testfall, ob und wann
er zuletzt fachlich geprüft wurde (unabhängig vom Baseline-Status). Markiert wird nur nach Freigabe durch einen
Menschen (`AGENTS.md`).
- **sn_basis abgeschlossen (Basis #76, PR #117, 26.10.2026):** 304 von 365 Testfällen geprüft. Bewusst
zurückgestellt, weil sie überarbeitet werden: Druckmodul (`test_print_logic.py`, `test_print_tab.py`) und
`test_excel_importer.py`. Die seit dem Abzweig auf `unstable` hinzugekommenen Tests (Basemap, Kartenrand,
Druck-KBS) sind noch „nie geprüft“. Befunde als eigene Issues: #77, #78, #84, #87, #110–#116. Tests, die
fragwürdiges Ist-Verhalten festhalten, verweisen auf ihr Issue (#77, #78, #114, #116).
- **sn_verfahrensgebiet als Nächstes (Verfahrensgebiet #60):** 289 Testfälle, keiner geprüft; zusätzlich ist
für jeden roten und übersprungenen Test zu entscheiden: anpassen, Bug-Issue oder entfernen.
- Danach getrennt: Fachtests aus den Testkonzept-Seiten ergänzen (laut #16 eigener Folgeschritt).
21. **Standarddatei-Existenzprüfung fehlt (Basis #59).** `Dateipruefer._handle_leere_eingabe()` und
`Pruefmanager._handle_basic_decision()` prüfen bei `standarddatei_vorschlagen` nie `file_exists()` —
bestätigt der Nutzer eine nicht vorhandene Standarddatei, kommt trotzdem `ok=True`/`"ok"` zurück statt
`datei_nicht_gefunden`. Bearbeitung bewusst zurückgestellt: **hängt von der Design-Entscheidung ab, ob
die Funktion „Standarddatei" überhaupt gebraucht wird** — aktuell übergibt kein Aufrufer
(`DataGrabber.py`, `excel_importer.py`) den Parameter `standarddatei`. `TestDateipruefer.test_
standarddatei_vorschlagen` bleibt bis zur Entscheidung bewusst ohne Gegenstück für den Fehlerfall
(kein Testfall-„nie geprüft", sondern Verhalten ungeklärt) — siehe Kommentar im Testfall.
22. **WMS-Zeilen im Datenabruf ungeklärt (Basis #77).** `Datenabruf._fetch_features()` liefert für
`provider == "WMS"` immer `([], None)`, der Kommentar dort verspricht „caller behandelt WMS separat" —
das tut `datenabruf()` aber nicht: jede WMS-Zeile durchläuft dieselbe relevant/ausserhalb-Klassifizierung
wie WFS/REST/OGR und landet deshalb zwangsläufig in `ausserhalb`, ohne dass je ein Layer geschrieben
wird. Offen: ist das gewollt (WMS-Kartendienste werden in diesem Pfad bewusst nicht geladen) oder fehlt
die im Kommentar versprochene Sonderbehandlung? `DatenabrufOrchestrierungTests.
test_wms_zeile_ohne_features_landet_in_ausserhalb` dokumentiert bewusst den Ist-Zustand, nicht den
bestätigt gewünschten — siehe Kommentar im Testfall.
23. **Falscher Aktionscode in `Datenschreiber.schreibe_log()` (Basis #78).** Der Erfolg wird mit
`aktion="standarddatei_vorschlagen"` gemeldet — demselben Code, den `Dateipruefer`/`Pruefmanager` für
die Standarddatei-Rückfrage nutzen (Punkt 21). Aktuell folgenlos, weil `Pruefmanager.verarbeite()` bei
`ok=True` sofort zurückkehrt, bevor die Aktion ausgewertet wird — aber missverständlich und zerbrechlich
bei künftigem Code, der auf diese Aktion filtert. `SchreibeLogTests.
test_schreibt_json_datei_mit_ergebnissen_und_gibt_pfad_zurueck` dokumentiert bewusst den Ist-Zustand —
siehe Kommentar im Testfall.
**Hinweis zum lokalen Stand (04.09.2026):** Die Klone `Plugin_SN_Verfahrensgebiet` (4 Commits: PR #43, PR #45)
und `Repository` (Release 26.8.4-unstable) liegen hinter `origin`. Aktualisieren mit `python scripts/hallo.py`.
## Zuletzt gemergt (unstable)
- 26.10.2026 Basis #76 (PR #117): fachliche Testdurchsicht sn_basis ohne Druckmodul und excel_importer;
schwache Tests geschärft, Lücken geschlossen, Befunde als Issues #110–#116. sn_basis 526/526 grün.
- 18.09.2026 Basis #63 (PR #64): Tests für die vier bis dahin testlosen Kernmodule der Datenpipeline
(`Datenabruf.py`, `Datenschreiber.py`, `LayerLoader.py`, `excel_importer.py`), 70 neue Testfälle, sn_basis
jetzt 166/166 grün. Nebenbei `_MockQgsProject` um `transformContext()`/`addMapLayer()` ergänzt.
- 18.09.2026 Verfahrensgebiet #53: Grenzpunkt-Stilanbringung, neuer Test.
- 02.09.2026 Verfahrensgebiet #45: FBSchl-Feldsuche tolerant gegenüber abweichenden Feldnamen; #43: Nur-laden-Option
bei ALKIS-Laden durch Stop-Abfrage ersetzt (Release 26.8.4-unstable).
- 02.09.2026 Verfahrensgebiet #42: Shape-Ladevorgang mit Mehrfachauswahl, ZIP-Entpacken, `FBSchl`-Prüfung.
- 31.08.2026 Basis #57: DataGrabber lädt ohne `sn_plan41` (Lazy-Import).
- 31.08.2026 Basis #55 / Verfahrensgebiet #40: Mehrfachauswahl ALKIS, Landkreis-Fallback, Beteiligungsprüfung portiert.
## Erledigt (Vorbereitungsphase)
- 04.09.2026 **Git-Vorgaben verbindlich festgeschrieben:** `docs/leitfaden/05_git_arbeitsweise.md` mit Kanal-Kette,
Fix-Einstieg nach Kanal, Rückführungspflicht, Branch-Namen, Gitea-Branch-Schutz. Technisch abgesichert über
`.claude/settings.json` (ADR 0007).
- 04.09.2026 **Ticketzugriff:** `scripts/gitea.py` (lesend, ohne Token) und Skill `sn-ticket`. Schreibende Aktionen
nur als Entwurf in `entwuerfe/`; abgesendet wird vom Menschen.
- 04.09.2026 **Sitzungsbeginn:** `scripts/hallo.py` und Slash-Befehl `/hallo` — Stand aller Klone holen,
Fast-Forward wo gefahrlos, nie mergen oder stashen.
- 04.09.2026 **Tests ausgebaut:** `docs/leitfaden/06_tests.md`, generierter `docs/tests/testkatalog.md`
(`scripts/testkatalog.py`), Vorlage und erste Testkonzept-Seite mit Mermaid (ADR 0009).
- 04.09.2026 **QGIS-Testplan** recherchiert und als Stufenplan festgehalten (`docs/konzept/07_qgis_tests_plan.md`).
- 04.09.2026 **Werkzeuge entschlackt** auf Claude Code (CLI und VS Code), `.vscode/` entfernt (ADR 0008).
Repository heißt künftig `Projektwissen` (ADR 0006); README als Einstieg neu aufgebaut.
- 02.09.2026 Gesamtüberblick und Vergleich Alternativansatz erstellt (`docs/analyse/00_*`).
- 02.09.2026 Workspace-Struktur, AGENTS.md, Skills, Modulkarte, Schnittstellen, Fallstricke, Leitfaden angelegt.