feat(helpdesk): Übergabe assignment workflow

- New statuses: under_review
- New DB fields: assigned_to, assigned_by, assigned_at, due_date (migration 012)
- HandoverNotificationService: emails on assign and review-request
- HandoverService: assign(), submitForReview(), resendNotification()
- Assign page: manager selects employee + due date, resend notification
- Create wizard: manager can assign during creation (step 1)
- Edit page: "Submit for review" button for assignee, assign link for manager
- List page: open/closed tabs, non-managers see only their assigned handovers
- Email templates: handover_assigned + handover_review_requested (de/en)
- i18n keys added for de and en

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
aminovfariz
2026-06-01 14:35:03 +02:00
parent 4f38911fce
commit c32a0f8c31
26 changed files with 918 additions and 10 deletions

View File

@@ -0,0 +1,34 @@
<!doctype html>
<html lang="de">
<body style="font-family: Arial, sans-serif; line-height: 1.5; color: #111;">
{{email_header}}
<p>Hallo {{assignee_name}},</p>
<p>dir wurde eine <strong>Übergabe</strong> zugewiesen. Bitte fülle das Protokoll vollständig aus.</p>
<table style="border-collapse: collapse; margin: 16px 0;">
<tr>
<td style="padding: 4px 12px 4px 0; color: #555;">Kunde:</td>
<td style="padding: 4px 0;"><strong>{{debitor_name}}</strong></td>
</tr>
<tr>
<td style="padding: 4px 12px 4px 0; color: #555;">Domain:</td>
<td style="padding: 4px 0;">{{domain_url}}</td>
</tr>
<tr>
<td style="padding: 4px 12px 4px 0; color: #555;">Zugewiesen von:</td>
<td style="padding: 4px 0;">{{assigned_by_name}}</td>
</tr>
<tr>
<td style="padding: 4px 12px 4px 0; color: #555;">Fällig bis:</td>
<td style="padding: 4px 0;">{{due_date}}</td>
</tr>
</table>
<p>
<a href="{{handover_url}}" style="display: inline-block; padding: 10px 20px; background: #2563eb; color: #fff; text-decoration: none; border-radius: 4px;">
Übergabe öffnen
</a>
</p>
<p>Bitte fülle alle erforderlichen Felder aus und klicke anschließend auf <em>„Zur Prüfung einreichen"</em>.</p>
<p>Viele Grüße<br>{{app_name}}</p>
{{email_footer}}
</body>
</html>

View File

@@ -0,0 +1,17 @@
{{email_header_text}}
Hallo {{assignee_name}},
dir wurde eine Übergabe zugewiesen. Bitte fülle das Protokoll vollständig aus.
Kunde: {{debitor_name}}
Domain: {{domain_url}}
Zugewiesen von: {{assigned_by_name}}
Fällig bis: {{due_date}}
Übergabe öffnen: {{handover_url}}
Bitte fülle alle erforderlichen Felder aus und klicke anschließend auf „Zur Prüfung einreichen".
Viele Grüße
{{app_name}}
{{email_footer_text}}

View File

@@ -0,0 +1,29 @@
<!doctype html>
<html lang="de">
<body style="font-family: Arial, sans-serif; line-height: 1.5; color: #111;">
{{email_header}}
<p>Hallo {{manager_name}},</p>
<p><strong>{{assignee_name}}</strong> hat eine Übergabe zur Prüfung eingereicht.</p>
<table style="border-collapse: collapse; margin: 16px 0;">
<tr>
<td style="padding: 4px 12px 4px 0; color: #555;">Kunde:</td>
<td style="padding: 4px 0;"><strong>{{debitor_name}}</strong></td>
</tr>
<tr>
<td style="padding: 4px 12px 4px 0; color: #555;">Domain:</td>
<td style="padding: 4px 0;">{{domain_url}}</td>
</tr>
<tr>
<td style="padding: 4px 12px 4px 0; color: #555;">Eingereicht von:</td>
<td style="padding: 4px 0;">{{assignee_name}}</td>
</tr>
</table>
<p>
<a href="{{handover_url}}" style="display: inline-block; padding: 10px 20px; background: #2563eb; color: #fff; text-decoration: none; border-radius: 4px;">
Übergabe prüfen
</a>
</p>
<p>Viele Grüße<br>{{app_name}}</p>
{{email_footer}}
</body>
</html>

