Files
AndreasTharangandClaude Sonnet 5 ab416fb34c Projektwissen: Git-Vorgaben, Ticketzugriff, Tests und Einstieg
Erster Stand des Repositories AG_QGIS/Projektwissen (bisher Arbeitstitel
"Workspace", ADR 0006). Der lokale Ordner heisst weiter AG_QGIS, weil darin
auch die Plugin-Klone liegen.

Git verbindlich (ADR 0007), aus dem bisherigen Wiki-Konzept entwickelt:
- docs/leitfaden/05_git_arbeitsweise.md mit Kanal-Kette, Branch-Namen und
  Gitea-Branch-Schutz.
- Der Einstiegspunkt eines Fixes richtet sich nach dem Kanal, in dem der
  Fehler sitzt; ein Fix an testing oder stable ist erst mit der
  Rueckfuehrung nach unten abgeschlossen. Das fehlte bisher.
- Der stabile Kanal heisst stable, nicht main: der Release-Workflow in
  Repository:hidden/workflows fuehrt git checkout "$CHANNEL" aus, der
  Branchname muss also dem Kanalnamen entsprechen. Er existiert in keinem
  Plugin-Repo und ist vom Maintainer anzulegen.
- Der Mensch drueckt ab: .claude/settings.json sperrt push, merge, tag.
- scripts/hallo.py und /hallo holen den Stand aller Klone, per
  Fast-Forward wo gefahrlos; nie mergen, stashen oder verwerfen.

Ticketzugriff:
- scripts/gitea.py liest Issues, Kommentare und PRs ueber die oeffentliche
  API, ohne Token, nur GET. Schreibendes nur als Entwurf in entwuerfe/.
- Skill sn-ticket.

Tests (ADR 0009):
- docs/leitfaden/06_tests.md: Testebenen, Testpflicht, und wie eine
  Fachperson beurteilt, ob Tests fachlich sinnvoll sind.
- scripts/testkatalog.py erzeugt docs/tests/testkatalog.md per ast-Parsing,
  ohne Import und ohne QGIS. Befund: nur 100 von 332 Tests haben einen
  Docstring, sn_basis keinen einzigen von 87.
- Vorlage und erste Testkonzept-Seite mit Mermaid. Dabei gefunden und gegen
  origin geprueft: _ermittle_gebietstyp_aus_fbschl hat keinen Test, obwohl
  PR #44/#45 genau diese Funktion tolerant gemacht hat.
- docs/konzept/07_qgis_tests_plan.md: Stufenplan fuer Tests gegen echtes
  QGIS. Dabei aufgefallen: QGIS 3.40 ist seit Januar 2026 End of Life,
  qgis_min steht aber noch darauf.

Werkzeuge (ADR 0008):
- 04_werkzeuge_einrichten.md nur noch Claude Code als CLI und in VS Code.
- .vscode/ entfernt, brauchbare Einstellungen als persoenliche Vorlage.

Ausserdem: README als Einstieg neu aufgebaut, Mermaid-Diagramm in
schnittstellen.md repariert (unmaskierte Klammern, rendert seither nicht).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 11:57:26 +02:00

66 lines
6.7 KiB
JSON

