Centurio System & Module Documentation
🏛️ Platform Architecture 🔑 Login
All Modules / organization_compliance / Bewerbermanagement
📘

Bewerbermanagement

recruiting organization_compliance 🛡️ RLS Protected

Bewerbermanagement — aus Code abgeleitete Prozess- und API-Dokumentation.

Fachliche Bestimmung: Personal, Arbeitszeit & Recruiting steuert den gesamten Lebenszyklus der Mitarbeitenden (Hire-to-Retire): Stellenausschreibungen und DSGVO-konforme Bewerber-Pipelines, digitale Personalakten mit Vertragsmanagement, gesetzeskonforme Arbeitszeiterfassung nach EuGH-Urteil und Arbeitszeitgesetz (ArbZG), Urlaubsantrags- und Abwesenheitsworkflows mit Vertretungsregelung sowie Vorbereitung der Lohnabrechnung.

⚡ Workflows & Lifecycles

Bewerbung status:recruiting_application

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

1. new
new
Status «new» der Zustandsmaschine Bewerbung.
2. screening
screening
Status «screening» der Zustandsmaschine Bewerbung.
3. interview
interview
Status «interview» der Zustandsmaschine Bewerbung.
4. offer
offer
Status «offer» der Zustandsmaschine Bewerbung.
5. hired
hired
Status «hired» der Zustandsmaschine Bewerbung.
6. rejected
rejected
Status «rejected» der Zustandsmaschine Bewerbung.
7. withdrawn
withdrawn
Status «withdrawn» der Zustandsmaschine Bewerbung.

⚙️ Fachprozesse & Capabilities (System-Fachlogik)

Registrierte Fachoperationen und System-Capabilities dieses Moduls zur Steuerung von Workflows, Kaskaden und KI-Agenten.

Gesamt: 23 manual_entry: 1 engine: 20 operator_surface: 1 observable_only: 1
Capability & Schlüssel Fachliche Bezeichnung Ausführung / Coverage Risikostufe & Freigabe Effekte & Kaskaden
Agent-Einstieg core_workflow_agent agent_entry:core_workflow_agent
Agent-Einstieg core_workflow_agent
Quelle: code:module_agent_map
manual_entry
✓ Auto
Keine Seiteneffekte deklariert
Bewerbung anlegen capability:recruiting.application.create
Op: recruiting.application.create
Intent: create_application
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • application.created
Bewerbungsphase setzen capability:recruiting.application.move_stage
Op: recruiting.application.move_stage
Intent: update_application
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • application.stage_moved
Background-Check capability:recruiting.background.check
Op: recruiting.background.check
Objekt: candidate
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.background.check
Vorscreening capability:recruiting.candidate.screen
Op: recruiting.candidate.screen
Objekt: candidate
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.candidate.screen
Interview planen capability:recruiting.interview.schedule
Op: recruiting.interview.schedule
Objekt: interview
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • interview.scheduled
Angebot annehmen capability:recruiting.offer.accept
Op: recruiting.offer.accept
Objekt: job_offer
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.offer.accept
Angebot capability:recruiting.offer.create
Op: recruiting.offer.create
Objekt: job_offer
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.offer.create
Recruiting: add note capability:recruiting.recruiting.add_note
Op: recruiting.recruiting.add_note
Objekt: recruiting
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.add_note
Recruiting: create application capability:recruiting.recruiting.create_application
Op: recruiting.recruiting.create_application
Objekt: recruiting
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.create_application
Recruiting: create candidate capability:recruiting.recruiting.create_candidate
Op: recruiting.recruiting.create_candidate
Objekt: recruiting
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.create_candidate
Recruiting: create vacancy capability:recruiting.recruiting.create_vacancy
Op: recruiting.recruiting.create_vacancy
Objekt: recruiting
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.create_vacancy
Recruiting: match candidates capability:recruiting.recruiting.match_candidates
Op: recruiting.recruiting.match_candidates
Objekt: recruiting
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.match_candidates
Recruiting: move application stage capability:recruiting.recruiting.move_application_stage
Op: recruiting.recruiting.move_application_stage
Objekt: recruiting
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.move_application_stage
Recruiting: record interview feedback capability:recruiting.recruiting.record_interview_feedback
Op: recruiting.recruiting.record_interview_feedback
Objekt: recruiting
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.record_interview_feedback
Recruiting: reject application capability:recruiting.recruiting.reject_application
Op: recruiting.recruiting.reject_application
Objekt: recruiting
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.reject_application
Recruiting: schedule interview capability:recruiting.recruiting.schedule_interview
Op: recruiting.recruiting.schedule_interview
Objekt: recruiting
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.schedule_interview
Recruiting: update application status capability:recruiting.recruiting.update_application_status
Op: recruiting.recruiting.update_application_status
Objekt: recruiting
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.update_application_status
Recruiting: update candidate capability:recruiting.recruiting.update_candidate
Op: recruiting.recruiting.update_candidate
Objekt: recruiting
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.update_candidate
Recruiting: update vacancy capability:recruiting.recruiting.update_vacancy
Op: recruiting.recruiting.update_vacancy
Objekt: recruiting
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.update_vacancy
Recruiting: update vacancy status capability:recruiting.recruiting.update_vacancy_status
Op: recruiting.recruiting.update_vacancy_status
Objekt: recruiting
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • recruiting.update_vacancy_status
recruiting_application: edit form form_surface_anchor:recruiting_application.edit
Objekt: recruiting_application
Quelle: code:erp_form_surface
operator_surface
✓ Auto
Keine Seiteneffekte deklariert
Bewerbung status:recruiting_application
Objekt: recruiting_application
Quelle: code:status_machine
observable_only
✓ Auto
Keine Seiteneffekte deklariert

