- DB-Migration: invoices + invoice_items Tabellen inkl. Indizes - routes/invoices.py: vollständiger Admin-Router (prefix /api/admin/invoices) - CRUD: Liste, Detail, Erstellen, Senden, Bezahlen, Stornieren - PDF-Generierung via fpdf2 mit §14-UStG-Pflichtangaben (Kleinunternehmer-Hinweis) - Cashflow-Übersicht und Quartalsbericht - PDF-Download-Endpunkt - Speicherung in /scaninput + optionaler Paperless-Upload - mailer.py: send_email() + Backends um optionale PDF-Anhänge erweitert (Brevo: base64, SMTP: MIMEApplication) - main.py: invoices_router registriert - docker-compose.yml: /volume1/scaninput:/scaninput Volume hinzugefügt
24 lines
841 B
YAML
24 lines
841 B
YAML
services:
|
|
banyaro:
|
|
build: .
|
|
container_name: banyaro
|
|
restart: on-failure:5
|
|
ports:
|
|
- "3010:8000" # DS-intern, NPM leitet banyaro.app weiter
|
|
volumes:
|
|
- ./data:/data # SQLite + Media persistent
|
|
- /volume1/scaninput:/scaninput
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
- DB_PATH=/data/banyaro.db
|
|
- MEDIA_DIR=/data/media
|
|
- VAPID_PUBLIC_KEY=BMKbFAmpsqJ-eFef_4XJcYpuxPWqBNAoy9buMNnMSa6ijcPzltboHi_YccPKJrUD0isBez-vJIzAgjnLTWkzcC0
|
|
- VAPID_PRIVATE_KEY=8PWa9vvwMqtqsJEJGcwmiLhR0_Yl7duVX3wmWiKS878
|
|
- VAPID_CONTACT=mailto:admin@banyaro.app
|
|
- UMAMI_URL=https://umami.motocamp.de
|
|
healthcheck:
|
|
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/')"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|