Django-5.2-Projekt mit uv, django-environ und Docker-Compose-Setup (web + Postgres, WeasyPrint-Systembibliotheken im Image). Vollständiges Datenmodell (Firma, Therapeut, Auftraggeber, Teilnehmer, Leistungsart, Leistung, InvoiceLog, InvoiceCounter) mit Admin, Login-Flow und Platzhalter-Dashboard. Fortschritt in FORTSCHRITT.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016yy3uodsai6Ytt3GJ7tBdz
3.0 KiB
Umsetzungsfortschritt (Meilensteine)
Ausführungsplan für das MVP aus
SPEZIFIKATION.md/UMSETZUNGSPLAN.md. Diese Datei hält den Fortschritt fest, damit die Arbeit später fortgesetzt werden kann.
Auslieferung: in Meilenstein-Checkpoints (nach jedem Meilenstein Review).
Kanonische Laufzeit: Docker Compose (web + Postgres). WeasyPrint-Systembibliotheken
kommen aus dem Docker-Image, nicht vom Host.
Status
| MS | Inhalt | Status |
|---|---|---|
| M1 | Grundgerüst + Datenmodell + Admin | ✅ fertig |
| M2 | Auth + Leistungserfassung (Monatsblatt-Grid) | ⬜ offen |
| M3 | On-the-fly Rechnungslegung + ZUGFeRD | ⬜ offen |
| M4 | Storno / Korrektur-Workflow | ⬜ offen |
| M5 | Dashboard (Controlling) + Test-Suite | ⬜ offen |
M1 — erledigt
uv-Projekt (pyproject.toml,uv.lock,.python-version=3.13), Django 5.2, psycopg3, WeasyPrint, drafthorse, factur-x, crispy-forms/bootstrap5, django-tables2, whitenoise, pytest-django.config/(Settings viadjango-environ,DATABASE_URL, deutsche Lokalisierung).- Datenmodell
abrechnung/models.py:Firma(Singleton),Therapeut,Auftraggeber,Teilnehmer(fest 1 Therapeut),Leistungsart,InvoiceLog(Journal, keine Dokumente),Leistung(ehem.TherapySession;auftraggeberüber Teilnehmer abgeleitet;betrag),InvoiceCounter(Zähler-Zeile für lückenlose Nummern in M3). - Admin für alle Entitäten;
Firmaauf eine Instanz begrenzt. - Auth (Login/Logout),
base.html, Platzhalter-Dashboard. - Docker: multi-stage
Dockerfile(uv-Builder → schlanke Runtime mit pango/cairo/gdk-pixbuf + Fonts),entrypoint.sh(wait-for-db → migrate → collectstatic → gunicorn),docker-compose.yml(web + postgres:16) + Dev-Override,.dockerignore,.env.example.
Verifiziert: manage.py check sauber; Migrationen erzeugt+angewandt; HTTP-Smoketest
(Login 200, / anon→Login 302 / auth 200, Admin 200); pytest grün (3 Modelltests);
docker compose config valide.
Offen (Umgebung ohne Docker-Daemon): docker compose up (Image-Build + web+db live)
muss in einer Umgebung mit laufendem Docker-Daemon bestätigt werden.
Als Nächstes: M2
Django-Login-Flow steht bereits. Zu bauen: gruppierte Erfassungs-View
Therapeut + Monat → je zugeordnetem Teilnehmer ein einklappbares Monatsblatt
(modelformset_factory(Leistung): Datum · Leistungsart · Stunden · Satz · Beschreibung),
Stundensatz aus Leistungsart vorbelegt, Bestandseinträge vorgeladen, minimales JS
(static/abrechnung/monatsblatt.js: Zeilen klonen, Tab/Enter-Navigation, Live-Summen).
Lokaler Start (Entwicklung)
uv sync
uv run python manage.py migrate # nutzt SQLite, wenn keine DATABASE_URL gesetzt
uv run python manage.py createsuperuser
uv run python manage.py runserver
Start via Docker (kanonisch)
cp .env.example .env # Werte anpassen
docker compose up --build
docker compose exec web python manage.py createsuperuser