🧠 Fachprozess-Erzählung & Dual Knowledge Architektur

Synthese aus der ideologischen Blaupause (Meta-Fachlogik / Soll), der faktischen System-Implementierung (System-Fachlogik / Ist) und No-Code Customizing für KI-Consultants.

Dual Knowledge Layer
📖

Der durchgängige Businessprozess im Detail (End-to-End Fließtext-Erzählung)

Der durchgängige Personal- und Recruitingprozess in der betrieblichen Praxis

Die Mitarbeitenden sind das wertvollste Gut jedes Unternehmens. Centurio ERP verbindet ein modernes Bewerbermanagement mit rechtssicherer Personalverwaltung und transparenter Zeiterfassung.

1. Stellenbedarf & Recruiting-Pipeline (Job Requisition & Ingestion)

Der Recruiting-Prozess startet bei personellen Engpässen:

  • Bedarfsanforderung: Ein Abteilungsleiter meldet eine neue Planstelle oder Nachbesetzung (cap:recruiting.job.create).
  • Veröffentlichung: Das System generiert die Stellenanzeige und publiziert sie auf der Unternehmenswebsite (publishing), in Jobbörsen oder über Social Media.
  • Bewerbungseingang: Eingehende Bewerbungen (per Webformular oder E-Mail an jobs@) werden über das Posteingangsmodul (inbox) erfasst. Die KI extrahiert Lebenslaufdaten (Skills, Berufserfahrung, Ausbildung, Kündigungsfrist) und legt die Bewerberakte an (cap:recruiting.candidate.create_from_inbox).
  • DSGVO-Bewerberdatenschutz: Der Bewerber erhält eine automatisierte Datenschutzerklärung mit Hinweis auf die gesetzliche Speicherfrist (6 Monate nach Abschluss des Verfahrens zur Abwehr von AGG-Klagen).

2. Bewerberauswahl, Vorstellungsgespräch & Zusage (Interview & Hiring)

  • Die Bewerber durchlaufen den visuellen Kanban-Funnel: Eingegangen ➔ Vorauswahl / Screening ➔ Erstes Interview ➔ Fachprüfung / Probearbeit ➔ Angebot ➔ Eingestellt (hired).
  • Vorstellungsgespräche: Einladungen und Termine werden mit dem Kalender (calendar) synchronisiert. Feedback-Bögen der Interviewer werden strukturiert erfasst.
  • Einstellungszusage: Bei positiver Entscheidung wird das Jobangebot erstellt. Nach Annahme konvertiert die Capability cap:recruiting.candidate.hire den Bewerber direkt in einen neuen Datensatz im Personalstamm (employees).

