mirror of
https://github.com/ARUP-CAS/aiscr-qgis-amcr-viewer.git
synced 2026-10-11 13:27:33 +02:00
Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7c0401c11b | ||
|
|
b7090b7549 | ||
|
|
1a1ae606c6 | ||
|
|
25ba50b889 | ||
|
|
72f5985f89 | ||
|
|
5117247fb7 | ||
|
|
d14b2854f7 |
No files matched your search
@@ -0,0 +1,24 @@
|
|||||||
|
# Jednotné kódování a konce řádků napříč editory.
|
||||||
|
# Vzor: aiscr-management (quality_baseline/foundations/editorconfig.ini)
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
# Zdrojáky bez BOM – pyqgis4-checker na BOM spadne (viz AGENTS.md)
|
||||||
|
[*.py]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
|
# Heslář zapisuje plugin s BOM a CRLF (kvůli Excelu) – needitovat ručně
|
||||||
|
[amcr_viewer/codelists/heslar.csv]
|
||||||
|
charset = utf-8-bom
|
||||||
|
end_of_line = crlf
|
||||||
|
insert_final_newline = unset
|
||||||
|
trim_trailing_whitespace = unset
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# Textové soubory v repozitáři s LF; vzor: aiscr-management
|
||||||
|
# (quality_baseline/foundations/gitattributes.fragment)
|
||||||
|
* text=auto eol=lf
|
||||||
|
|
||||||
|
# Heslář generuje plugin (BOM + CRLF kvůli Excelu) – ukládat bajt po bajtu
|
||||||
|
amcr_viewer/codelists/heslar.csv -text
|
||||||
|
|
||||||
|
# Binární soubory
|
||||||
|
*.png binary
|
||||||
|
*.zip binary
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# Dependabot hlídá jen GitHub Actions: akce jsou ve workflow připnuté
|
||||||
|
# na SHA s komentářem verze a Dependabot umí obojí povýšit naráz.
|
||||||
|
# Plugin nemá pip/npm manifest a verze nástrojů (ruff, flake8 …) se
|
||||||
|
# v workflow drží napevno vědomě – viz AGENTS.md.
|
||||||
|
# Vzor: aiscr-management/.github/dependabot.yml
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
open-pull-requests-limit: 5
|
||||||
|
target-branch: main
|
||||||
|
commit-message:
|
||||||
|
prefix: "ci"
|
||||||
@@ -28,6 +28,7 @@ env:
|
|||||||
DETECT_SECRETS: detect-secrets==1.5.0
|
DETECT_SECRETS: detect-secrets==1.5.0
|
||||||
FLAKE8: flake8==7.3.0
|
FLAKE8: flake8==7.3.0
|
||||||
RUFF: ruff==0.16.5
|
RUFF: ruff==0.16.5
|
||||||
|
OPENSPEC: 1.14.0
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
@@ -39,7 +40,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
||||||
@@ -92,7 +93,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
# Pozor: skript končí kódem 0 i když něco najde, výsledek je jen
|
# Pozor: skript končí kódem 0 i když něco najde, výsledek je jen
|
||||||
# v logu. Prázdný log (samotná hlavička) znamená čisto.
|
# v logu. Prázdný log (samotná hlavička) znamená čisto.
|
||||||
@@ -110,6 +111,24 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------
|
||||||
|
# OpenSpec – artefakty změn v openspec/ musí projít validací
|
||||||
|
# --------------------------------------------------------------------
|
||||||
|
openspec:
|
||||||
|
name: OpenSpec
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
|
# Verze CLI napevno – formát validace se mezi verzemi mění.
|
||||||
|
# Node je v ubuntu-latest předinstalovaný.
|
||||||
|
- name: openspec validate
|
||||||
|
run: |
|
||||||
|
npx --yes @fission-ai/openspec@${{ env.OPENSPEC }} \
|
||||||
|
validate --all --strict --no-interactive
|
||||||
|
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
# 3. Načtení pluginu ve skutečném QGIS, v obou podporovaných verzích
|
# 3. Načtení pluginu ve skutečném QGIS, v obou podporovaných verzích
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
@@ -125,7 +144,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
- name: Smoke test
|
- name: Smoke test
|
||||||
run: |
|
run: |
|
||||||
@@ -142,7 +161,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
- name: Zip plugin
|
- name: Zip plugin
|
||||||
run: zip -r amcr_viewer.zip amcr_viewer -x "*.git*"
|
run: zip -r amcr_viewer.zip amcr_viewer -x "*.git*"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
# 1. Stáhne kód z tagu, který běh spustil
|
# 1. Stáhne kód z tagu, který běh spustil
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
# 2. Vytvoří ZIP (předpokládá, že kód je ve složce 'amcr_viewer')
|
# 2. Vytvoří ZIP (předpokládá, že kód je ve složce 'amcr_viewer')
|
||||||
- name: Zip Plugin
|
- name: Zip Plugin
|
||||||
@@ -34,7 +34,7 @@ jobs:
|
|||||||
# 3. Založí koncept releasu i s přílohou
|
# 3. Založí koncept releasu i s přílohou
|
||||||
# Tagy s pomlčkou (v2.0.0-alpha.1) se označí jako pre-release.
|
# Tagy s pomlčkou (v2.0.0-alpha.1) se označí jako pre-release.
|
||||||
- name: Create draft release with asset
|
- name: Create draft release with asset
|
||||||
uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3.0.0
|
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
||||||
with:
|
with:
|
||||||
files: amcr_viewer.zip
|
files: amcr_viewer.zip
|
||||||
draft: true
|
draft: true
|
||||||
|
|||||||
@@ -17,9 +17,36 @@ Zdroj dat: https://digiarchiv.aiscr.cz/ · Nápověda: https://amcr-help.aiscr.c
|
|||||||
Tento repozitář je jedním ze **sourozeneckých repozitářů** ekosystému AIS CR.
|
Tento repozitář je jedním ze **sourozeneckých repozitářů** ekosystému AIS CR.
|
||||||
Centrální governance a AI konfigurace spravuje hub **`aiscr-management`**; konvence
|
Centrální governance a AI konfigurace spravuje hub **`aiscr-management`**; konvence
|
||||||
v tomto souboru jsou s tímto vzorem sladěné a zjednodušené pro potřeby jednoho
|
v tomto souboru jsou s tímto vzorem sladěné a zjednodušené pro potřeby jednoho
|
||||||
QGIS pluginu. Těžkou mašinerii hubu (složka `.agents/`, OpenSpec, sync skripty,
|
QGIS pluginu. Z hubu přebírá **OpenSpec** ve stupni `change-tracked` (viz
|
||||||
multi-assistant generování) tento repozitář **záměrně nepřebírá**. Při širších
|
níže). Ostatní mašinerii hubu (složka `.agents/`, sync skripty, vlastní
|
||||||
otázkách governance má přednost vzor z `aiscr-management`.
|
schémata OpenSpec, multi-assistant generování) tento repozitář **záměrně
|
||||||
|
nepřebírá**. Při širších otázkách governance má přednost vzor
|
||||||
|
z `aiscr-management`.
|
||||||
|
|
||||||
|
## OpenSpec
|
||||||
|
|
||||||
|
Repozitář používá OpenSpec ve stupni **`change-tracked`**: plánovací
|
||||||
|
artefakty změn (`proposal.md`, delta spec, `design.md`, `tasks.md`) žijí
|
||||||
|
v `openspec/changes/<slug>/`, trvalé specifikace v `openspec/specs/` se
|
||||||
|
**neudržují**. Stupeň a kontext pro agenty jsou v `openspec/config.yaml`;
|
||||||
|
změna stupně se dělá vědomě společně s hubem, ne v rámci rozpracované práce.
|
||||||
|
|
||||||
|
- **Kdy založit změnu:** práce, která mění chování (co uživatel vidí,
|
||||||
|
atributy vrstev, kontrakt s API digiarchivu, uložená nastavení), zasahuje
|
||||||
|
víc repozitářů nebo mění pravidla / AI konfiguraci / CI.
|
||||||
|
- **Kdy ne:** překlepy a formátování, bump závislostí či pinů nástrojů bez
|
||||||
|
změny chování, přegenerování odvozených souborů.
|
||||||
|
- **Postup:** `openspec new change <slug>` → artefakty → `openspec validate
|
||||||
|
<slug> --strict` → implementace (až na výslovný pokyn) → po merge
|
||||||
|
`openspec archive <slug> --skip-specs` (archiv
|
||||||
|
`openspec/changes/archive/RRRR-MM-DD-<slug>/`).
|
||||||
|
- Artefakty změny jdou **ve stejném PR** jako implementace; v popisu PR
|
||||||
|
odkaž na adresář změny.
|
||||||
|
- Používá se vestavěné schéma `spec-driven`; vlastní schémata hubu se sem
|
||||||
|
nepřenášejí. CLI: `npx @fission-ai/openspec@1.14.0` (nebo lokálně
|
||||||
|
nainstalované `openspec`); bez CLI lze artefakty psát i ručně.
|
||||||
|
- Asistentské povrchy (`.claude/`, `.github/prompts/` …) doručuje sync
|
||||||
|
z hubu; v tomto repozitáři se ručně nezakládají ani necommitují.
|
||||||
|
|
||||||
## Struktura repozitáře
|
## Struktura repozitáře
|
||||||
|
|
||||||
@@ -33,7 +60,8 @@ amcr_viewer/ # vlastní kód pluginu (toto se balí do releasu)
|
|||||||
metadata.txt # metadata pluginu + verze + changelog
|
metadata.txt # metadata pluginu + verze + changelog
|
||||||
i18n/ # překlady (.ts)
|
i18n/ # překlady (.ts)
|
||||||
*.png # ikony
|
*.png # ikony
|
||||||
.github/workflows/ # CI – release pluginu
|
.github/workflows/ # CI – kontroly kvality a release pluginu
|
||||||
|
openspec/ # OpenSpec – konfigurace a plánovací artefakty změn
|
||||||
README.md # uživatelská dokumentace (anglicky)
|
README.md # uživatelská dokumentace (anglicky)
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -163,6 +191,7 @@ flatpak run --command=sh org.qgis.qgis -c \
|
|||||||
- PR musí mířit do správné `version/v2.x.y` větve.
|
- PR musí mířit do správné `version/v2.x.y` větve.
|
||||||
- Před požádáním o review projdi kontrolní seznam v šabloně (zejména bump verze
|
- Před požádáním o review projdi kontrolní seznam v šabloně (zejména bump verze
|
||||||
v `metadata.txt`, pokud měníš chování).
|
v `metadata.txt`, pokud měníš chování).
|
||||||
|
- Mění-li PR chování, obsahuje i odpovídající změnu v `openspec/changes/`.
|
||||||
- V popisu PR uveď **podíl AI** (např. „text navržen AI, ručně zkontrolováno")
|
- V popisu PR uveď **podíl AI** (např. „text navržen AI, ručně zkontrolováno")
|
||||||
a odkaz na související issue, pokud existuje.
|
a odkaz na související issue, pokud existuje.
|
||||||
|
|
||||||
|
|||||||
Whitespace-only changes.
@@ -0,0 +1,65 @@
|
|||||||
|
schema: spec-driven
|
||||||
|
|
||||||
|
# Seeded from aiscr-management
|
||||||
|
# .agents/canonical_configs/templates/openspec/config_seed.yaml;
|
||||||
|
# from now on the content is owned by this repository.
|
||||||
|
|
||||||
|
context: |
|
||||||
|
Repository: aiscr-qgis-amcr-viewer — QGIS plugin (AMČR Viewer) for
|
||||||
|
downloading and visualising data from the AMČR Digital Archive
|
||||||
|
(digiarchiv.aiscr.cz).
|
||||||
|
|
||||||
|
OpenSpec posture: change-tracked.
|
||||||
|
This is the local reading of a posture declared and owned by the
|
||||||
|
management hub (aiscr-management, .agents/sync/repos.toml):
|
||||||
|
- change-tracked — change-scoped planning artifacts live under
|
||||||
|
`openspec/changes/`; no durable capability specs are maintained here.
|
||||||
|
Do not edit this line to unblock work in progress. Changing posture is
|
||||||
|
a decision taken deliberately with the hub and then applied here.
|
||||||
|
|
||||||
|
When OpenSpec fires: behaviour-changing work (user-visible behaviour,
|
||||||
|
layer attributes, the digiarchiv API contract the plugin relies on,
|
||||||
|
stored settings), cross-repo work, and governance-touching work. Not
|
||||||
|
typo and formatting fixes, dependency or tool-pin bumps that change no
|
||||||
|
behaviour, or refreshing a generated surface from its source.
|
||||||
|
|
||||||
|
Repository conventions: `AGENTS.md` is the single source of truth
|
||||||
|
(Qt5/Qt6 rules, versioning, branches, checks). Plugin code lives in
|
||||||
|
`amcr_viewer/` (entry point `amcr_viewer.py`, API and layers in
|
||||||
|
`amcr_tools.py`, dialogs in `amcr_dialog.py`, codelists in
|
||||||
|
`amcr_codelists.py`). User documentation is `README.md` (English);
|
||||||
|
planning artifacts, commits and PRs are in Czech or English as the
|
||||||
|
author prefers, code and identifiers in English.
|
||||||
|
|
||||||
|
rules:
|
||||||
|
proposal:
|
||||||
|
- State what changes for a user of the plugin, not only in the code
|
||||||
|
- Name the affected modules under amcr_viewer/ explicitly
|
||||||
|
- Say when the change depends on or affects the digiarchiv API or
|
||||||
|
another AIS CR repository, and where
|
||||||
|
specs:
|
||||||
|
- Use RFC 2119 keywords (SHALL/MUST/SHOULD/MAY)
|
||||||
|
- Use Given/When/Then scenarios for testable contracts
|
||||||
|
- Describe behaviour the plugin guarantees, not how the code does it
|
||||||
|
design:
|
||||||
|
- Record the alternatives considered and why the chosen one won
|
||||||
|
- Respect the QGIS 3.44 minimum and Qt5/Qt6 rules from AGENTS.md
|
||||||
|
- Name the verification that will show the change worked
|
||||||
|
tasks:
|
||||||
|
- Order tasks so each one is independently verifiable
|
||||||
|
- Name the command or check that proves each group is done
|
||||||
|
- Include the version bump (metadata.txt + CITATION.cff) when
|
||||||
|
behaviour changes
|
||||||
|
- Include a final verification task that runs the checks from
|
||||||
|
AGENTS.md (check_sources, bandit, detect-secrets, flake8, ruff,
|
||||||
|
pyqgis4-checker, smoke test in qgis/qgis:ltr and :stable)
|
||||||
|
|
||||||
|
operations:
|
||||||
|
apply:
|
||||||
|
guidance:
|
||||||
|
- Completed artifacts are not approval to implement; wait for an
|
||||||
|
explicit request to apply the change
|
||||||
|
archive:
|
||||||
|
guidance:
|
||||||
|
- Posture is change-tracked, so archive with --skip-specs (no
|
||||||
|
openspec/specs/ tree is maintained)
|
||||||
Reference in new issue
Block a user