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

13 KiB
Raw Blame History

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.