Status „Import“ für Modelle aus PICTURE-Exporten (#31)

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 <noreply@anthropic.com>
This commit is contained in:
2026-09-28 21:42:48 +02:00
co-authored by Claude Opus 5.5
parent 7eab9fb055
commit 650904eff3
4 changed files with 18 additions and 6 deletions
+5 -2
View File
@@ -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-<name>`). 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/<issue-nr>-<kurzname>`.
+2
View File
@@ -1,5 +1,7 @@
# <Name des Prozesses>
<!-- Status: Entwurf | abgenommen | Import (aus PICTURE-Export, siehe docs/leitfaden/08_prozessbibliothek.md) -->
| | |
|---|---|
| Status | Entwurf |
+3 -2
View File
@@ -12,7 +12,7 @@ workspace.local.toml. Jeder Prozess liegt dort in einem eigenen Ordner <name>/ 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),
* <name>.md lässt sich umwandeln, und <name>.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<wert>[^|]*?)\s*\|", re.MULTILINE)
+8 -2
View File
@@ -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):