3. Digitale Personalakte & Onboarding

  • Personalstammdaten: Erfassung von Stammdaten, Steuer-ID, Sozialversicherungsnummer, Krankenkasse, IBAN und Notfallkontakten.
  • Vertragsdokumente: Der Arbeitsvertrag wird digital generiert, via DMS (documents) archiviert und vom Mitarbeiter gegengezeichnet.
  • Onboarding-Checkliste: Das System steuert automatische Aufgaben an die IT (Laptop, E-Mail-Konto einrichten), den Fuhrpark (Dienstwagen) und das Team (Einarbeitungsplan).

4. Arbeitszeiterfassung nach ArbZG & EuGH-Rechtsprechung

Centurio ERP erfüllt die gesetzliche Pflicht zur lückenlosen Arbeitszeiterfassung (BAG-Beschluss 2022 / EuGH):

  • Stempelung: Mitarbeiter buchen Arbeitsbeginn, Pausen und Arbeitsende über Browser, Mobile-App oder stationäre Terminals (cap:employees.time.clock_in, cap:employees.time.clock_out).
  • ArbZG-Wächter (Compliance Guard): Das System überwacht im Hintergrund die Schutzvorschriften des Arbeitszeitgesetzes:
    • Höchstarbeitszeit (§ 3 ArbZG): Warnung bei Überschreitung von 8 Stunden (max. 10 Stunden mit Ausgleich).
    • Pflichtpausen (§ 4 ArbZG): Automatischer Hinweis bei Arbeiten über 6 Stunden ohne 30-minütige Pause.
    • Ruhezeiten (§ 5 ArbZG): Mindestens 11 Stunden ununterbrochene Ruhezeit zwischen zwei Schichten.
  • Verstöße werden im HR-Audit-Dashboard für den Betriebsrat und die Personalleitung transparent gemacht.

5. Urlaubsverwaltung & Abwesenheitsworkflow (Leave Management)

  • Urlaubsanspruch: Das System berechnet den vertraglichen Urlaubsanspruch nach Bundesurlaubsgesetz (BUrlG) unter Berücksichtigung von Betriebszugehörigkeit und Resturlaub.
  • Antragsworkflow: Der Mitarbeiter beantragt Urlaub oder Sonderurlaub im Self-Service-Portal (cap:employees.leave.request).
  • Vertretungsregelung & Genehmigung: Der Vorgesetzte prüft die Teamabdeckung und genehmigt den Antrag mit einem Klick. Der Kalender blockiert den Zeitraum automatisch.
  • Krankmeldungen & eAU: Erfassung von Arbeitsunfähigkeiten mit elektronischer Abfrage der eAU bei den Krankenkassen.

6. Vorbereitung der Entgeltabrechnung & Offboarding

  • Am Monatsende aggregiert das Modul geleistete Arbeitsstunden, Überstundensalden, Urlaubs- und Krankheitstage sowie genehmigte Spesen (expenses).
  • Die Daten werden als konsolidierter Vorbereitungsbericht für das Lohnbüro oder die DATEV-Lohnabrechnung exportiert.
  • Offboarding: Bei Austritt steuert das System die Rückgabe von Firmeneigentum, die Erstellung des qualifizierten Arbeitszeugnisses und die DSGVO-konforme Löschung nach Ablauf der steuerlichen Aufbewahrungsfristen.
🏛️

Meta-Fachlogik: Ideologische Blaupause, Soll-Weltbild & Normen

Meta-Fachlogik: Die ideologische Blaupause & das normative Weltbild

Die Meta-Fachlogik des Personalwesens stützt sich auf das Arbeitszeitgesetz (ArbZG), das Bundesurlaubsgesetz (BUrlG), das Allgemeine Gleichbehandlungsgesetz (AGG), die DSGVO und Grundsätze der Arbeitssicherheit.

