Centurio System- & Moduldokumentation
🏛️ Plattform-Architektur 🔑 Login
🏠 Alle Module / manufacturing_execution / Außendienst & Kundendienst
🚐

Außendienst & Kundendienst

fieldservice manufacturing_execution 🛡️ RLS Protected

Techniker-Einsatzplanung, Dispatch-Board, mobile Arbeitsberichte mit Fotodokumentation und digitaler Signatur.

Fachliche Bestimmung: Digitalisiert den mobilen Kundendienst. Disponenten planen Termine auf einem visuellen Dispatch-Board. Techniker sehen Aufträge auf Smartphones/Tablets, erfassen Arbeitszeiten und verbrauchtes Material, dokumentieren Schäden per Kamera und lassen den Kunden direkt auf dem Touchscreen unterschreiben. Der fertige Servicebericht wird sofort als PDF archiviert.

⚡ Workflows & Lebenszyklen

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

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

Außendienst / Servicebericht anlegen cascade_target:business.fieldservice.create

Kaskade (review_gated).

1. cascade
Außendienst / Servicebericht anlegen

Benutzerbefehl: field service agent plan:command_field_service_agent

Geprüfter Durable-Plan (durable_plan), Start: manual_command.

1. field_service_agent
field_service_agent
{"key": "execute_command", "label": "Befehl prüfen, ausführen oder zur Freigabe vorlegen", "adapter": "agent.execute", "agent": "field_service_agent", "condition_fact": null}
Aktionen: field_service_agent

Servicebericht status:service_report

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

1. draft
draft
Status «draft» der Zustandsmaschine Servicebericht.
2. scheduled
scheduled
Status «scheduled» der Zustandsmaschine Servicebericht.
3. en_route
en_route
Status «en_route» der Zustandsmaschine Servicebericht.
4. on_site
on_site
Status «on_site» der Zustandsmaschine Servicebericht.
5. in_progress
in_progress
Status «in_progress» der Zustandsmaschine Servicebericht.
6. completed
completed
Status «completed» der Zustandsmaschine Servicebericht.
7. cancelled
cancelled
Status «cancelled» der Zustandsmaschine Servicebericht.

🗄️ Datenmodelle & Felder

ServiceReport service_reports RLS Aktiv
7 Felder / Spalten

Digitale Serviceberichte mit Arbeitszeiten, Materialeinsatz und Kundenunterschrift.

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
id UUID Nein PK Berichts-ID
tenant_id UUID Nein - Mandanten-ID (RLS)
report_number VARCHAR(100) Ja * - Berichtsnummer
customer_id UUID Nein FK ➔ customers.id Kunde
technician_id UUID Nein FK ➔ users.id Ausführender Techniker
customer_signature TEXT Nein - Base64-kodierte Unterschrift
status VARCHAR(50) Nein - Status (draft, signed, invoiced)

🔌 Einstiegspunkte (UI & APIs)

Art Methode Endpunkt / Pfad Titel & Zweck Berechtigung
⚡ REST API DELETE /api/v1/field-service/reports/{report_id}/time-entries/{entry_id}
delete_time_entry
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API GET /api/v1/field-service/checklist-templates
list_checklist_templates
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /api/v1/field-service/checklist-templates/{template_id}
get_checklist_template
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /api/v1/field-service/dispatch
dispatch_board
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /api/v1/field-service/my-reports
list_my_reports
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /api/v1/field-service/reports
list_reports
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /api/v1/field-service/reports/{report_id}
get_report
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /api/v1/field-service/reports/{report_id}/materials
list_materials
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /api/v1/field-service/reports/{report_id}/pdf
download_pdf
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /api/v1/field-service/reports/{report_id}/photos
list_photos
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /api/v1/field-service/reports/{report_id}/time-entries
list_time_entries
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /api/v1/field-service/reports/{report_id}/timer
get_timer
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /api/v1/field-service/timesheet
timesheet_csv
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /api/v1/field-service/timesheet/pdf
timesheet_pdf
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /aussendienst
fieldservice_page
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /aussendienst/dispatch
fieldservice_dispatch_page
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /aussendienst/meine-einsaetze
fieldservice_meine_page
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /aussendienst/neu
fieldservice_new_page
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /aussendienst/new
fieldservice_new_page
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /aussendienst/verwaltung
fieldservice_management_page
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /aussendienst/{report_id}
fieldservice_detail_page
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /aussendienst/{report_id}/edit
fieldservice_detail_page
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /fieldservice
fieldservice_page
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /fieldservice/dispatch
fieldservice_dispatch_page
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /fieldservice/meine
fieldservice_meine_page
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /fieldservice/new
fieldservice_new_page
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /fieldservice/verwaltung
fieldservice_management_page
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /portal/{slug}/serviceberichte
service_reports_page
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API GET /portal/{slug}/serviceberichte/{report_id}/pdf
service_report_pdf_download
Semantic binding: inventory_only; mutation=False
fieldservice
⚡ REST API PATCH /api/v1/field-service/reports/{report_id}
update_report
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/checklist-templates
create_checklist_template
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports
create_report
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/assign
assign_technician
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/cancel
cancel_report
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/complete
complete_report
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/complete-validated
complete_report_validated
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/documents
upload_report_document
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/email-pdf
email_pdf
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/escalate-ticket
escalate_report_to_ticket
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/material-pick
prepare_material_pick
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/materials
add_material
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/photos
upload_photo
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/signature
add_signature
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/status
update_status
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/status-validated
update_status_validated
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/time-entries
add_time_entry
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/timer/discard
discard_timer
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/timer/start
start_timer
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/field-service/reports/{report_id}/timer/stop
stop_timer
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API PUT /api/v1/field-service/reports/{report_id}/acceptance
update_acceptance
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API PUT /api/v1/field-service/reports/{report_id}/checklist
update_checklist
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API PUT /api/v1/field-service/reports/{report_id}/summary
update_summary
Semantic binding: operator_surface; mutation=True
fieldservice
⚡ REST API POST /api/v1/fieldservice/reports
Bericht speichern
Speichert Servicebericht samt Zeiten und Unterschrift
fieldservice:write

🛡️ Regulatorik & Compliance

Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:

  • GoBD Revisionssichere Dokumentenarchivierung
  • BGB Werkvertragsabnahme (§640)
Verknüpfte Module:
➔ workorders ➔ customers ➔ calendar ➔ finance