feat(identity): IDENT-003 konfigurierbare Nummernschemata je Objekttyp
Neue Stammdaten-Tabelle nummernschema (Migration 0032): Präfix + Stellenzahl einmal je Objekttyp festlegen statt bei jeder Objekt-Anlage manuell einzutippen (Fehlerquelle - Tippfehler, uneinheitliche Schreibweise, falsches Präfix für den Typ). GET /objekte/naechster-code akzeptiert jetzt objekttyp_id als Alternative zu praefix; ohne konfiguriertes Schema bleibt der bisherige manuelle Präfix-Weg nutzbar (Rückwärtskompatibilität). Admin-UI: Nummernschema-Pflege direkt in der Objekttyp-Verwaltung (ObjekttypSection). ObjektAnlegenFormular versucht zuerst das Schema des gewählten Objekttyps, fällt bei 404 auf manuelles Präfix zurück. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
@@ -13,14 +13,16 @@ from app.models.vorlage import Beladungsvorlage, Vorlagenposition
|
||||
_CODE_MUSTER = re.compile(r"^-(\d+)$")
|
||||
|
||||
|
||||
async def naechster_freier_code(db: AsyncSession, spalte, praefix: str) -> str:
|
||||
async def naechster_freier_code(db: AsyncSession, spalte, praefix: str, mindestbreite: int = 5) -> str:
|
||||
"""Konzept-Ergänzung Karte 10/Prompt 09: Code-Vorschlag PRAEFIX-NNN mit
|
||||
fortlaufender Nummer je Präfix. Zahlenbreite folgt der bisher größten
|
||||
vergebenen Nummer (mind. 5 Stellen bei Erstvergabe), damit die Sortierung im
|
||||
Regal stabil bleibt, solange nicht mehr als 10^Breite Objekte existieren."""
|
||||
vergebenen Nummer (mindestens `mindestbreite` bei Erstvergabe - IDENT-003:
|
||||
kommt aus dem konfigurierten Nummernschema, falls vorhanden, sonst 5 wie
|
||||
bisher), damit die Sortierung im Regal stabil bleibt, solange nicht mehr
|
||||
als 10^Breite Objekte existieren."""
|
||||
result = await db.execute(select(spalte).where(spalte.like(f"{praefix}-%")))
|
||||
hoechste = 0
|
||||
breite = 5
|
||||
breite = mindestbreite
|
||||
for (code,) in result.all():
|
||||
treffer = _CODE_MUSTER.match(code[len(praefix) :])
|
||||
if treffer is None:
|
||||
|
||||
Reference in New Issue
Block a user