1. Arbeitszeitschutz & EuGH-Vorgaben

  • Objektive, verlässliche und zugängliche Zeiterfassung: Nach dem Grundsatzurteil des EuGH (C-55/18) und dem BAG-Beschluss vom 13.09.2022 (1 ABR 22/21) sind Arbeitgeber verpflichtet, Beginn, Dauer und Ende der täglichen Arbeitszeit verbindlich aufzuzeichnen.
  • Zwingende Ruhepausen (§ 4 ArbZG) & Ruhezeiten (§ 5 ArbZG): Dienen der Erhaltung der Gesundheit der Beschäftigten. Das Soll-Modell verbietet das Überschreiben gestempelter Pausenzeiten ohne sachliche Begründung.

2. Antidiskriminierung & AGG-Schutz (§§ 1–15 AGG)

  • Bewerberverfahren müssen frei von Benachteiligungen wegen Rasse, ethnischer Herkunft, Geschlecht, Religion, Behinderung, Alter oder sexueller Identität sein.
  • Beweissicherungsfrist: Abgelehnte Bewerbungsunterlagen müssen zur Abwehr von Entschädigungsansprüchen nach § 15 AGG genau sechs Monate aufbewahrt und anschließend datenschutzkonform gelöscht werden.

3. Invarianten des Soll-Modells

  1. Keine Arbeitszeiterfassung darf nachträglich ohne Protokollierung im Revisions-Audit verändert werden.
  2. Bewerberdaten abgelehnter Kandidaten sind nach Ablauf von sechs Monaten zwingend zu löschen/anonymisieren.
  3. Urlaubsanträge dürfen den verfügbaren Urlaubsanspruch des Mitarbeiters nicht unberechtigt überziehen.
  4. Gehalts- und Personaldaten unterliegen striktem Mandanten- und Rollenschutz (HR-Admin-Berechtigung).

Normbezug für recruiting

Prüfkatalog Standards-Registry v2026.10.1. Dieser Abschnitt ordnet Prüfreferenzen zu und stellt nicht fest, dass das Modul eine Norm einhält; keine Kataloganforderung ist als PASS bewertet.

Geführte Prüfreferenzen:

  • eu-gdpr-2016-679, Regulation (EU) 2016/679 (General Data Protection Regulation, GDPR/DSGVO), Ausgabe Regulation (EU) 2016/679, anwendbar ab 2018-05-25. Art: regulatory. Öffentlicher Text. Die Nennung ist keine Klauselprüfung. Keine modulspezifische Kataloganforderung. Die Zuordnung bleibt eine Prüfreferenz.

Im Auditauftrag zusätzlich genannt und nicht im Prüfkatalog v2026.10.1: ISO 30405, ISO 10667, ISO 30415. Dafür gibt es hier keine Klausel und keine Aussage, dass eine Vorgabe eingehalten wird.

Plattformweite Katalogwerke mit Geltungsbereich all (unter anderem WCAG 2.2, EN 301 549 V4.1.1, ISO 9241-110:2020, ISO 9241-210:2019, ISO/IEC 25010:2023, ISO 9001:2026, ISO/IEC 27001:2022, APQC PCF 8.0, DSGVO, EU AI Act) umfassen dieses Modul mit. Wo der Volltext fehlt, bleibt der Zugang ohne Quelle, lizenzpflichtig oder nur als öffentliche Zusammenfassung gekennzeichnet. Auch diese Nennung weist keine eingehaltene Vorgabe nach.

⚙️

Systemische Fachlogik: Faktische Umsetzung in Centurio ERP & Capabilities

Systemische Fachlogik: Die faktische Umsetzung in Centurio ERP

Die System-Fachlogik dokumentiert die Realisierung in den Modulen employees, hr, recruiting und personal.

