Files
Projektwissen/docs/status/STATUS.md
T
DanielandClaude Sonnet 5 a6dfbefbd4 Test-Audit sn_basis fortgesetzt: test_datenabruf, test_datenschreiber, test_dockmanager (#76)
48 weitere Testfälle in sn_basis fachlich geprüft und markiert (test_datenabruf.py: 24,
test_datenschreiber.py: 18, test_dockmanager.py: 6). Dabei zwei fragliche Codestellen
gefunden und als offene Punkte in STATUS.md festgehalten:
- Basis #77: Datenabruf._fetch_features() klassifiziert WMS-Zeilen immer als "ausserhalb",
  ohne dass je ein Layer geschrieben wird; der Kommentar "caller behandelt WMS separat"
  trifft nicht zu.
- Basis #78: Datenschreiber.schreibe_log() meldet Erfolg mit dem sachfremden Aktionscode
  "standarddatei_vorschlagen" (vermutlich Copy-Paste-Rest), aktuell folgenlos.

Testkatalog neu erzeugt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 14:49:28 +02:00

11 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: 18.09.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; aktuell Test-Audit (Basis #63 gemergt, weitere Lücken laut Testkatalog offen) 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. Test-Audit durchführen (Ticket #16). Infrastruktur ist fertig, PR steht aus: scripts/test_audit.py (status/markieren) und docs/status/testpruefungen.json machen im Prüfstand (docs/tests/testkatalog.html) je Testfall sichtbar, ob und wann er zuletzt fachlich geprüft wurde (unabhängig vom Baseline-Status). Aktuell gelten alle 346 Testfälle als „nie geprüft" — nächster Schritt ist der eigentliche Audit-Durchgang (Team geht die Pakete durch und markiert per test_audit.py markieren), danach getrennt: Testlücken/Fachtests aus den Testkonzept-Seiten ergänzen (Ticket-Text nennt das ausdrücklich als separaten Folgeschritt).
  16. 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.
  17. 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.
  18. 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 16). 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)

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