From 682bb49b2ab941affcb2244ddc0152308fa4be7b Mon Sep 17 00:00:00 2001 From: patrick Date: Fri, 4 Sep 2026 22:04:48 +0200 Subject: [PATCH] =?UTF-8?q?Standort=20"GA=20San"=20+=206=20Rettungsrucks?= =?UTF-8?q?=C3=A4cke=20angelegt=20(Audit-Trail)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Live-Anlegelauf (bereits ausgeführt): Standort "GA San", 6x Objekt aus Vorlage "Rettungsrucksack Standard" (RK-00001 bis RK-00006), Codes auf Nutzer-Wunsch vorerst fortlaufend, spätere Umcodierung möglich. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV --- DEVLOG.md | 26 +++++++++ backend/scripts/ga_san_anlegen_2026-09-04.py | 60 ++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 backend/scripts/ga_san_anlegen_2026-09-04.py diff --git a/DEVLOG.md b/DEVLOG.md index 500ae5a..e248b8b 100644 --- a/DEVLOG.md +++ b/DEVLOG.md @@ -3382,3 +3382,29 @@ Keine Commits in dieser Session. - ergebnisse/material_bereinigung_log.md | 66 +++++++++++++++++++++++++++++++ --- +## 2026-09-04 21:24 – 21:27 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** asb-material + +### Commits +- f77d2d6 Materialstamm-Bereinigung: Beatmunsmaske geklärt, zu Größe S gemerged + +### Geänderte Dateien +- DEVLOG.md | 13 +++++++++++++ +- backend/scripts/material_bereinigung_2026-09-04.py | 3 +++ +- ergebnisse/material_bereinigung_log.md | 17 +++++++++++------ + +--- +## 2026-09-04 22:00 – 22:03 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** asb-material + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- DEVLOG.md | 13 +++++++++++++ +- backend/scripts/material_bereinigung_2026-09-04.py | 3 +++ +- ergebnisse/material_bereinigung_log.md | 17 +++++++++++------ + +--- diff --git a/backend/scripts/ga_san_anlegen_2026-09-04.py b/backend/scripts/ga_san_anlegen_2026-09-04.py new file mode 100644 index 0000000..4676995 --- /dev/null +++ b/backend/scripts/ga_san_anlegen_2026-09-04.py @@ -0,0 +1,60 @@ +"""Einmaliger Anlegelauf, 2026-09-04: Standort "GA San" + 6 Rettungsrucksäcke +(Vorlage "Rettungsrucksack Standard") angelegt. + +Deployment-Regel (Prompt 19): Audit-Trail, bereits interaktiv gegen die +Live-DB auf 192.168.1.238 ausgeführt - nicht erneut laufen lassen (Standort +"GA San" existiert bereits, ein zweiter Lauf würde einen Duplikat-Standort +anlegen, da Standort.name kein UNIQUE-Constraint hat). + +Aufruf, falls je auf einer anderen DB nachvollzogen werden muss (im +aktivierten venv): + + python -m scripts.ga_san_anlegen_2026-09-04 +""" + +from __future__ import annotations + +import asyncio + +from sqlalchemy import select + +from app.db.session import SessionLocal +from app.models.auth import KnotenTyp, Systemknoten +from app.models.stammdaten import Standort +from app.models.vorlage import Beladungsvorlage +from app.services.objekte import objekt_aus_vorlage + +VORLAGE_ID = 2 # "Rettungsrucksack Standard" (Stand 2026-09-04) +ANZAHL = 6 + + +async def main() -> None: + async with SessionLocal() as db: + standort = Standort(name="GA San") + db.add(standort) + await db.flush() + + hauptserver = ( + await db.execute(select(Systemknoten.id).where(Systemknoten.typ == KnotenTyp.haupt)) + ).scalar_one() + + vorlage = await db.get(Beladungsvorlage, VORLAGE_ID) + assert vorlage is not None and vorlage.name == "Rettungsrucksack Standard" + + for i in range(1, ANZAHL + 1): + objekt = await objekt_aus_vorlage( + db, + code=f"RK-{i:05d}", + name=f"Rettungsrucksack Standard {i}", + standort_id=standort.id, + vorlage=vorlage, + zustaendiger_server_id=hauptserver, + ) + print(f"angelegt: {objekt.code} ({objekt.name}), id={objekt.id}") + + await db.commit() + print(f"\nStandort 'GA San' id={standort.id}, {ANZAHL} Objekte angelegt.") + + +if __name__ == "__main__": + asyncio.run(main())