Files
rechnungsgenerator/FORTSCHRITT.md
Claude cfa2266dd9 M1: Grundgerüst, Datenmodell und Admin
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
2026-07-10 23:53:56 +00:00

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 via django-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; Firma auf 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