92 Commits

Author SHA1 Message Date
Matthias Hochmeister
c55ec55e1b feat(admin): move integration URLs and credentials to GUI settings 2026-04-20 16:29:12 +02:00
Matthias Hochmeister
99792d93dd fix(sync): calculate G26 gueltig_bis (default 5y, override via Anmerkungen) and load all Untersuchungen via URL param 2026-04-20 11:18:18 +02:00
Matthias Hochmeister
752dfe474c change dat format in member overview, sync exams to atemschutz tool, rework member detail page 2026-04-20 10:32:20 +02:00
Matthias Hochmeister
d5291360c9 fix(sync): use frequency-based date column detection for Untersuchungen to find all exam rows 2026-04-20 08:04:44 +02:00
Matthias Hochmeister
84254a0b71 fix(sync): use native form submit for Untersuchungen pagination instead of ViewState URL hack 2026-04-19 19:45:12 +02:00
Matthias Hochmeister
3b4a14661c fix(sync): use ViewState extraction for Untersuchungen pagination instead of form submit 2026-04-19 19:37:17 +02:00
Matthias Hochmeister
b401b75b9a fix(sync): await Untersuchungen form navigation to prevent Fahrgenehmigungen page abort 2026-04-19 19:33:51 +02:00
Matthias Hochmeister
d796fae978 feat(sync): fix exam sync pagination, add AGL/AT20-Theorie lehrgang variants with yellow checkmark 2026-04-19 19:28:22 +02:00
Matthias Hochmeister
ed3ee143dd fix(sync): load all Untersuchungen via URL param, accept AT20 "mit ausgezeichnetem Erfolg" for atemschutz lehrgang 2026-04-19 17:47:59 +02:00
Matthias Hochmeister
3f92156115 fix(sync): fix Untersuchungen column parsing, sync exams to atemschutz profile, handle legacy shifted data 2026-04-19 17:26:37 +02:00
Matthias Hochmeister
54a110d17b fix(sync): fix Untersuchungen column parsing and sync Leistungstest/Atemschutztauglichkeit dates to atemschutz profile 2026-04-19 17:08:29 +02:00
Matthias Hochmeister
0a5402a9e5 feat(admin): add system logs viewer, tabbed data management, fix AT20 sync 2026-04-18 18:31:22 +02:00
Matthias Hochmeister
0a6377a64f fix(sync): remove debug file writing and optimize DB queries 2026-04-18 18:15:40 +02:00
Matthias Hochmeister
e1c7f44e56 fix(sync): switch FDISK course scraper from Ausbildungen to Kurse page 2026-04-18 16:46:35 +02:00
Matthias Hochmeister
1c071c7768 update docker version 2026-04-16 16:18:03 +02:00
Matthias Hochmeister
260b71baf8 refactor(mitglieder): replace legacy status values (passiv/anwärter/ausgetreten/…) with aktiv/kind/jugend/reserve across backend, frontend, and sync 2026-04-15 19:43:18 +02:00
Matthias Hochmeister
c1de8bd163 fix(dienstgrad): add ASB→Abschnittssachbearbeiter, remove non-existent ranks (FA/FF/BOI/BAM variants), sync DB constraint, TS types, and display map 2026-04-15 19:26:21 +02:00
Matthias Hochmeister
9586822a32 fix(sync): scrape AusbildungenListEdit instead of KursteilnehmerListEdit, add selectAlleAnzeige, fix column detection; handle Sachbearbeiter dienstgrad and ignore placeholder handles 2026-04-15 17:40:08 +02:00
Matthias Hochmeister
55b2fc1cf4 fix(sync): switch to full member list scrape so all FDISK members are synced, not just known accounts 2026-04-15 14:44:39 +02:00
Matthias Hochmeister
719b7bfcdb feat(sync): sync all FDISK members, auto-creating dashboard accounts for users not yet logged in 2026-04-15 14:36:57 +02:00
Matthias Hochmeister
50dbf6e9fd fix(multi): FDISK sync, order UX, Ausbildungen display, untracked items
FDISK sync:
- fix(sync): strip 'KFZ-Führerschein / ' prefix from license class select option text before whitelist validation
- fix(sync): fix navigateAndGetTableRows to pick date column with most matches (prevents sidebar tables from hijacking dateColIdx for Beförderungen)
- fix(sync): input.value fallback now falls through to textContent when value is empty
- feat(sync): expand Ausbildungen to capture Kursnummer, Kurz, Kurs (full name), Erfolgscode from FDISK table; add migration 086

