feat(nachbetrachtung): Abgabe-Checkliste, Dokumentation und Nachbetrachtung (WP-0009)

Vollständigkeitsprüfung mit Freigaben-Check, Abgabe dokumentieren mit
Nachweis-Upload, Nachbetrachtung mit Kickoff-Aufgabe (gewonnen) und
Alpine.js-gesteuerter Verlustanalyse (verloren). 5 Tests grün.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-05-11 15:09:38 +02:00
parent bca4eb15d8
commit a1cc317b3b
10 changed files with 583 additions and 12 deletions

View file

@ -0,0 +1,42 @@
{% extends "base.html" %}
{% block title %}Abgabe dokumentieren — {{ ausschreibung.titel }}{% endblock %}
{% block content %}
<div class="flex items-center justify-between mb-4">
<h1 class="page-title">Abgabe dokumentieren</h1>
<a href="{% url 'ausschreibungen:nachbetrachtung:abgabe:checkliste' ausschreibung.pk %}" class="btn-ghost text-xs">← Checkliste</a>
</div>
<div class="max-w-xl">
<form method="post" enctype="multipart/form-data" class="card space-y-4">
{% csrf_token %}
<div>
<label class="form-label">{{ form.abgabe_zeitpunkt.label }}</label>
{{ form.abgabe_zeitpunkt }}
{% if form.abgabe_zeitpunkt.errors %}<p class="text-xs text-red-600 mt-1">{{ form.abgabe_zeitpunkt.errors.0 }}</p>{% endif %}
</div>
<div>
<label class="form-label">{{ form.abgabe_plattform.label }}</label>
{{ form.abgabe_plattform }}
</div>
<div>
<label class="form-label">{{ form.verantwortlicher.label }}</label>
{{ form.verantwortlicher }}
</div>
<div>
<label class="form-label">{{ form.abgabenachweis.label }}</label>
{{ form.abgabenachweis }}
<p class="text-xs text-slate-400 mt-1">Eingangsbestätigung, Screenshot o.ä.</p>
</div>
<div>
<label class="form-label">{{ form.kommentar.label }}</label>
{{ form.kommentar }}
</div>
<div class="flex gap-3 pt-2">
<button type="submit" class="btn-primary">Abgabe bestätigen</button>
<a href="{% url 'ausschreibungen:nachbetrachtung:abgabe:checkliste' ausschreibung.pk %}" class="btn-ghost">Abbrechen</a>
</div>
</form>
</div>
{% endblock %}