"""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())