2026-09-04 11:57:26 +02:00
# Status des Projekts
Kurz und aktuell. Wird bei jedem Merge und jeder Übergabe gepflegt (Skill `sn-uebergabe` ). Älteres wandert nach unten
2026-10-26 21:00:37 +01:00
in „Erledigt" oder wird gelöscht. **Stand: 26.10.2026.**
2026-09-04 11:57:26 +02:00
## 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 |
|---|---|---|
2026-10-26 21:00:37 +01:00
| 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 |
2026-09-04 11:57:26 +02:00
| 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` :
2026-09-18 09:50:45 +02:00
sn_basis 166/166 grün, sn_plan41 43/44 (1 Fehler in `test_tab_a_ui` ), sn_verfahrensgebiet 157/201
2026-09-04 11:57:26 +02:00
(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.
2026-09-18 09:50:45 +02:00
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.
2026-09-04 11:57:26 +02:00
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
2026-09-04 12:01:01 +02:00
Arbeitsplatzes (OSGeo-Installationspfad und ein persönliches Benutzerprofil unter `C:/Users/...` ). Im Projektwissen ist er am 04.09.2026 entfernt worden; die
2026-09-04 11:57:26 +02:00
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.
2026-09-04 14:49:29 +02:00
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` .
2026-10-02 12:50:13 +02:00
15. **Basemap-Legende im Druck (Basis #88).** In `unstable` gemergt: #88 (PR #89 ), Punktlinien-Korrektur #90
2026-10-02 13:07:03 +02:00
(PR #91 ), Rand für weiße Flächen #92 . Offen: **fachliche Abnahme des Legendenkatalogs** `sn_basis/data/basemap_legende.json`
2026-10-02 12:50:13 +02:00
(Bezeichnungen, Gruppen, Zusammenfassungen; Konzept `docs/konzept/10_basemap_legende.md` Abschnitt 10,
2026-10-02 13:07:03 +02:00
ADR 0010; bisher unauffällig). Unter QGIS 4 geprüft (Plugin funktioniert, Rückmeldung 02.10.2026).
2026-10-02 13:20:16 +02:00
16. **Kartenrand-Überlappung bei kleinen Verfahren (Basis #93).** Gemergt (PR #95 ). Mehrspaltige Legenden schmaler
2026-10-02 13:26:35 +02:00
(#96: Textumbruch 60 mm, ungleiche Spaltenbreiten, zweizeiliger Basemap-Titel, Mindestbreite 180 mm wie das
Kartenschild) auf
2026-10-05 21:53:50 +02:00
`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 ).
2026-10-05 21:42:58 +02:00
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
2026-10-06 08:19:18 +02:00
(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.
2026-10-05 22:15:35 +02:00
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.
2026-10-26 21:00:37 +01:00
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
2026-09-17 14:27:23 +02:00
`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.
2026-10-26 21:00:37 +01:00
22. **WMS-Zeilen im Datenabruf ungeklärt (Basis #77).** `Datenabruf._fetch_features()` liefert für
2026-09-21 14:49:28 +02:00
`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.
2026-10-26 21:00:37 +01:00
23. **Falscher Aktionscode in `Datenschreiber.schreibe_log()` (Basis #78).** Der Erfolg wird mit
2026-09-21 14:49:28 +02:00
`aktion="standarddatei_vorschlagen"` gemeldet — demselben Code, den `Dateipruefer` /`Pruefmanager` für
2026-10-26 21:00:37 +01:00
die Standarddatei-Rückfrage nutzen (Punkt 21). Aktuell folgenlos, weil `Pruefmanager.verarbeite()` bei
2026-09-21 14:49:28 +02:00
`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.
2026-09-04 11:57:26 +02:00
**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)
2026-10-26 21:00:37 +01:00
- 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.
2026-09-18 10:10:54 +02:00
- 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.
2026-09-04 11:57:26 +02:00
- 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.