diff --git a/DEVLOG.md b/DEVLOG.md index 2cf9279..e2d61da 100644 --- a/DEVLOG.md +++ b/DEVLOG.md @@ -2542,3 +2542,39 @@ Keine Commits in dieser Session. - frontend/src/pages/admin/VorlageSection.tsx | 26 +++--- --- +## 2026-09-04 17:35 – 17:35 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** asb-material + +### Commits +- 69e7d0c Karte 10: Geräte-Code für Objektpositionen (Code128-Vorbereitung) + Code-Vorschlag + +### Geänderte Dateien +- DEVLOG.md | 147 +++++++++++++++++++++ +- backend/DEVLOG.md | 78 +++++++++++ +- .../versions/0005_add_objektposition_code.py | 32 +++++ +- backend/app/api/v1/endpoints/objekte.py | 58 +++++++- +- backend/app/models/objektposition.py | 4 + +- backend/app/schemas/objekt.py | 2 + +- backend/app/services/objekte.py | 21 +++ +- backend/tests/test_objekte.py | 83 ++++++++++++ + +--- +## 2026-09-04 17:35 – 17:35 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** asb-material + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- DEVLOG.md | 147 +++++++++++++++++++++ +- backend/DEVLOG.md | 78 +++++++++++ +- .../versions/0005_add_objektposition_code.py | 32 +++++ +- backend/app/api/v1/endpoints/objekte.py | 58 +++++++- +- backend/app/models/objektposition.py | 4 + +- backend/app/schemas/objekt.py | 2 + +- backend/app/services/objekte.py | 21 +++ +- backend/tests/test_objekte.py | 83 ++++++++++++ + +--- diff --git a/frontend/DEVLOG.md b/frontend/DEVLOG.md new file mode 100644 index 0000000..e7f1ffb --- /dev/null +++ b/frontend/DEVLOG.md @@ -0,0 +1,20 @@ +# frontend – Dev Log + +## 2026-09-04 17:35 – 17:36 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** asb-material + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- DEVLOG.md | 147 +++++++++++++++++++++ +- backend/DEVLOG.md | 78 +++++++++++ +- .../versions/0005_add_objektposition_code.py | 32 +++++ +- backend/app/api/v1/endpoints/objekte.py | 58 +++++++- +- backend/app/models/objektposition.py | 4 + +- backend/app/schemas/objekt.py | 2 + +- backend/app/services/objekte.py | 21 +++ +- backend/tests/test_objekte.py | 83 ++++++++++++ + +--- diff --git a/frontend/src/pages/admin/ObjektSection.tsx b/frontend/src/pages/admin/ObjektSection.tsx index 3166ca5..c360544 100644 --- a/frontend/src/pages/admin/ObjektSection.tsx +++ b/frontend/src/pages/admin/ObjektSection.tsx @@ -14,6 +14,7 @@ interface Props { } export function ObjektSection({ objekte, vorlagen, standorte, materialien, onGeaendert, onFehler }: Props) { + const [praefix, setPraefix] = useState(""); const [code, setCode] = useState(""); const [name, setName] = useState(""); const [vorlageId, setVorlageId] = useState(""); @@ -21,10 +22,41 @@ export function ObjektSection({ objekte, vorlagen, standorte, materialien, onGea const [wirdAngelegt, setWirdAngelegt] = useState(false); const [ausgeklapptId, setAusgeklapptId] = useState(null); const [duplizierId, setDuplizierId] = useState(null); + const [neuerPraefix, setNeuerPraefix] = useState(""); const [neuerCode, setNeuerCode] = useState(""); const [neuerName, setNeuerName] = useState(""); const [neuerStandortId, setNeuerStandortId] = useState(""); + async function codeVorschlagen() { + if (!praefix) { + onFehler("Präfix eingeben (z. B. RK, FZ)."); + return; + } + try { + const antwort = await apiRequest<{ code: string }>( + `/objekte/naechster-code?praefix=${encodeURIComponent(praefix.toUpperCase())}` + ); + setCode(antwort.code); + } catch { + onFehler("Code-Vorschlag fehlgeschlagen."); + } + } + + async function neuerCodeVorschlagen() { + if (!neuerPraefix) { + onFehler("Präfix eingeben (z. B. RK, FZ)."); + return; + } + try { + const antwort = await apiRequest<{ code: string }>( + `/objekte/naechster-code?praefix=${encodeURIComponent(neuerPraefix.toUpperCase())}` + ); + setNeuerCode(antwort.code); + } catch { + onFehler("Code-Vorschlag fehlgeschlagen."); + } + } + async function anlegen() { if (vorlageId === "" || standortId === "") { onFehler("Vorlage und Standort auswählen."); @@ -43,6 +75,7 @@ export function ObjektSection({ objekte, vorlagen, standorte, materialien, onGea standort_id: standortId, }, }); + setPraefix(""); setCode(""); setName(""); await onGeaendert(); @@ -55,6 +88,7 @@ export function ObjektSection({ objekte, vorlagen, standorte, materialien, onGea function duplizierenStarten(o: Objekt) { setDuplizierId(duplizierId === o.id ? null : o.id); + setNeuerPraefix(""); setNeuerCode(""); setNeuerName(`${o.name} (Kopie)`); setNeuerStandortId(o.standort_id); @@ -115,7 +149,19 @@ export function ObjektSection({ objekte, vorlagen, standorte, materialien, onGea
- setCode(e.target.value)} /> +
+ setPraefix(e.target.value)} + placeholder="Präfix (RK, FZ…)" + /> + + setCode(e.target.value)} /> +
@@ -154,6 +200,16 @@ export function ObjektSection({ objekte, vorlagen, standorte, materialien, onGea )} {duplizierId === o.id && (
+ setNeuerPraefix(e.target.value)} + placeholder="Präfix (RK, FZ…)" + /> +