Daily Report - 12. März 2026
Phase 3 & 4 Abschluss + Bugfixes
Phase 3 – SSO & Admin (100% ✅)
Audit Log Backend
GET /api/audit-logs mit User-Enrichment (user_name, user_email)
resource_type als Alias für entity_type (Frontend-Kompatibilität)
- AuditLog-Actions erweitert:
call, email, message, note, ticket_*, login, logout, upload
- Migration
a3f8c12d9e01
User Settings
GET/PUT /api/users/{id}/settings — persönliche Einstellungen (Sprache, Zeitzone)
UserSettingsUpdate Schema, CRUD in Dashboards-Modul
CRM Activity Timeline
- CRM CRUD (Customer, Contact) schreibt automatisch AuditLog-Einträge
GET /api/backoffice/crm/customers/{id}/activities — merged manuelle + Audit-Events als system-Activities
GET /api/backoffice/crm/activities/latest — unified für beide Dashboards
- Frontend:
ActivityType um "system" erweitert, Activity-Icon in CustomerDetailPage, CrmDashboardPage, DashboardPage
Phase 4 – HR, Support, Knowledge Base (100% ✅)
HR Self-Service
MyLeavePage.vue — Urlaubssaldo-Widget, eigene Anträge, Antrag stellen + stornieren
- Self-Service Endpoints (
/my-requests, /my-balance, /cancel)
- Tab “Mein Urlaub” als Default-Tab in HRApp
HR Detailseiten
EmployeeDetailPage.vue — Gravatar, Tabs (Überblick / Urlaub), Urlaubskonto-Widget, Leave-History
LeaveDetailPage.vue — Detailansicht statt Modal, Employee separat geladen, Gravatar
LeaveApprovalsPage.vue — Refactored: Gravatar, kompakte Cards, Employee separat geladen
- Gravatar in
EmployeeListPage.vue Karten
HR Recruiting
- Backend:
JobPosting + Application Models, vollständige REST API
- Migration
b9f1e4c8a2d3: hr_job_postings + hr_applications
RecruitingPage.vue: Stellenübersicht, Status-Filter, Veröffentlichen/Schließen/Archivieren
ApplicationsPage.vue: Pipeline mit Statusvorschritt, Stern-Rating (1–5), Gravatar
Support Tickets
- Backend:
Ticket + TicketComment, auto-Ticketnummer (TKT-XXXXX)
- Migration
c7d2f3e4b5a6: support_tickets + support_ticket_comments
TicketsListPage.vue: Liste mit Suche, Status/Priorität-Filter, Create-Form
TicketDetailPage.vue: Kommentar-Timeline, interne Notizen, Status-Workflow, Gravatar
- App im Dock (Position 8, LifeBuoy-Icon)
Knowledge Base
- Backend:
KBCategory + KBArticle, Volltextsuche, View-Counter, Helpful-Voting, Slugify
- Migration
d8e3f5c6b7a8: kb_categories + kb_articles
KBHomePage.vue: Kategorie-Grid mit Farb-Picker, Suche, letzte Artikel
KBCategoryPage.vue: Artikelliste, Status-Filter, Artikel anlegen
KBArticlePage.vue: Inline-Bearbeitung (Markdown), Helpful/Not-Helpful Voting
- App im Dock (Position 9, BookOpen-Icon)
Bugfixes
| # |
Problem |
Fix |
| 1 |
KBArticle.category_id ohne ForeignKey → ORM-Mapper-Crash beim Start |
ForeignKey("kb_categories.id") ergänzt, DB-Spalte von VARCHAR zu UUID migriert |
| 2 |
CRM Activities: db.commit() nach log_audit() fehlte → Einträge wurden zurückgerollt |
db.commit() nach jedem log_audit()-Call ergänzt |
| 3 |
Audit-Log Response: user_name/user_email fehlten |
Employee-Lookup im Service, AdminAuditLogResponse Schema |
| 4 |
gpg-agent allow-loopback-pinentry doppelt eingetragen → Commit-Fehler |
gpg-agent.conf bereinigt |
UI/UX Verbesserungen
- Home-Button in jeder Window-Titelleiste (navigiert zu
/app)
kit-input Klasse einheitlich in allen neuen Formularen
- Gravatar konsistent in HR-Modul (Mitarbeiterliste, Genehmigungen, Leave-Detail, Recruiting)
- Detailseiten-Ästhetik vereinheitlicht (Back-Button, Card-Grid, Badges)
Versionierung
| Branch |
Version |
Status |
main |
v3.0.0 |
Phase 3 abgeschlossen |
dev |
– |
Phase 4 komplett, PR ausstehend |
Nächster Schritt: PR dev → main, Version auf 4.0.0 bumpen, Phase 5 planen (Banking API, Elster, Mobile App)