View File

@@ -0,0 +1,14 @@
{{email_header_text}}
Hallo {{manager_name}},
{{assignee_name}} hat eine Übergabe zur Prüfung eingereicht.
Kunde: {{debitor_name}}
Domain: {{domain_url}}
Eingereicht von: {{assignee_name}}
Übergabe prüfen: {{handover_url}}
Viele Grüße
{{app_name}}
{{email_footer_text}}

View File

@@ -0,0 +1,34 @@
<!doctype html>
<html lang="en">
<body style="font-family: Arial, sans-serif; line-height: 1.5; color: #111;">
{{email_header}}
<p>Hi {{assignee_name}},</p>
<p>a <strong>handover protocol</strong> has been assigned to you. Please fill it in completely.</p>
<table style="border-collapse: collapse; margin: 16px 0;">
<tr>
<td style="padding: 4px 12px 4px 0; color: #555;">Customer:</td>
<td style="padding: 4px 0;"><strong>{{debitor_name}}</strong></td>
</tr>
<tr>
<td style="padding: 4px 12px 4px 0; color: #555;">Domain:</td>
<td style="padding: 4px 0;">{{domain_url}}</td>
</tr>
<tr>
<td style="padding: 4px 12px 4px 0; color: #555;">Assigned by:</td>
<td style="padding: 4px 0;">{{assigned_by_name}}</td>
</tr>
<tr>
<td style="padding: 4px 12px 4px 0; color: #555;">Due date:</td>
<td style="padding: 4px 0;">{{due_date}}</td>
</tr>
</table>
<p>
<a href="{{handover_url}}" style="display: inline-block; padding: 10px 20px; background: #2563eb; color: #fff; text-decoration: none; border-radius: 4px;">
Open handover
</a>
</p>
<p>Please fill in all required fields and then click <em>"Submit for review"</em>.</p>
<p>Best regards<br>{{app_name}}</p>
{{email_footer}}
</body>
</html>

View File

@@ -0,0 +1,17 @@
{{email_header_text}}
Hi {{assignee_name}},
a handover protocol has been assigned to you. Please fill it in completely.
Customer: {{debitor_name}}
Domain: {{domain_url}}
Assigned by: {{assigned_by_name}}
Due date: {{due_date}}
Open handover: {{handover_url}}
Please fill in all required fields and then click "Submit for review".
Best regards
{{app_name}}
{{email_footer_text}}

View File

@@ -0,0 +1,29 @@
<!doctype html>
<html lang="en">
<body style="font-family: Arial, sans-serif; line-height: 1.5; color: #111;">
{{email_header}}
<p>Hi {{manager_name}},</p>
<p><strong>{{assignee_name}}</strong> has submitted a handover for review.</p>
<table style="border-collapse: collapse; margin: 16px 0;">
<tr>
<td style="padding: 4px 12px 4px 0; color: #555;">Customer:</td>
<td style="padding: 4px 0;"><strong>{{debitor_name}}</strong></td>
</tr>
<tr>
<td style="padding: 4px 12px 4px 0; color: #555;">Domain:</td>
<td style="padding: 4px 0;">{{domain_url}}</td>
</tr>
<tr>
<td style="padding: 4px 12px 4px 0; color: #555;">Submitted by:</td>
<td style="padding: 4px 0;">{{assignee_name}}</td>
</tr>
</table>
<p>
<a href="{{handover_url}}" style="display: inline-block; padding: 10px 20px; background: #2563eb; color: #fff; text-decoration: none; border-radius: 4px;">
Review handover
</a>
</p>
<p>Best regards<br>{{app_name}}</p>
{{email_footer}}
</body>
</html>

View File

@@ -0,0 +1,14 @@
{{email_header_text}}
Hi {{manager_name}},
{{assignee_name}} has submitted a handover for review.
Customer: {{debitor_name}}
Domain: {{domain_url}}
Submitted by: {{assignee_name}}
Review handover: {{handover_url}}
Best regards
{{app_name}}
{{email_footer_text}}