1. Datenmodelle & Semantische Schicht (ORM)

  • Employee: Personalstamm (Felder: id, tenant_id, employee_number, first_name, last_name, email, department_id, position, hire_date, weekly_hours, vacation_days_yearly, is_active).
  • TimeRecord: Arbeitszeitstempel (Felder: employee_id, clock_in, clock_out, break_duration_minutes, record_type [work, travel, home_office], is_violation_arbzg).
  • LeaveRequest: Urlaubs- und Abwesenheitsantrag (Felder: employee_id, leave_type [vacation, sick, parental, special], start_date, end_date, days_count, status [pending, approved, rejected]).
  • JobOpening: Stellenausschreibung (Felder: id, title, department, status [draft, published, closed]).
  • Candidate: Bewerberakte (Felder: job_opening_id, name, email, stage [new, screening, interview, offer, hired, rejected], gdpr_consent_date, retention_until).

2. Das Capability-Register

  • cap:recruiting.job.create: Anlegen einer neuen Stellenausschreibung.
  • cap:recruiting.candidate.create_from_inbox: Automatische Bewerberanlage aus E-Mail.
  • cap:recruiting.candidate.hire: Übernahme eines Bewerbers in den Personalstamm.
  • cap:employees.time.clock_in: Arbeitsbeginn buchen.
  • cap:employees.time.clock_out: Arbeitsende buchen mit Pausenabzug.
  • cap:employees.leave.request: Einreichen eines Urlaubsantrags.
  • cap:employees.leave.approve: Genehmigung des Abwesenheitsantrags durch Vorgesetzten.
  • cap:hr.payroll.export_summary: Aggregation der Monatsstunden für das Lohnbüro.

3. Der Gateway gw:candidate_hiring@v1

Sichert die rechtsverbindliche Einstellung ab:

  1. Validierung: Prüft Gehalt, Arbeitszeiten und Vollständigkeit der Vertragsdaten.
  2. Personalaktengenerierung: Erzeugt Employee, weist Nummernkreis zu und sperrt die Bewerberakte.
  3. Outbox-Signal: Feuert EMPLOYEE_HIRED und stößt die IT-Onboarding-Kaskade an.

4. Statusmodelle

  • Bewerber-Phasen: new ➔ screening ➔ interview ➔ offer ➔ hired oder rejected.
  • Urlaubsantrag: draft ➔ pending_approval ➔ approved oder rejected.
🤖

KI-Consultant Leitfaden: Customizing- & No-Code-Konzept (Soll-Ist-Synthese)

AI Solution Architect Blueprint

KI-Consultant Blueprint: Customizing & No-Code Architektur

Anleitung für Solution Architects zur Einrichtung von HR- und Zeiterfassungsabläufen.

1. Kundenanforderungsanalyse

  • Welche Arbeitszeitmodelle existieren (Gleitzeit mit Kernarbeitszeit, Vertrauensarbeitszeit, Schichtmodelle)?
  • Welche Urlaubsarten sollen unterstützt werden (Erholungsurlaub, Bildungsurlaub, Sonderurlaub bei Heirat/Geburt)?
  • Wie lange soll der Bewerber-Talentpool mit expliziter Einwilligung gespeichert werden (z.B. 12 oder 24 Monate)?

2. No-Code Zusatzfelder (Custom Fields)

Im No-Code Studio (/semantic/customizing):

  • Auf Employee:
    • home_office_days_per_week (Ganzzahl): Vertraglich vereinbarte Home-Office-Tage.
    • safety_shoe_size (Ganzzahl): Kleidergröße für PSA-Ausgabe in der Werkstatt.
  • Auf Candidate:
    • salary_expectation_yearly (Währungsbetrag): Gehaltsvorstellung des Bewerbers.
    • earliest_start_date (Datum): Frühestmöglicher Eintrittstermin.

3. No-Code Workflow Canvas DAGs

Blueprint A: ArbZG-Verstoß-Alarmierung an Vorgesetzte
  • Trigger-Node: cap:employees.time.clock_out wird aufgerufen.
  • Condition-Node: time_record.worked_hours > 10.0 OR time_record.break_duration < 30.
  • Action-Node: Markiere is_violation_arbzg = true und sende dezente Information an Mitarbeiter und Teamleiter zur Einhaltung der Arbeitsruhe.
