Kontext
Issue #248 hat das Repo achimdehnert/iil-demo-fixture gescaffold (PyPI-Skelett, apply_demo_fixture(env) als no-op + TODO). ADR-212 fordert das Package als Plattform-Fixture für Klausel-1-Repos mit Subdomain-Tenancy.
Dieses Folge-Issue trackt die erste echte Implementierung, damit das erste Klausel-1-Repo (risk-hub) das Package nutzen kann statt repo-lokal zu seeden.
Ziel
apply_demo_fixture(env) füllt die Identitäts-Fixture in die Consumer-DB:
Organization(slug="demo"|"staging-demo", name="Demo GmbH", …)
- 3 Standard-User mit Authentik-OIDC-
sub (Admin, Member, Guest)
- Standard-Adresse / Kontaktdaten
Idempotent, env-bewusst, ohne Sample-Daten (die bleiben repo-lokal).
API-Skizze
from iil_demo_fixture import apply_demo_fixture
# Aufruf aus repo-lokaler Daten-Migration:
def forwards(apps, schema_editor):
apply_demo_fixture(env=settings.DJANGO_SETTINGS_MODULE_ENV)
# → erstellt/updated Org + 3 User; idempotent über update_or_create
Env-Mapping:
| env |
Org-slug |
OIDC-sub-Prefix |
local |
demo |
local-demo- |
staging |
staging-demo |
staging-demo- |
prod |
demo |
prod-demo- |
OIDC-sub-Werte müssen mit Authentik-Provider-Konfiguration (Issue: separates Authentik-Provisioning) konsistent sein — bestehende User-Modell-Schemas der Consumer-Repos werden via Django-Modell-Resolver (ähnlich apps.get_model("auth", "User")) lokalisiert, kein hartes Import.
Akzeptanz-Kriterien
Folge-Issue (out-of-scope hier)
risk-hub: Klausel-1-Migration (verlinkt — separates Issue, kommt parallel)
Referenzen
Kontext
Issue #248 hat das Repo
achimdehnert/iil-demo-fixturegescaffold (PyPI-Skelett,apply_demo_fixture(env)als no-op + TODO). ADR-212 fordert das Package als Plattform-Fixture für Klausel-1-Repos mit Subdomain-Tenancy.Dieses Folge-Issue trackt die erste echte Implementierung, damit das erste Klausel-1-Repo (risk-hub) das Package nutzen kann statt repo-lokal zu seeden.
Ziel
apply_demo_fixture(env)füllt die Identitäts-Fixture in die Consumer-DB:Organization(slug="demo"|"staging-demo", name="Demo GmbH", …)sub(Admin, Member, Guest)Idempotent, env-bewusst, ohne Sample-Daten (die bleiben repo-lokal).
API-Skizze
Env-Mapping:
localdemolocal-demo-stagingstaging-demostaging-demo-proddemoprod-demo-OIDC-sub-Werte müssen mit Authentik-Provider-Konfiguration (Issue: separates Authentik-Provisioning) konsistent sein — bestehende User-Modell-Schemas der Consumer-Repos werden via Django-Modell-Resolver (ähnlich
apps.get_model("auth", "User")) lokalisiert, kein hartes Import.Akzeptanz-Kriterien
apply_demo_fixture(env)ist nicht mehr no-op; legt Org + 3 User + Adresse anupdate_or_create)test_should_create_org_on_first_call,test_should_be_idempotent,test_should_use_correct_slug_per_envapply_demo_fixture(env="staging")aus seiner Daten-Migration erfolgreich auf — Integration via separates Issue (siehe „Folge-Issue")0NNN_demo_identity_fixture.py(Package-Hook) vs.0NNN_demo_sample_data.py(repo-lokal)Folge-Issue (out-of-scope hier)
risk-hub: Klausel-1-Migration(verlinkt — separates Issue, kommt parallel)Referenzen
iil-platform-contextOrganization-Modell + Migrations