snapshot: preserve request status retry and i18n labels

This commit is contained in:
Md Bayazid Bostame
2026-03-25 20:42:01 +01:00
parent a8f7eadbc6
commit 197bd3c226
10 changed files with 851 additions and 583 deletions

View File

@@ -189,6 +189,8 @@ docker compose exec -T web python manage.py run_staging_e2e_check</code></pre>
<li>Use real PDF generation tests when changing PDF templates or intro/offboarding document logic.</li>
<li>Use the dedicated Release Checklist page as the final go/no-go runbook before shipping changes.</li>
<li>The automated bilingual smoke tests now cover DE/EN request language capture and English email-template rendering.</li>
<li>Onboarding and offboarding request objects now expose explicit processing state and last-error fields. Async tasks are responsible for transitioning <code>submitted → processing → completed/failed</code>.</li>
<li>The Requests Dashboard includes a retry action for failed requests. Retries reset the error text, set the request back to <code>submitted</code>, and enqueue the appropriate Celery task again.</li>
</ul>
<h2 id="deploy">12) Deployment and Release Checklist</h2>

View File

@@ -178,6 +178,7 @@
<li><strong>Welcome Emails:</strong> scheduled jobs, pause/resume/cancel/trigger now.</li>
<li><strong>Audit Log:</strong> staff-only trace of important admin changes such as builder edits, settings updates, PDF generation, welcome-email operations, and request deletions. Supports filtering by action, user, and date range.</li>
<li><strong>Requests Dashboard:</strong> search records, open PDFs, delete records (single/bulk for staff).</li>
<li><strong>Request Status & Retry:</strong> onboarding and offboarding requests now carry explicit processing state (<code>submitted</code>, <code>processing</code>, <code>completed</code>, <code>failed</code>). Failed requests expose the last error and can be retried from the dashboard.</li>
<li><strong>Einweisungs- und Übergabeprotokoll:</strong> staff-only <code>PDF erzeugen</code>, <code>Neu erzeugen</code>, and <code>PDF öffnen</code> actions directly on onboarding rows in the Requests Dashboard.</li>
<li><strong>Einweisung durchführen:</strong> staff-only live checklist page opened from onboarding rows, with draft/completed status, notes, progress tracking, and a separate live-status PDF export.</li>
<li><strong>Project Wiki:</strong> this documentation page.</li>

View File

@@ -189,6 +189,10 @@
{% else %}
<span class="person-meta">{% trans "Noch nicht verfügbar" %}</span>
{% endif %}
<div class="person-meta" style="margin-top:8px;">{{ row.status }}</div>
{% if row.status_key == 'failed' and row.last_error %}
<div class="person-meta" style="margin-top:6px; color:#8e1e1e;">{{ row.last_error|truncatechars:140 }}</div>
{% endif %}
</td>
{% if request.user.is_staff %}
<td class="actions-cell intro-panel">
@@ -232,6 +236,12 @@
{% endif %}
</td>
<td class="actions-cell">
{% if row.status_key == 'failed' %}
<form method="post" action="/requests/retry/{{ row.kind_slug }}/{{ row.id }}/" class="inline-delete" onsubmit="return confirm('Eintrag erneut verarbeiten?');">
{% csrf_token %}
<button class="btn btn-secondary" type="submit">{% trans "Erneut versuchen" %}</button>
</form>
{% endif %}
<form method="post" action="/requests/" class="inline-delete" onsubmit="return confirm('Eintrag wirklich löschen?');">
{% csrf_token %}
<button class="btn btn-secondary" type="submit" name="single_delete" value="{{ row.kind_slug }}:{{ row.id }}">{% trans "Löschen" %}</button>