Blueprint B: Automatisches Onboarding-Aufgabenpaket
  • Trigger-Node: Event EMPLOYEE_HIRED.
  • Action-Node 1: Erzeuge IT-Aufgabe: Laptop & Benutzerkonto einrichten.
  • Action-Node 2: Erzeuge Fuhrpark-Aufgabe: Dienstwagenübergabe terminieren.
  • Action-Node 3: Sende Begrüßungs-Mail an neuen Mitarbeiter mit Onboarding-Portal-Zugang.

📚 Operative Prozessbegriffe & Transaktionsschnittstellen

Zentrale Fachbegriffe im Prozesszusammenhang (Operatives Modell)
Hire-to-Retire
Ganzheitlicher Lebenszyklus eines Mitarbeiters von der Bewerbung bis zum Renteneintritt.
ArbZG-Compliance
Einhaltung der gesetzlichen Vorschriften zu Höchstarbeitszeit (10h), Pausen und 11h Ruhezeit.
Digitale Personalakte
Zentraler, geschützter Datenspeicher für alle Mitarbeiterdokumente und Verträge.
Urlaubsanspruch nach BUrlG
Gesetzlich oder vertraglich festgelegte Anzahl bezahlter Erholungstage pro Kalenderjahr.
AGG-Klagefrist (6 Monate)
Frist zur Aufbewahrung von Bewerberdaten zur rechtlichen Absicherung gegen Benachteiligungsklagen.
eAU (Elektronische Arbeitsunfähigkeitsbescheinigung)
Digitaler Krankmeldungsabruf bei den gesetzlichen Krankenkassen.
📥 Eingänge & Trigger (Inputs)
  • Eingehende Bewerbungen über Karriereportal und Postfach
  • Tägliche Arbeitszeitstempelungen der Mitarbeiter (Terminal/App)
  • Urlaubs- und Abwesenheitsanträge aus dem Mitarbeiter-Self-Service
  • Krankmeldungen und eAU-Mitteilungen der Krankenkassen
📤 Ausgänge & Arbeitsergebnisse (Outputs)
  • Rechtskonforme digitale Personalakten und Arbeitsverträge
  • Lückenlose Arbeitszeitprotokolle mit ArbZG-Audit-Trail
  • Genehmigte Urlaubspläne mit kalendarischer Teamübersicht
  • Lohn- und Gehalts-Vorbereitungsberichte für den Steuerberater
⚡ Kaskaden & Folgeprozesse (Cascades)
  • candidate_hired -> create_employee_master: Automatische Anlage im Personalverzeichnis
  • employee_hired -> trigger_onboarding_tasks: Verteilung der Ausstattungsaufgaben an IT und Office
  • leave_approved -> update_shared_calendar: Sperrung des Abwesenheitszeitraums im Teamkalender
  • time_recorded -> calculate_monthly_overtime: Fortschreibung des Arbeitszeitkontos
🛡️ Nebenprozesse & Resilienz
  • Verwaltung des Bewerber-Talentpools mit automatischer Wiedervorlage
  • Überwachung von Befristungsdaten bei befristeten Arbeitsverträgen
  • Wiedereingliederungsmanagement (BEM) bei langzeiterkrankten Mitarbeitern
  • Ausstellung qualifizierter Arbeitszeugnisse mit Vorlagenunterstützung
💡 No-Code Checkliste & Praxistipps
  • Arbeitszeitmodelle (Vollzeit 40h, Teilzeit 20h/30h) im System definieren
  • Urlaubsanspruch nach Alter oder Betriebszugehörigkeit staffeln
  • ArbZG-Schwellenwerte für automatische Warnungen aktivieren
  • No-Code Zusatzfelder für Home-Office-Regelung und Gehaltsvorstellung anlegen

🗄️ Data Models & Fields

RecruitingApplicationInterviews recruiting_application_interviews RLS Aktiv
13 Fields / Columns

Tabelle recruiting_application_interviews

Feldname Data Type Required Schlüssel Functional Meaning
application_id UUID Ja * FK ➔ recruiting_applications.id Feld application_id
scheduled_at DATETIME Ja * - Feld scheduled_at
interviewer_id UUID Nein - Feld interviewer_id
mode VARCHAR(32) Ja * - Feld mode
location VARCHAR(255) Nein - Feld location
feedback TEXT Nein - Feld feedback
rating INTEGER Nein - Feld rating
completed BOOLEAN Ja * - Feld completed
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
metadata JSONB Ja * - Feld metadata
RecruitingApplicationNotes recruiting_application_notes RLS Aktiv
8 Fields / Columns

