Centurio System- & Moduldokumentation (CH)
🏛️ Plattform-Architektur 🔑 Login
🏠 Alli Modul / crm_office / Tickets & Helpdesk
🎧

Tickets & Helpdesk

tickets crm_office 🛡️ RLS Protected

Kundensupport-Tickets, SLA-Eskalationsstufen, Ticket-Routing und Verknüpfung mit Aufträgen und Kundenportal.

Fachliche Bestimmung: Kanalisiert Kundenanfragen, Störungsmeldungen und Serviceaufträge. Tickets können direkt aus dem Kundenportal, per E-Mail oder manuell erstellt werden. Unterstützt interne Teamnotizen (die für Kunden unsichtbar bleiben), Zeiterfassung sowie Eskalation nach definierten Service-Level-Agreements (SLA).

⚡ Workflows & Läbenszykle

Lieferschein-Vollverarbeitung cascade:business.delivery_note.intake

Kaskade (review_gated).

1. stock
Wareneingang ins Lager buchen
inventory
Aktionen: post_goods_receipt
2. tour
Tour / Weitertransport einplanen
logistics
Aktionen: create_tour
3. task
Wareneingang prüfen / abgleichen
tasks
Aktionen: create_task
4. qc
Qualitätsprüfung bei Mängelverdacht
inventory
Aktionen: quality.check.create
5. ticket
Reklamations-Ticket bei Mängeln
tickets
Aktionen: create_ticket

Wartung / Instandsetzung cascade:business.maintenance.cycle

Kaskade (review_gated).

1. fieldservice
Außendienst-Einsatz / Bericht erfassen
fieldservice
Aktionen: create_service_report
2. followup
Wartungsfolge planen
assets
Aktionen: maintenance.schedule
3. ticket
Ticket bei Mängeln/Störung
tickets
Aktionen: create_ticket

Retourenbearbeitung cascade:business.return_note.handling

Kaskade (review_gated).

1. ticket
Reklamations-Ticket anlegen
tickets
Aktionen: create_ticket
2. tour
Abholtour einplanen
logistics
Aktionen: create_tour
3. task
Retoure weiterbearbeiten
tasks
Aktionen: create_task

Außendienst → Abrechnung cascade:business.work_report.billing

Kaskade (review_gated).

1. fieldservice
Außendienst-Einsatz / Servicebericht
fieldservice
Aktionen: create_service_report
2. task
Abrechnung nachverfolgen
tasks
Aktionen: create_task
3. ticket
Ticket bei Mängeln/Störung
tickets
Aktionen: create_ticket

Ticket / Vorgang anlegen cascade_target:business.ticket.create

Kaskade (review_gated).

1. cascade
Ticket / Vorgang anlegen

Ticket status:ticket

Beobachtbare Zustandsmaschine (observable_only). Übergänge hier nicht erzwungen — siehe Service-Validierung.

1. new
new
Status «new» der Zustandsmaschine Ticket.
2. open
open
Status «open» der Zustandsmaschine Ticket.
3. in_progress
in_progress
Status «in_progress» der Zustandsmaschine Ticket.
4. pending_customer
pending_customer
Status «pending_customer» der Zustandsmaschine Ticket.
5. pending_vendor
pending_vendor
Status «pending_vendor» der Zustandsmaschine Ticket.
6. resolved
resolved
Status «resolved» der Zustandsmaschine Ticket.
7. closed
closed
Status «closed» der Zustandsmaschine Ticket.
8. cancelled
cancelled
Status «cancelled» der Zustandsmaschine Ticket.

🗄️ Datemodell & Fälder

TicketMessages ticket_messages RLS Aktiv
16 Fälder / Spalte

Tabelle ticket_messages

Feldname Datetyp Pflicht Schlüssel Fachlichi Bedütig
ticket_id UUID Ja * FK ➔ tickets.id Feld ticket_id
author_user_id UUID Nein FK ➔ users.id Feld author_user_id
author_name VARCHAR(255) Ja * - Feld author_name
author_email VARCHAR(255) Nein - Feld author_email
is_internal BOOLEAN Ja * - Feld is_internal
body TEXT Ja * - Feld body
attachments JSONB Nein - Feld attachments
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
TicketSlaPolicies ticket_sla_policies RLS Aktiv
16 Fälder / Spalte

Tabelle ticket_sla_policies

