|
14 | 14 | | Integracja IMGWTools | ✅ Gotowy | v2.1.0 (opady projektowe) | |
15 | 15 | | CN calculation | ✅ Gotowy | cn_tables + cn_calculator + determine_cn() | |
16 | 16 | | Frontend | 🔶 Faza 4 gotowa | CP4 — tryb wyboru obiektow, flow acc coloring, histogram, debounce, zoom fix | |
17 | | -| Testy scripts/ | ⏳ W trakcie | 550 testow lacznie (po usunieciu 43 testow martwego kodu flow_network/flow_graph) | |
| 17 | +| Testy scripts/ | ⏳ W trakcie | 558 testow lacznie (po usunieciu 43 testow martwego kodu flow_network/flow_graph) | |
18 | 18 | | Dokumentacja | ✅ Gotowy | Audyt 16 plikow (2026-02-22), standaryzacja wg shared/standards (2026-02-07) | |
19 | 19 |
|
20 | 20 | ## Checkpointy |
|
44 | 44 |
|
45 | 45 | ## Ostatnia sesja |
46 | 46 |
|
47 | | -**Data:** 2026-02-22 (sesja 41) |
| 47 | +**Data:** 2026-02-22 (sesja 42) |
48 | 48 |
|
49 | 49 | ### Co zrobiono |
50 | 50 |
|
| 51 | +- **Naprawa 5 bugow UX (E1, E4, E12, E13, F2) — 3 rownolegle zespoly + 1 sekwencyjny:** |
| 52 | + - **E1 — Dziury na granicach zlewni:** `merge_catchment_boundaries()` w `watershed_service.py` — usunieto `ST_SnapToGrid(geom, 0.01)` (przesuwalo wierzcholki tworzac mikro-luki), zastapione buffer-debuffer (0.1m/-0.1m) ktory zamyka luki zachowujac rozmiar. `MIN_HOLE_AREA_M2`: 1000→100 m² (agresywniejsze usuwanie artefaktow merge). |
| 53 | + - **E4 — Outlet poza granica zlewni:** nowa funkcja `ensure_outlet_within_boundary()` w `watershed_service.py` — snap outleta do najblizszego punktu na granicy gdy wypada poza (tolerancja 1m). Zastosowanie w `select_stream.py` i `watershed.py`. |
| 54 | + - **E12 — Legenda HSG:** `createHsgLegend()`/`removeHsgLegend()` w `map.js` — 4 pozycje (A/B/C/D) z kolorami HSG_FILL, auto show/hide. Callbacki `onShow`/`onHide` w `addBdotOverlayEntry()` w `layers.js`. |
| 55 | + - **E13 — Fill brakujacych pikseli HSG:** `distance_transform_edt` nearest-neighbor fill w `step_soil_hsg()` w `bootstrap.py` — wypelnia luki w rasterze HSG na terenach zurbanizowanych przed polygonizacja. |
| 56 | + - **F2 — Snap-to-stream hybrydowy:** nowa funkcja `find_nearest_stream_segment_hybrid()` w `watershed_service.py` — priorytet: `ST_Contains` na `stream_catchments` (zlewnia pod kursorem), fallback: globalny `ST_Distance` snap. Zastosowanie w `select_stream.py`. |
| 57 | + - **Testy:** 8 nowych testow (4 outlet boundary, 2 hybrid snap, 1 HSG fill, 1 SQL inspect), 558 passed total, ruff clean |
| 58 | + - **4 commity** na feature branch, merge do develop |
| 59 | + |
| 60 | +### Poprzednia sesja (2026-02-22, sesja 41) |
| 61 | + |
51 | 62 | - **CR3 — Cursor leak w `CatchmentGraph.load()` (catchment_graph.py):** |
52 | 63 | - Named cursor `catchment_graph_load` nie byl zamykany gdy wyjatek wystapil w petli fetchmany — trzymal otwarta transakcje PostgreSQL |
53 | 64 | - Opakowanie w `try/finally` z `cursor.close()` w `finally` |
|
550 | 561 |
|
551 | 562 | ### Bledy do naprawy (zgloszenie 2026-02-14, sesja 19) |
552 | 563 |
|
553 | | -**Status: ⏳ D1-D4 naprawione (sesja 20), G1-G4 naprawione (sesja 21), E2 naprawione (sesja 18 jako A1), E3 naprawione (sesja 22), F1 naprawione (sesja 24, ADR-024), E5+E6+E9+E10+E11 naprawione (sesja 35), F3 naprawione (sesja 35), E7+E8 naprawione (sesja 38). Pozostaje: E1, E4, E12, E13, F2, H** |
| 564 | +**Status: ⏳ D1-D4 naprawione (sesja 20), G1-G4 naprawione (sesja 21), E2 naprawione (sesja 18 jako A1), E3 naprawione (sesja 22), F1 naprawione (sesja 24, ADR-024), E5+E6+E9+E10+E11 naprawione (sesja 35), F3 naprawione (sesja 35), E7+E8 naprawione (sesja 38), E1+E4+E12+E13+F2 naprawione (sesja 42). Pozostaje: H** |
554 | 565 |
|
555 | 566 | #### D. Frontend — profil terenu — ✅ NAPRAWIONE (sesja 20) |
556 | 567 |
|
|
561 | 572 |
|
562 | 573 | #### E. Frontend — zlewnia i mapa |
563 | 574 |
|
564 | | -**E1. "Dziury" na granicach zlewni** (priorytet: wysoki) |
565 | | -- Po wyborze zlewni na granicach pojawiaja sie widoczne "dziury" |
566 | | -- Prawdopodobnie zaglbienia terenowe lub bledy laczenia obiektow wektorowych (ST_Union artifacts) |
567 | | -- **Lokalizacja:** `watershed_service.py` (merge_catchment_boundaries), `watershed.py` (build_boundary) |
| 575 | +**E1. ✅ "Dziury" na granicach zlewni** → buffer-debuffer (0.1m/-0.1m) zamiast ST_SnapToGrid w merge_catchment_boundaries(), MIN_HOLE_AREA_M2: 1000→100 — sesja 42 |
568 | 576 |
|
569 | 577 | **E2. ✅ Brak mozliwosci odznaczenia zlewni** → naprawione w sesji 18 jako A1 (closeResults czysci wszystkie warstwy) |
570 | 578 |
|
571 | 579 | **E3. ✅ Panel "Parametry zlewni" zaslania przyciski zoom** → panel dokowany z prawej (slide in/out), zoom przesuwa sie automatycznie (sesja 22) |
572 | 580 |
|
573 | | -**E4. Punkt ujsciowy poza granica zlewni** (priorytet: sredni) |
574 | | -- Dotyczy obu trybow: "Wybierz zlewnię" i "Wygeneruj zlewnię" |
575 | | -- Punkt ujsciowy (outlet) bywa przesuniety o kilkaset metrow poza granice wyznaczonej zlewni |
576 | | -- Pojawia sie przy ujsciu doplywu do cieku wyzszego rzedu — outlet "przeskakuje" do nastepnego wezla w dol cieku |
577 | | -- Prawdopodobna przyczyna: `traverse_upstream` zwraca segment_idx doplywu, ale outlet pobierany jest z downstream node cieku glownego |
578 | | -- **Lokalizacja:** `watershed_service.py` (logika wyznaczania outlet), `catchment_graph.py` (traverse_upstream) |
| 581 | +**E4. ✅ Punkt ujsciowy poza granica zlewni** → ensure_outlet_within_boundary() snap do granicy (tolerancja 1m), zastosowanie w select_stream.py i watershed.py — sesja 42 |
579 | 582 |
|
580 | 583 | **E5. ✅ Profil terenu nie generuje wykresu** → Chart.js resize w ukrytych kontenerach (d-none PRZED renderowaniem, resizeChart() z 50ms timeout, canvas w .chart-container) — sesja 35 |
581 | 584 |
|
|
591 | 594 |
|
592 | 595 | **E9. ✅ Usunac wpis "Zlewnia" z panelu Warstwy** → ~101 linii usunięte z layers.js + 3 wywołania z app.js — sesja 35 |
593 | 596 |
|
594 | | -**E12. Brak legendy dla warstwy HSG** (priorytet: sredni) |
595 | | -- Po wlaczeniu warstwy HSG na mapie brak legendy objasniajacej kolory grup glebowych (A/B/C/D). |
596 | | -- Legenda powinna byc analogiczna do istniejacych legend ciekow i zlewni — auto show/hide przy wlaczeniu/wylaczeniu warstwy. |
597 | | -- **Lokalizacja:** `frontend/js/layers.js` (legenda warstw), `frontend/js/map.js` (rendering HSG) |
| 597 | +**E12. ✅ Brak legendy dla warstwy HSG** → createHsgLegend()/removeHsgLegend() w map.js, callbacki onShow/onHide w addBdotOverlayEntry() — sesja 42 |
598 | 598 |
|
599 | | -**E13. Nieciaglosc danych HSG na terenach zurbanizowanych** (priorytet: sredni) |
600 | | -- Dane HSG (SoilGrids) wykazuja nieciaglosci (brak danych / artefakty) na terenach zurbanizowanych — zabudowa i uszczelnione powierzchnie nie maja przypisanej grupy glebowej. |
601 | | -- Powoduje luki w wizualizacji warstwy HSG i potencjalne niedokladnosci w obliczeniach CN dla zlewni z duza powierzchnia zurbanizowana. |
602 | | -- Mozliwe rozwiazanie: interpolacja brakujacych wartosci z sasiednich komorek lub przypisanie domyslnej grupy (np. D — najslabsza infiltracja) dla terenow zabudowanych na podstawie pokrycia terenu (BDOT10k). |
603 | | -- **Lokalizacja:** `core/cn_calculator.py` (pobieranie HSG), `core/land_cover.py` (pokrycie terenu), `scripts/bootstrap.py` (import danych glebowych) |
| 599 | +**E13. ✅ Nieciaglosc danych HSG na terenach zurbanizowanych** → nearest-neighbor fill (distance_transform_edt) w step_soil_hsg() przed polygonizacja — sesja 42 |
604 | 600 |
|
605 | 601 | #### F. Logika zlewni czastkowych |
606 | 602 |
|
607 | 603 | **F1. ✅ Selekcja cieku zaznacza cala zlewnię zamiast czesci miedzy doplywami** → ADR-024: segmentacja konfluencyjna + fine-threshold BFS (sesja 24). Wymaga re-run pipeline. |
608 | 604 |
|
609 | 605 | **F3. ✅ Automatyczny fallback na prog 1000 m² przy selekcji cieku z progu 100 m²** → eskalacja progu w select_stream.py gdy threshold < DEFAULT_THRESHOLD_M2, nowe pole `info_message` w SelectStreamResponse, banner w app.js — sesja 35 |
610 | 606 |
|
611 | | -**F2. Snap-to-stream moze wybrac zlewnię sasiednia zamiast kliknietej** (priorytet: sredni) |
612 | | -- Po naprawie ADR-027 selekcja opiera sie na snap-to-stream (`ST_Distance` na `stream_network`) — system znajduje najblizszy segment cieku i buduje zlewnię w gore od niego. |
613 | | -- Problem: gdy uzytkownik kliknie wewnatrz jednej zlewni, ale najblizszy ciek nalezy do sasiedniej zlewni (np. blisko dzialu wodnego, przy konfluencji lub w szerokich zlewniach bez ciekow), system zaznaczy niewlasciwa zlewnię. |
614 | | -- Wczesniejszy system oparty na `ST_Contains` (identyfikacja zlewni czastkowej pod kursorem) dzialal poprawnie w tym scenariuszu, ale mial inne bledy (klikniecie blisko granicy zlewni moglo trafic w sasiada — dlatego wycofany na rzecz snap-to-stream w ADR-027). |
615 | | -- Mozliwe rozwiazanie: podejscie hybrydowe — najpierw `ST_Contains` na `stream_catchments` (ktora zlewnia pod kursorem?), a nastepnie snap-to-stream ograniczony do ciekow w obrebie tej zlewni. Fallback na obecny snap-to-stream gdy `ST_Contains` nie znajdzie wyniku. |
616 | | -- **Lokalizacja:** `api/endpoints/select_stream.py`, `core/watershed_service.py` (`find_nearest_stream_segment`) |
| 607 | +**F2. ✅ Snap-to-stream moze wybrac zlewnię sasiednia zamiast kliknietej** → find_nearest_stream_segment_hybrid(): ST_Contains na stream_catchments (priorytet) + fallback do globalnego ST_Distance snap — sesja 42 |
617 | 608 |
|
618 | 609 | #### G. Frontend — panel warstw i dane — ✅ NAPRAWIONE (sesja 21) |
619 | 610 |
|
|
799 | 790 | ### Nastepne kroki |
800 | 791 | 1. ~~**Naprawa krytycznych bledow z code review:** CR1, CR2, CR3~~ ✅ (wszystkie 3 naprawione) |
801 | 792 | 2. Naprawa waznych bledow z code review: CR4-CR9 (BFS deque, land cover TODO, enkapsulacja _segment_idx, thread safety, profile info disclosure) |
802 | | -3. Naprawa pozostalych bugow UX: E1 (dziury na granicach), E4 (outlet poza granica), E12 (legenda HSG), E13 (nieciaglosc HSG), F2 (snap-to-stream sasiednia zlewnia) |
| 793 | +3. ~~Naprawa pozostalych bugow UX: E1, E4, E12, E13, F2~~ ✅ (wszystkie 5 naprawione, sesja 42) |
803 | 794 | 4. ~~Aktualizacja CLAUDE.md (CR11): usunac flow_graph.py, dodac soil_hsg.py i bootstrap.py~~ ✅ (sesja 39) |
804 | 795 | 5. Weryfikacja podkladow GUGiK WMTS (czy URL-e dzialaja z `EPSG:3857:{z}`) |
805 | 796 | 6. Usuniecie hardcoded secrets z config.py i migrations/env.py |
|
0 commit comments