External orders (Bestellungen):
- fix(bestellungen): allow erhalten_menge editing in lieferung_pruefen status (resolves deadlock preventing order completion)
- fix(bestellungen): show cost/received warnings for bestellt/teillieferung/lieferung_pruefen, not just when abgeschlossen is next
- feat(bestellungen): rename status labels to Eingereicht, Genehmigt, Teilweise geliefert, Vollständig geliefert
- fix(bestellungen): remove duplicate Bestelldatum from PDF export
- feat(bestellungen): add catalog item autocomplete to creation form (auto-fills bezeichnung + artikelnummer)

Internal orders (Ausruestungsanfrage):
- fix(ausruestung): untracked items with zuweisung_typ='keine' now appear in Nicht-zugewiesen tab (frontend filter was too strict)
- feat(ausruestung): load user-specific personal items when ordering for another user
- feat(ausruestung): auto-set ist_ersatz=true for items from personal equipment list; add toggle for catalog/free-text items
- feat(ausruestung): load item eigenschaften when personal item with artikel_id is checked

Ausbildungen display:
- feat(mitglieder): show kursname (full), kurs_kurzbezeichnung chip, erfolgscode chip (color-coded) per Ausbildung entry

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 13:22:04 +02:00
Matthias Hochmeister
bfcf1556da new features 2026-03-23 15:07:17 +01:00
Matthias Hochmeister
3326156b15 new features 2026-03-23 14:01:39 +01:00
Matthias Hochmeister
177dd1395b update 2026-03-16 16:19:07 +01:00
Matthias Hochmeister
665eca24af update 2026-03-16 16:18:02 +01:00
Matthias Hochmeister
75cf07f402 update 2026-03-16 16:14:25 +01:00
Matthias Hochmeister
57ab1e8b25 update 2026-03-16 16:05:02 +01:00
Matthias Hochmeister
d276e45248 update 2026-03-16 16:04:05 +01:00
Matthias Hochmeister
9d1c796d1a update 2026-03-16 16:02:57 +01:00
Matthias Hochmeister
43e5f907d5 update 2026-03-16 16:01:30 +01:00
Matthias Hochmeister
023bd7acbb update 2026-03-16 15:17:28 +01:00
Matthias Hochmeister
5f329bb5c1 update 2026-03-16 12:11:32 +01:00
Matthias Hochmeister
8d03c13bee update 2026-03-14 14:10:05 +01:00
Matthias Hochmeister
992ca8e104 update 2026-03-14 13:54:49 +01:00
Matthias Hochmeister
cf6b3ad2d6 update 2026-03-14 13:45:53 +01:00
Matthias Hochmeister
e666ff434e update 2026-03-13 21:44:54 +01:00
Matthias Hochmeister
3171fe1ce5 update 2026-03-13 21:41:25 +01:00
Matthias Hochmeister
8941dc7e09 update 2026-03-13 21:35:12 +01:00
Matthias Hochmeister
7245cd577e update 2026-03-13 21:33:18 +01:00
Matthias Hochmeister
b3266afbf8 update 2026-03-13 21:27:07 +01:00
Matthias Hochmeister
0d4e7b480d update 2026-03-13 21:16:44 +01:00
Matthias Hochmeister
461d28fa0d update 2026-03-13 21:04:53 +01:00
Matthias Hochmeister
b7b4fe2fc9 update 2026-03-13 21:01:54 +01:00
Matthias Hochmeister
ab29c43735 update 2026-03-13 20:28:05 +01:00
Matthias Hochmeister
f009694da7 update 2026-03-13 20:26:33 +01:00
Matthias Hochmeister
8f454905b9 update 2026-03-13 20:12:54 +01:00
Matthias Hochmeister
f5d1f7b061 update 2026-03-13 20:02:46 +01:00
Matthias Hochmeister
1b1a53cd8f update 2026-03-13 19:47:07 +01:00
Matthias Hochmeister
37c719e983 update 2026-03-13 19:42:01 +01:00
Matthias Hochmeister
c174edbb0b update 2026-03-13 19:35:25 +01:00