Files
david-spacil 6e95973296 fix: váha prvku komponent počítaná z komponent prošlých filtrem (#55) (#83)
* fix: váha prvku komponent počítaná z komponent prošlých filtrem (#55)

Váha prvku_vaha = 1/n se dosud počítala ze všech komponent dokumentační
jednotky ještě před filtrem na období a areál, takže při aktivním filtru
váhy prvků jedné DJ nedávaly v součtu 1 (DJ se 4 komponentami, filtru
vyhoví 1 → váha 0,25 místo 1).

- nová funkce _component_entries: nejdřív vyfiltruje komponenty, pak
  přidělí váhu 1/n z těch, které prošly; DJ bez komponent má váhu 1
- smoke test vaha_komponent (4×0,25; 1 ze 4 → 1; 2 ze 3 → 2×0,5; bez
  komponent → 1)
- README: pole prvek_vaha v tabulce atributů komponent
- changelog v2.2.0 doplněn (bez povýšení verze)
- OpenSpec změna openspec/changes/fix-component-feature-weight

Ověřeno: živá data (Praha, novověk) – 0 z 1204 DJ se součtem vah ≠ 1,
původní kód 921; check_sources, bandit, detect-secrets, flake8, ruff,
pyqgis4-checker, smoke test v qgis/qgis:ltr i :stable.

Implementace připravena AI (Claude, subagent), ověřena a zkontrolována.

* openspec: archivovat fix-component-feature-weight (#55)

Ruční test v QGIS ověřen správcem: akce i lokality s Načíst komponenty,
bez filtru i s filtrem období – váhy prvků jedné DJ dávají součet 1 a
počítají se jen z vyfiltrovaných komponent. Úkol 3.2 odškrtnut, změna
archivována přes openspec archive --skip-specs.

Připraveno s pomocí AI (Claude).
2026-10-02 17:17:28 +02:00

1.5 KiB

Spec Delta

Purpose

Describes how components of fieldwork events and sites become map features and how their weight lets spatial analyses count a shared geometry once.

ADDED Requirements

Requirement: Weight of component features sums to one per DJ

When components are loaded as features, each feature SHALL carry the weight prvek_vaha = 1/n, where n is the number of features created from the same documentation unit in this download. Components excluded by the period or area filter SHALL NOT count towards n.

Scenario: No component filter

  • WHEN a documentation unit has 4 components and no period or area filter is set
  • THEN 4 features are created, each with weight 0.25

Scenario: Filter keeps some components

  • WHEN a documentation unit has 4 components and the period filter matches 1 of them
  • THEN 1 feature is created with weight 1

Scenario: Filter keeps two of three components

  • WHEN a documentation unit has 3 components and the filter matches 2 of them
  • THEN 2 features are created, each with weight 0.5, and their weights sum to 1

Requirement: Documentation unit without components has weight one

When components are loaded and a documentation unit has no component, the single feature created for it SHALL have weight 1 and empty component fields.

Scenario: DJ without components, no filter

  • WHEN a documentation unit with a PIAN has no components and no component filter is set
  • THEN one feature is created with empty component fields and weight 1