From 650904eff3ade9401b44b8028580ad1327b09cd7 Mon Sep 17 00:00:00 2001 From: daniel Date: Mon, 28 Sep 2026 21:42:48 +0200 Subject: [PATCH] =?UTF-8?q?Status=20=E2=80=9EImport=E2=80=9C=20f=C3=BCr=20?= =?UTF-8?q?Modelle=20aus=20PICTURE-Exporten=20(#31)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pruefe_prozesse.py akzeptiert im Steckbrief neben Entwurf und abgenommen den Status Import: maschinell aus einem PICTURE-Export übernommen, fachlich nicht geprüft. Leitfaden 08 und die Steckbrief-Vorlage nennen die drei Werte. Neuer Test für Import; der Test für unbekannte Werte prüft zusätzlich, dass Import unter den erlaubten Werten genannt wird. Änderung am Ablageformat der Prozessbibliothek. Co-Authored-By: Claude Opus 5.5 --- docs/leitfaden/08_prozessbibliothek.md | 7 +++++-- docs/vorlagen/prozess_readme.md | 2 ++ scripts/pruefe_prozesse.py | 5 +++-- tests/test_pruefe_prozesse.py | 10 ++++++++-- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/docs/leitfaden/08_prozessbibliothek.md b/docs/leitfaden/08_prozessbibliothek.md index 4d29c4e..5777416 100644 --- a/docs/leitfaden/08_prozessbibliothek.md +++ b/docs/leitfaden/08_prozessbibliothek.md @@ -31,8 +31,11 @@ Prozessbibliothek/ - **Die `.md` ist maßgeblich.** Die `.bpmn` wird nach jeder Änderung neu erzeugt und mitcommittet: `python scripts/pruefe_prozesse.py --erzeugen` (aus `Projektwissen`). Änderungen, die in PICTURE nachgetragen werden, fließen nicht zurück. Wer etwas dauerhaft ändern will, ändert die `.md`. -- **Status im Steckbrief:** `Entwurf` (liegt zur gemeinsamen Bearbeitung hier) oder `abgenommen` (fachlich - bestätigt). Den Wechsel auf `abgenommen` macht ein eigener Pull Request, dessen Review die Abnahme ist. +- **Status im Steckbrief:** `Entwurf` (liegt zur gemeinsamen Bearbeitung hier), `abgenommen` (fachlich + bestätigt) oder `Import` (maschinell aus einem PICTURE-Export übernommen, fachlich nicht geprüft; Ordnername + `import-`). Den Wechsel auf `abgenommen` macht ein eigener Pull Request, dessen Review die Abnahme ist. + Ein `Import`-Modell wird zum `Entwurf`, sobald jemand es fachlich überarbeitet – ebenfalls per Pull Request. + Wie zurückgewandelt wird und was dabei verloren geht: `docs/wissen/picture_import.md`. - **Keine personenbezogenen Daten.** Zuständigkeiten als Funktion, keine Namen, Aktenzeichen oder Verfahrensdaten. - **Issues zu einem Modell** werden in der Bibliothek angelegt, Issues zu Konverter, Skills und Doku in `Projektwissen`. Branches heißen in beiden Repositories `feature/-`. diff --git a/docs/vorlagen/prozess_readme.md b/docs/vorlagen/prozess_readme.md index 16713b6..4755eb6 100644 --- a/docs/vorlagen/prozess_readme.md +++ b/docs/vorlagen/prozess_readme.md @@ -1,5 +1,7 @@ # + + | | | |---|---| | Status | Entwurf | diff --git a/scripts/pruefe_prozesse.py b/scripts/pruefe_prozesse.py index d62fb10..1d818d9 100644 --- a/scripts/pruefe_prozesse.py +++ b/scripts/pruefe_prozesse.py @@ -12,7 +12,7 @@ workspace.local.toml. Jeder Prozess liegt dort in einem eigenen Ordner / m Geprüft wird: * Ordnername in Kleinbuchstaben, Ziffern und Bindestrichen, * genau diese drei Dateien, keine weiteren (Originalunterlagen gehören nach referenz/), - * README.md nennt einen gültigen Status (Entwurf | abgenommen), + * README.md nennt einen gültigen Status (Entwurf | abgenommen | Import), * .md lässt sich umwandeln, und .bpmn ist byte-gleich mit dem Ergebnis, * in der Wurzel der Bibliothek liegen außer den Prozessordnern nur README.md, AGENTS.md, CLAUDE.md, .gitattributes und .gitignore. @@ -46,7 +46,8 @@ sys.path.insert(0, str(SKILL)) import md_to_bpmn # noqa: E402 (liegt im Skill-Ordner, nicht als Paket installiert) ORDNERNAME = re.compile(r"^[a-z0-9]+(?:-[a-z0-9]+)*$") -STATUSWERTE = ("Entwurf", "abgenommen") +# Import: maschinell aus einem PICTURE-Export übernommen, fachlich nicht geprüft (#31) +STATUSWERTE = ("Entwurf", "abgenommen", "Import") # Dateien, die in der Wurzel der Bibliothek neben den Prozessordnern liegen dürfen REPO_DATEIEN = {"README.md", "AGENTS.md", "CLAUDE.md", ".gitattributes", ".gitignore"} STATUSZEILE = re.compile(r"^\|\s*Status\s*\|\s*(?P[^|]*?)\s*\|", re.MULTILINE) diff --git a/tests/test_pruefe_prozesse.py b/tests/test_pruefe_prozesse.py index 5a05c98..494d10e 100644 --- a/tests/test_pruefe_prozesse.py +++ b/tests/test_pruefe_prozesse.py @@ -89,10 +89,16 @@ def test_status_abgenommen_ist_gueltig(tmp_path): assert pp.pruefe_ordner(lege_prozess_an(tmp_path, status="abgenommen")) == [] +def test_status_import_ist_gueltig(tmp_path): + """Prüft, dass der Status 'Import' für Modelle aus PICTURE-Exporten akzeptiert wird (#31).""" + assert pp.pruefe_ordner(lege_prozess_an(tmp_path, status="Import")) == [] + + def test_unbekannter_status_wird_gemeldet(tmp_path): - """Prüft, dass ein Status außerhalb von Entwurf/abgenommen gemeldet wird.""" + """Prüft, dass ein Status außerhalb von Entwurf/abgenommen/Import gemeldet und die erlaubten Werte genannt + werden.""" befunde = pp.pruefe_ordner(lege_prozess_an(tmp_path, status="fertig")) - assert any("Status 'fertig' unbekannt" in b for b in befunde) + assert any("Status 'fertig' unbekannt" in b and "Import" in b for b in befunde) def test_fehlende_statuszeile_wird_gemeldet(tmp_path):