refactor: AIDA -> modulare Zeiterfassung

- Alle AIDA-Referenzen durch generische Begriffe ersetzt
  (aida -> attendance im Code, "Zeiterfassung" im UI)
- DB-Spalten: last_aida_status -> last_attendance_status
- Settings: aida_csv_path -> attendance_csv_path
- REST API fuer Zeiterfassung auf Port 8081:
  POST /api/attendance/{personal_nr} mit {"status": "anwesend"}
  GET  /api/attendance - alle Status abfragen
- Automatische DB-Migration fuer bestehende Installationen
- CSV bleibt als Option, API als Echtzeit-Alternative

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-03 10:28:45 +02:00
co-authored by Claude Opus 4.6
parent 12aa2d7ea1
commit 0d080ff885
8 changed files with 215 additions and 98 deletions
+6 -7
View File
@@ -17,8 +17,7 @@
{% if not authenticated %}
<div class="alert alert-warning">
<i class="bi bi-exclamation-triangle"></i>
Azure ist nicht verbunden. Bitte unter <a href="/settings">Einstellungen</a> konfigurieren und
<code>python app.py --auth</code> ausfuehren.
Azure ist nicht verbunden. Bitte unter <a href="/settings">Einstellungen</a> konfigurieren und verbinden.
</div>
{% endif %}
@@ -38,7 +37,7 @@
<div class="mb-2">
<small class="text-muted d-block mb-1">Segment {{ seg.index }}</small>
{% if seg.user %}
{% if seg.aida == '-' and seg.teams == '-' %}
{% if seg.attendance == '-' and seg.teams == '-' %}
<div class="segment-bar" style="background: #f0f0f0; border-color: #ccc;">
<span class="status-dot me-2" style="background: #ccc;"></span>
{{ seg.user }}
@@ -50,14 +49,14 @@
{{ seg.user }}
</div>
<div class="d-flex gap-2 mt-1">
{% if seg.aida == 'anwesend' %}
{% if seg.attendance == 'anwesend' %}
<span class="badge bg-success"><i class="bi bi-building"></i> Anwesend</span>
{% elif seg.aida == 'abwesend' %}
{% elif seg.attendance == 'abwesend' %}
<span class="badge bg-secondary"><i class="bi bi-door-open"></i> Abwesend</span>
{% elif seg.aida == 'homeoffice' %}
{% elif seg.attendance == 'homeoffice' %}
<span class="badge bg-warning text-dark"><i class="bi bi-house"></i> Homeoffice</span>
{% else %}
<span class="badge bg-light text-dark">{{ seg.aida }}</span>
<span class="badge bg-light text-dark">{{ seg.attendance }}</span>
{% endif %}
{% if seg.teams != '-' %}