Helpdesk Modul
Zweck
Das Helpdesk Modul bietet ein Helpdesk-System für Ticket-Verwaltung. Admin, Manager und Freelancer können Tickets erstellen und eigene Tickets anzeigen. Support-Mitarbeiter können alle Tickets verwalten. Das Modul unterstützt Integration mit Zammad.
Verantwortlichkeiten
Was gehört zum Modul
- Ticket-Erstellung: Tickets erstellen und verwalten
- Ticket-Verwaltung: Tickets bearbeiten, schließen, zuweisen
- Ticket-Artikel: Kommentare und Antworten zu Tickets
- Zammad-Integration: Integration mit externem Zammad-System
- Ticket-Status: Status-Verwaltung (Open, In Progress, Closed, etc.)
Was gehört nicht zum Modul
- Benachrichtigungen: Siehe notifications Modul
- E-Mail-Versand: Siehe Core E-Mail-Service
Implementierung
Backend- und Frontend-API sind modular aufgebaut; Details siehe interne Entwickler-Dokumentation.
Konfiguration
Entitlement
Das Modul erfordert das Entitlement module.helpdesk. Dieses wird pro Tenant aktiviert/deaktiviert.
Entitlement-Key: module.helpdesk
Environment Variables
- ZAMMAD_URL (optional): URL des Zammad-Systems
- ZAMMAD_API_TOKEN (optional): API-Token für Zammad
Defaults
- Standard-Priorität: Normal
- Standard-Status: Open
Abhängigkeiten
Optionale Abhängigkeiten
- Zammad: Für externe Ticket-Verwaltung (optional)
Core-Abhängigkeiten
- notifications: Für Benachrichtigungen bei Ticket-Updates
API-Endpoints
Authentifizierung
Alle Endpoints erfordern Authentifizierung. Zwei Methoden werden unterstützt:
- Firebase ID Token (Standard für Web-App)
- API-Token (für externe Nutzung)
Header: Authorization: Bearer <token>
Ticket erstellen
POST /api/helpdesk/tickets
Erstellt ein neues Ticket.
Request Body:
{
"subject": "Ticket-Betreff",
"body": "Ticket-Beschreibung",
"priority": "normal",
"category": "technical"
}
Response:
{
"ticket": {
"id": "ticket123",
"subject": "Ticket-Betreff",
"status": "open",
"priority": "normal",
"createdAt": "2024-01-15T10:00:00Z"
}
}
Tickets abrufen
GET /api/helpdesk/tickets
Lädt Tickets des aktuellen Users (oder alle für Support-Mitarbeiter).
Wird dokumentiert: Detaillierte API-Endpunkt-Dokumentation folgt.
Firestore Collections
Tickets
Pfad: /tenants/{tenantId}/tickets/{ticketId}
{
uid: string; // Ersteller UID
email: string;
subject: string;
body: string;
status: 'open' | 'in_progress' | 'closed' | 'resolved';
priority: 'low' | 'normal' | 'high' | 'urgent';
category?: string;
assignedTo?: string; // UID (optional)
zammadId?: string; // Zammad Ticket ID (optional)
createdAt: Timestamp;
updatedAt: Timestamp;
}
Ticket Articles
Pfad: /tenants/{tenantId}/ticketArticles/{articleId}
{
ticketId: string;
uid: string; // Autor UID
body: string;
type: 'note' | 'reply';
createdAt: Timestamp;
}
Wird dokumentiert: Detaillierte Datenbank-Struktur folgt.
Fehlerfälle
HTTP-Status-Codes
- 200 OK: Erfolgreich
- 201 Created: Ressource erstellt
- 400 Bad Request: Validierungsfehler
- 401 Unauthorized: Nicht authentifiziert
- 403 Forbidden: Keine Berechtigung
- 404 Not Found: Ressource nicht gefunden
- 500 Internal Server Error: Server-Fehler
Fehlercodes
Wird dokumentiert: Detaillierte Fehlercodes folgen.
FAQ / Troubleshooting
Wird dokumentiert: Häufige Fragen und Lösungen folgen.