{
"sn_basis": {
"gesamt": 87,
"fehlschlaege": 0,
"fehler": 0,
"uebersprungen": 0,
"gruen": 87,
"rot": []
},
"sn_verfahrensgebiet": {
"gesamt": 201,
"fehlschlaege": 15,
"fehler": 21,
"uebersprungen": 8,
"gruen": 157,
"rot": [
"test_abweichung_abbrechen_gibt_shape_vg_zurueck (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestVerfahrensgebietShapeKomplett.test_abweichung_abbrechen_gibt_shape_vg_zurueck)",
"test_abweichung_detailpruefung_ruft_knickpunkt_pruefung_auf (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestVerfahrensgebietShapeKomplett.test_abweichung_detailpruefung_ruft_knickpunkt_pruefung_auf)",
"test_backwards_compatible_no_new_params (sn_verfahrensgebiet.tests.test_flurstueck_alkis.TestFlurstueckAlkis.test_backwards_compatible_no_new_params)",
"test_bbox_embedded_in_wfs_uri (sn_verfahrensgebiet.tests.test_flurstueck_alkis.TestFlurstueckAlkis.test_bbox_embedded_in_wfs_uri)",
"test_bror_als_erstes_argument_beim_flaechenvergleich (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestVerfahrensgebietShapeKomplett.test_bror_als_erstes_argument_beim_flaechenvergleich)",
"test_bror_geladen_und_zurueckgegeben_wenn_vkz_gesetzt (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestVerfahrensgebietShapeKomplett.test_bror_geladen_und_zurueckgegeben_wenn_vkz_gesetzt)",
"test_bror_wird_bei_abbruch_aus_projekt_entfernt (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestVerfahrensgebietShapeKomplett.test_bror_wird_bei_abbruch_aus_projekt_entfernt)",
"test_bror_wird_vor_shape_vg_ins_projekt_eingefuegt (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestVerfahrensgebietShapeKomplett.test_bror_wird_vor_shape_vg_ins_projekt_eingefuegt)",
"test_dialog_abgebrochen_gibt_none_zurueck (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestLadeVgAusZip.test_dialog_abgebrochen_gibt_none_zurueck)",
"test_erfolg_gibt_memory_layer_zurueck (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestLadeVgAusZip.test_erfolg_gibt_memory_layer_zurueck)",
"test_existing_layer_keep_no (sn_verfahrensgebiet.tests.test_flurstueck_alkis.TestFlurstueckAlkis.test_existing_layer_keep_no)",
"test_existing_layer_reload_yes (sn_verfahrensgebiet.tests.test_flurstueck_alkis.TestFlurstueckAlkis.test_existing_layer_reload_yes)",
"test_extent_derived_from_vg_layer (sn_verfahrensgebiet.tests.test_grenzpunkt_alkis.TestGrenzpunktAlkis.test_extent_derived_from_vg_layer)",
"test_fallback_attribute (sn_verfahrensgebiet.tests.test_gemarkung_alkis.TestExtractSchluesselUndName.test_fallback_attribute)",
"test_fallback_auf_temp_enriched_wenn_bror_ladeversagen (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestVerfahrensgebietShapeKomplett.test_fallback_auf_temp_enriched_wenn_bror_ladeversagen)",
"test_flaechen_uebereinstimmung_gibt_info_und_kein_dialog (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestVerfahrensgebietShapeKomplett.test_flaechen_uebereinstimmung_gibt_info_und_kein_dialog)",
"test_grenzpunkt_batch_empty (sn_verfahrensgebiet.tests.test_grenzpunkt_alkis.TestGrenzpunktAlkis.test_grenzpunkt_batch_empty)",
"test_handle_grenz_alkis_none_result_sets_no_haken (sn_verfahrensgebiet.tests.test_working_tab.TestWorkingTab.test_handle_grenz_alkis_none_result_sets_no_haken)",
"test_handle_grenz_alkis_success_sets_haken (sn_verfahrensgebiet.tests.test_working_tab.TestWorkingTab.test_handle_grenz_alkis_success_sets_haken)",
"test_handle_verf_alkis_success_path (sn_verfahrensgebiet.tests.test_working_tab.TestWorkingTab.test_handle_verf_alkis_success_path)",
"test_invalider_qgslayer_gibt_none_und_warning (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestLadeVgAusZip.test_invalider_qgslayer_gibt_none_und_warning)",
"test_kein_shp_in_zip_gibt_none_und_warning (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestLadeVgAusZip.test_kein_shp_in_zip_gibt_none_und_warning)",
"test_leere_geometrien_geben_none_und_warning (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestLadeVgAusZip.test_leere_geometrien_geben_none_und_warning)",
"test_no_gml_ids_returns_pta_only (sn_verfahrensgebiet.tests.test_grenzpunkt_alkis.TestGrenzpunktAlkis.test_no_gml_ids_returns_pta_only)",
"test_punktort_ta_none_gibt_shape_vg_zurueck_und_zeigt_fehler (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestVerfahrensgebietShapeKomplett.test_punktort_ta_none_gibt_shape_vg_zurueck_und_zeigt_fehler)",
"test_shape_vg_sofort_ins_projekt_nach_laden (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestVerfahrensgebietShapeKomplett.test_shape_vg_sofort_ins_projekt_nach_laden)",
"test_shape_vg_wird_bei_abbruch_aus_projekt_entfernt (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestVerfahrensgebietShapeKomplett.test_shape_vg_wird_bei_abbruch_aus_projekt_entfernt)",
"test_sql_filter_contains_all_schluessel (sn_verfahrensgebiet.tests.test_flurstueck_alkis.TestFlurstueckAlkis.test_sql_filter_contains_all_schluessel)",
"test_standard_attribute (sn_verfahrensgebiet.tests.test_gemarkung_alkis.TestExtractSchluesselUndName.test_standard_attribute)",
"test_success_returns_both_layers (sn_verfahrensgebiet.tests.test_grenzpunkt_alkis.TestGrenzpunktAlkis.test_success_returns_both_layers)",
"test_success_returns_layer_and_first_status (sn_verfahrensgebiet.tests.test_flurstueck_alkis.TestFlurstueckAlkis.test_success_returns_layer_and_first_status)",
"test_verfahrensnummer_nicht_gesetzt_ja_fuehrt_fort (sn_verfahrensgebiet.tests.test_working_tab.TestHandleVerfShape.test_verfahrensnummer_nicht_gesetzt_ja_fuehrt_fort)",
"test_verfahrensnummer_nicht_gesetzt_nein_bricht_ab (sn_verfahrensgebiet.tests.test_working_tab.TestHandleVerfShape.test_verfahrensnummer_nicht_gesetzt_nein_bricht_ab)",
"test_vorgabe_namen_appears_in_label (sn_verfahrensgebiet.tests.test_flurstueck_alkis.TestFlurstueckAlkis.test_vorgabe_namen_appears_in_label)",
"test_vorgabe_schluessel_prefills_default_text (sn_verfahrensgebiet.tests.test_flurstueck_alkis.TestFlurstueckAlkis.test_vorgabe_schluessel_prefills_default_text)",
"test_zip_fehler_gibt_none_und_warning (sn_verfahrensgebiet.tests.test_verfahrensgebiet_shape_komplett.TestLadeVgAusZip.test_zip_fehler_gibt_none_und_warning)"
]
},
"sn_plan41": {
"gesamt": 44,
"fehlschlaege": 0,
"fehler": 1,
"uebersprungen": 0,
"gruen": 43,
"rot": [
"test_set_services_initializes_logic_and_injects_data_grabber (sn_plan41.tests.test_tab_a_ui.TestTabAUI.test_set_services_initializes_logic_and_injects_data_grabber)"
]
}
}