Zum Inhalt

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

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:

  1. Firebase ID Token (Standard für Web-App)
  2. 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.