Feldname Datetyp Pflicht Schlüssel Fachlichi Bedütig
name VARCHAR(128) Ja * - Feld name
description TEXT Nein - Feld description
team_id UUID Nein FK ➔ ticket_teams.id Feld team_id
priority VARCHAR(16) Nein - Feld priority
target_response_hours NUMERIC(6, 2) Ja * - Feld target_response_hours
target_resolution_hours NUMERIC(6, 2) Ja * - Feld target_resolution_hours
is_active BOOLEAN Ja * - Feld is_active
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
TicketTeams ticket_teams RLS Aktiv
17 Fälder / Spalte

Tabelle ticket_teams

Feldname Datetyp Pflicht Schlüssel Fachlichi Bedütig
name VARCHAR(128) Ja * - Feld name
code VARCHAR(32) Ja * - Feld code
description TEXT Nein - Feld description
email_alias VARCHAR(128) Nein - Feld email_alias
assignment_method VARCHAR(32) Ja * - Feld assignment_method
lead_user_id UUID Nein FK ➔ users.id Feld lead_user_id
is_active BOOLEAN Ja * - Feld is_active
color VARCHAR(16) Ja * - Feld color
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
TicketTimeLogs ticket_time_logs RLS Aktiv
15 Fälder / Spalte

Tabelle ticket_time_logs

Feldname Datetyp Pflicht Schlüssel Fachlichi Bedütig
ticket_id UUID Ja * FK ➔ tickets.id Feld ticket_id
user_id UUID Nein FK ➔ users.id Feld user_id
work_date DATE Ja * - Feld work_date
hours NUMERIC(6, 2) Ja * - Feld hours
is_billable BOOLEAN Ja * - Feld is_billable
description TEXT Nein - Feld description
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
Tickets tickets RLS Aktiv
49 Fälder / Spalte

Tabelle tickets

Feldname Datetyp Pflicht Schlüssel Fachlichi Bedütig
ticket_number VARCHAR(32) Ja * - Feld ticket_number
title VARCHAR(255) Ja * - Feld title
description TEXT Nein - Feld description
status VARCHAR(48) Ja * - Feld status
priority VARCHAR(48) Ja * - Feld priority
category VARCHAR(48) Ja * - Feld category
channel VARCHAR(48) Ja * - Feld channel
team_id UUID Nein FK ➔ ticket_teams.id Feld team_id
assigned_user_id UUID Nein FK ➔ users.id Feld assigned_user_id
customer_id UUID Nein FK ➔ customers.id Feld customer_id
contact_name VARCHAR(255) Nein - Feld contact_name
contact_email VARCHAR(255) Nein - Feld contact_email
contact_phone VARCHAR(64) Nein - Feld contact_phone
project_id UUID Nein FK ➔ projects.id Feld project_id
work_order_id UUID Nein FK ➔ work_orders.id Feld work_order_id
contract_id UUID Nein FK ➔ contracts.id Feld contract_id
asset_id UUID Nein FK ➔ assets.id Feld asset_id
quote_id UUID Nein FK ➔ quotes.id Feld quote_id
invoice_id UUID Nein FK ➔ invoices.id Feld invoice_id
return_id UUID Nein FK ➔ return_orders.id Feld return_id
service_report_id UUID Nein FK ➔ service_reports.id Feld service_report_id
sla_policy_id UUID Nein FK ➔ ticket_sla_policies.id Feld sla_policy_id
sla_status VARCHAR(48) Ja * - Feld sla_status
response_due_at DATETIME Nein - Feld response_due_at
first_responded_at DATETIME Nein - Feld first_responded_at
resolution_due_at DATETIME Nein - Feld resolution_due_at
resolved_at DATETIME Nein - Feld resolved_at
closed_at DATETIME Nein - Feld closed_at
is_billable BOOLEAN Ja * - Feld is_billable
hourly_rate NUMERIC(14, 2) Nein - Feld hourly_rate
currency VARCHAR(3) Ja * - Feld currency
planned_hours NUMERIC(8, 2) Nein - Feld planned_hours
logged_hours NUMERIC(8, 2) Ja * - Feld logged_hours
csat_rating INTEGER Nein - Feld csat_rating
csat_comment TEXT Nein - Feld csat_comment
csat_submitted_at DATETIME Nein - Feld csat_submitted_at
resolution_summary TEXT Nein - Feld resolution_summary
tags JSONB Nein - Feld tags
custom_fields JSONB Nein - Feld custom_fields
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
deleted_at DATETIME Nein - Feld deleted_at