Tabelle recruiting_application_notes

Feldname Data Type Required Schlüssel Functional Meaning
application_id UUID Ja * FK ➔ recruiting_applications.id Feld application_id
author_id UUID Nein - Feld author_id
body TEXT Ja * - Feld body
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
metadata JSONB Ja * - Feld metadata
RecruitingApplications recruiting_applications RLS Aktiv
23 Fields / Columns

Tabelle recruiting_applications

Feldname Data Type Required Schlüssel Functional Meaning
candidate_id UUID Ja * FK ➔ recruiting_candidates.id Feld candidate_id
vacancy_id UUID Ja * FK ➔ recruiting_job_vacancies.id Feld vacancy_id
applied_at DATETIME Ja * - Feld applied_at
status VARCHAR(48) Ja * - Feld status
stage VARCHAR(64) Nein - Feld stage
source VARCHAR(48) Ja * - Feld source
cover_letter TEXT Nein - Feld cover_letter
resume_document_id UUID Nein - Feld resume_document_id
notes TEXT Nein - Feld notes
consent_given BOOLEAN Ja * - Feld consent_given
consent_at DATETIME Nein - Feld consent_at
decided_at DATETIME Nein - Feld decided_at
rejection_reason TEXT Nein - Feld rejection_reason
hired_user_id UUID Nein - Feld hired_user_id
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
RecruitingCandidateSkills recruiting_candidate_skills RLS Aktiv
9 Fields / Columns

Tabelle recruiting_candidate_skills

Feldname Data Type Required Schlüssel Functional Meaning
candidate_id UUID Ja * FK ➔ recruiting_candidates.id Feld candidate_id
skill_name VARCHAR(128) Ja * - Feld skill_name
proficiency INTEGER Ja * - Feld proficiency
certified BOOLEAN Ja * - Feld certified
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
metadata JSONB Ja * - Feld metadata
RecruitingCandidates recruiting_candidates RLS Aktiv
20 Fields / Columns

Tabelle recruiting_candidates

Feldname Data Type Required Schlüssel Functional Meaning
first_name VARCHAR(128) Ja * - Feld first_name
last_name VARCHAR(128) Ja * - Feld last_name
email VARCHAR(320) Ja * - Feld email
phone VARCHAR(64) Nein - Feld phone
address_text TEXT Nein - Feld address_text
summary TEXT Nein - Feld summary
linkedin_url VARCHAR(255) Nein - Feld linkedin_url
source VARCHAR(48) Ja * - Feld source
resume_document_id UUID Nein - Feld resume_document_id
confidence NUMERIC(4, 3) Nein - Feld confidence
anonymized_at DATETIME Nein - Feld anonymized_at
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
RecruitingJobVacancies recruiting_job_vacancies RLS Aktiv
24 Fields / Columns

Tabelle recruiting_job_vacancies

Feldname Data Type Required Schlüssel Functional Meaning
title VARCHAR(255) Ja * - Feld title
description TEXT Nein - Feld description
department VARCHAR(128) Nein - Feld department
location VARCHAR(255) Nein - Feld location
employment_type VARCHAR(48) Ja * - Feld employment_type
salary_min NUMERIC(14, 2) Nein - Feld salary_min
salary_max NUMERIC(14, 2) Nein - Feld salary_max
salary_period VARCHAR(16) Ja * - Feld salary_period
status VARCHAR(32) Ja * - Feld status
publication_id UUID Nein - Feld publication_id
required_skills JSONB Ja * - Feld required_skills
pipeline_stages JSONB Ja * - Feld pipeline_stages
opened_at DATETIME Ja * - Feld opened_at
closed_at DATETIME Nein - Feld closed_at
owner_id UUID Nein - Feld owner_id
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

🔌 Entry Points (UI & APIs)

