5 Commits
Author SHA1 Message Date
david-spacilandClaude Opus 5 3591ac4c53 ci: kontrola kvality kódu při každém PR
Workflow code_quality.yml pouští při každém PR a při pushi do main
kontroly, které se dosud dělaly ručně, ve čtyřech jobech:

- Lint a bezpečnost: check_sources.py, bandit, detect-secrets, flake8,
  ruff. Bandit a detect-secrets jsou tytéž kontroly, které blokují
  schválení na plugins.qgis.org.
- Kompatibilita s Qt6: pyqgis4-checker v dockeru. Skript končí kódem 0,
  i když něco najde, výsledek je jen v logu; job proto ověřuje, že log
  obsahuje pouze hlavičku.
- Smoke test: smoke_test.py v qgis/qgis:ltr (3.44, Qt5) i
  qgis/qgis:stable (4.x, Qt6). Tagy se posouvají schválně, aby bylo
  vidět, že plugin drží krok s aktuálním QGISem.
- Balíček pluginu: sestaví amcr_viewer.zip stejně jako release
  workflow, ověří, že v něm je metadata.txt, __init__.py i .flake8
  a nejsou v něm git soubory, a přiloží ho jako artefakt běhu.
  Recenzent ho nainstaluje přes Install from ZIP bez ručního balení.

detect-secrets se pouští s --all-files. Bez toho prohledá jen soubory
sledované gitem a o nesledovaném souboru mlčí, což vypadá jako čistý
výsledek.

Verze nástrojů jsou napevno. Bez pinu by se výsledek měnil s každým
vydáním ruffu, které rozšíří výchozí sadu pravidel.

CodeQL a GitGuardian běží zvlášť, nastavené na úrovni organizace,
a schválně se tu neduplikují.

AGENTS.md popisuje, jak totéž pustit lokálně, a tři místa, kde kontroly
tiše lžou (výstupní kód pyqgis4-checkeru, detect-secrets bez
--all-files, umístění config souborů pro scanner).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WhQyc1uQFcpkezLwM8if6T
2026-09-01 23:43:53 +02:00
david-spacil d398d2cd1b fix: kompatibilita s Qt6 / QGIS 4
Oficiální kontrola pyqgis4-checker (skript pyqt5_to_pyqt6.py z QGISu)
hlásila u pluginu 13 nekompatibilit a tři soubory vůbec nepřečetla.

Odstraněn UTF-8 BOM z amcr_codelists.py, amcr_dialog.py a amcr_tools.py.
Checker čte zdroják jako UTF-8 bez utf-8-sig a na BOM padá na
SyntaxError: invalid non-printable character U+FEFF, takže se ty soubory
nezkontrolovaly vůbec. Pythonu při běhu BOM nevadí, proto to nikdy
nevyskočilo. heslar.csv si BOM ponechává, tam je kvůli Excelu.

Enumy převedeny na plně kvalifikované tvary (13 míst):
Qgis.{Info,Warning,Critical} -> Qgis.MessageLevel.*,
QgsTask.CanCancel -> QgsTask.Flag.CanCancel,
QgsWkbTypes.*Geometry -> QgsWkbTypes.GeometryType.*Geometry.
Zkrácené tvary v QGIS 4.2.1 zatím fungují, ale kontrola je vytýká
a aliasy do budoucna mizí. Zbytek kódu už scoped tvary používal.

Do AGENTS.md doplněna sekce o kompatibilitě s Qt6 / QGIS 4 se závaznými
pravidly a příkazy na ověření.

Ověřeno spuštěním v QGIS 3.44.13 (Qt 5.15.18) i QGIS 4.2.1 (Qt 6.10.3):
importy, vytvoření tasku i všechny tři filtrační dialogy fungují shodně.
Log pyqgis4-checkeru je nově prázdný.
2026-09-01 23:05:02 +02:00
david-spacil 6300919c36 update workflow kvůli nové podmínce s immutable releases 2026-09-01 22:27:00 +02:00
Claude 9e8863b879 chore: sladění governance se vzorem aiscr-management
- ekosystémová poznámka (sibling hubu aiscr-management)
- konvence větví feat/fix/docs/chore + agents/<jméno>/<téma>
- pravidla pro AI agenty (git delivery)
- bezpečnost/soukromí (žádné secrets/PII)
- deterministické datum pro changelog
- PR šablona: pole Zapojení AI + položka konvence větví

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C8nJvecSSf6vB3NYZsMaVt
2026-06-28 10:26:06 +02:00
Claude 0eb8008e27 chore: PR šablona + AGENTS.md (a CLAUDE.md odkaz) pro standardizaci repozitáře
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C8nJvecSSf6vB3NYZsMaVt
2026-06-28 10:24:00 +02:00