🔌 Iistigspünkt (UI & APIs)

Art Method Endpunkt / Pfad Titel & Zweck Berächtigig
⚡ REST API GET /api/v1/tickets
list_tickets
Semantic binding: inventory_only; mutation=False
tickets
⚡ REST API GET /api/v1/tickets/sla-policies
list_sla_policies
Semantic binding: inventory_only; mutation=False
tickets
⚡ REST API GET /api/v1/tickets/stats
get_ticket_stats
Semantic binding: inventory_only; mutation=False
tickets
⚡ REST API GET /api/v1/tickets/teams
list_teams
Semantic binding: inventory_only; mutation=False
tickets
⚡ REST API GET /api/v1/tickets/{ticket_id}
get_ticket
Semantic binding: inventory_only; mutation=False
tickets
⚡ REST API GET /api/v1/tickets/{ticket_id}/messages
list_ticket_messages
Semantic binding: inventory_only; mutation=False
tickets
⚡ REST API GET /api/v1/tickets/{ticket_id}/timelogs
list_ticket_timelogs
Semantic binding: inventory_only; mutation=False
tickets
⚡ REST API GET /portal/{slug}/tickets
tickets_page
Semantic binding: inventory_only; mutation=False
tickets
⚡ REST API GET /portal/{slug}/tickets/{ticket_id}
ticket_detail
Semantic binding: inventory_only; mutation=False
tickets
⚡ REST API GET /tickets
tickets_page
Semantic binding: inventory_only; mutation=False
tickets
⚡ REST API GET /tickets/new
ticket_create_page
Semantic binding: inventory_only; mutation=False
tickets
⚡ REST API GET /tickets/{ticket_id}
ticket_detail_page
Semantic binding: inventory_only; mutation=False
tickets
⚡ REST API PATCH /api/v1/tickets/teams/{team_id}
update_team
Semantic binding: operator_surface; mutation=True
tickets
⚡ REST API POST /api/v1/tickets
create_ticket
Semantic binding: operator_surface; mutation=True
tickets
⚡ REST API POST /api/v1/tickets/sla-policies
create_sla_policy
Semantic binding: operator_surface; mutation=True
tickets
⚡ REST API POST /api/v1/tickets/teams
create_team
Semantic binding: operator_surface; mutation=True
tickets
⚡ REST API POST /api/v1/tickets/{ticket_id}/create-project
create_project_from_ticket
Semantic binding: operator_surface; mutation=True
tickets
⚡ REST API POST /api/v1/tickets/{ticket_id}/create-task
create_task_from_ticket
Semantic binding: operator_surface; mutation=True
tickets
⚡ REST API POST /api/v1/tickets/{ticket_id}/create-work-order
create_work_order_from_ticket
Semantic binding: operator_surface; mutation=True
tickets
⚡ REST API POST /api/v1/tickets/{ticket_id}/csat
submit_ticket_csat
Semantic binding: operator_surface; mutation=True
tickets
⚡ REST API POST /api/v1/tickets/{ticket_id}/messages
add_ticket_message
Semantic binding: operator_surface; mutation=True
tickets
⚡ REST API POST /api/v1/tickets/{ticket_id}/status
transition_ticket_status
Semantic binding: operator_surface; mutation=True
tickets
⚡ REST API POST /api/v1/tickets/{ticket_id}/timelogs
log_ticket_time
Semantic binding: operator_surface; mutation=True
tickets
⚡ REST API POST /portal/{slug}/tickets
ticket_create
Semantic binding: operator_surface; mutation=True
tickets
⚡ REST API POST /portal/{slug}/tickets/{ticket_id}/abschliessen
ticket_close
Semantic binding: operator_surface; mutation=True
tickets
⚡ REST API POST /portal/{slug}/tickets/{ticket_id}/antwort
ticket_reply
Semantic binding: operator_surface; mutation=True
tickets
⚡ REST API PUT /api/v1/tickets/{ticket_id}
update_ticket
Semantic binding: operator_surface; mutation=True
tickets

🛡️ Regulatorie & Compliance

Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:

  • ITIL Service Operation
  • SLA Fristenüberwachung
Verknüpfti Modul:
➔ customers ➔ portal ➔ workorders