Art Method Endpoint / Path Titel & Zweck Required Role
⚡ REST API GET /api/v1/recruiting/applications
list_applications
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /api/v1/recruiting/applications/{application_id}
get_application
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /api/v1/recruiting/applications/{application_id}/interviews
list_interviews
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /api/v1/recruiting/applications/{application_id}/notes
list_notes
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /api/v1/recruiting/candidates
list_candidates
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /api/v1/recruiting/candidates/{candidate_id}
get_candidate_detail
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /api/v1/recruiting/vacancies
list_vacancies
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /api/v1/recruiting/vacancies/{vacancy_id}
get_vacancy
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /api/v1/recruiting/vacancies/{vacancy_id}/board
vacancy_board
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /api/v1/recruiting/vacancies/{vacancy_id}/match
match_vacancy
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /pub/jobs/{tenant_id}
job_list
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /pub/jobs/{tenant_id}/{vacancy_id}
job_detail
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /recruiting
recruiting_page
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /recruiting/candidates
recruiting_candidates_page
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /recruiting/candidates/new
recruiting_candidate_new_page
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /recruiting/candidates/{candidate_id}
recruiting_candidate_page
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /recruiting/new
recruiting_vacancy_new_page
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /recruiting/vacancies/{vacancy_id}
recruiting_vacancy_page
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API GET /recruiting/vacancies/{vacancy_id}/edit
recruiting_vacancy_edit_page
Semantic binding: inventory_only; mutation=False
recruiting
⚡ REST API PATCH /api/v1/recruiting/applications/{application_id}/status
update_application_status
Semantic binding: operator_surface; mutation=True
recruiting
⚡ REST API PATCH /api/v1/recruiting/candidates/{candidate_id}
update_candidate
Semantic binding: operator_surface; mutation=True
recruiting
⚡ REST API PATCH /api/v1/recruiting/interviews/{interview_id}/feedback
record_interview_feedback
Semantic binding: operator_surface; mutation=True
recruiting
⚡ REST API PATCH /api/v1/recruiting/vacancies/{vacancy_id}
update_vacancy
Semantic binding: operator_surface; mutation=True
recruiting
⚡ REST API POST /api/v1/recruiting/applications
create_application
Semantic binding: operator_surface; mutation=True
recruiting
⚡ REST API POST /api/v1/recruiting/applications/{application_id}/hire
hire_application
Semantic binding: operator_surface; mutation=True
recruiting
⚡ REST API POST /api/v1/recruiting/applications/{application_id}/interviews
schedule_interview
Semantic binding: operator_surface; mutation=True
recruiting
⚡ REST API POST /api/v1/recruiting/applications/{application_id}/notes
add_note
Semantic binding: operator_surface; mutation=True
recruiting
⚡ REST API POST /api/v1/recruiting/applications/{application_id}/reject
reject_application
Semantic binding: operator_surface; mutation=True
recruiting
⚡ REST API POST /api/v1/recruiting/applications/{application_id}/stage
move_application_stage
Semantic binding: operator_surface; mutation=True
recruiting
⚡ REST API POST /api/v1/recruiting/candidates
create_candidate
Semantic binding: operator_surface; mutation=True
recruiting
⚡ REST API POST /api/v1/recruiting/gdpr/anonymize
anonymize_expired
Semantic binding: operator_surface; mutation=True
recruiting
⚡ REST API POST /api/v1/recruiting/resume/parse
parse_resume
Semantic binding: operator_surface; mutation=True
recruiting
⚡ REST API POST /api/v1/recruiting/vacancies
create_vacancy
Semantic binding: operator_surface; mutation=True
recruiting
⚡ REST API POST /api/v1/recruiting/vacancies/{vacancy_id}/status
set_vacancy_status
Semantic binding: operator_surface; mutation=True
recruiting
⚡ REST API POST /pub/jobs/{tenant_id}/{vacancy_id}/apply
job_apply
Semantic binding: operator_surface; mutation=True
recruiting

🛡️ Regulatory & Compliance

Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:

  • GoBD Nachvollziehbarkeit
  • Mandanten-Isolation (PostgreSQL RLS)