|
|
c8ae514c01
|
Feature: Tierschutz-Check, KI-Züchter-Features, Export, SEO-Update
Tierschutz-System (immer aktiv, nicht abschaltbar):
- welfare_check.py: regelbasierte Prüfung IK, Alter, Deckpause, Wurfanzahl, Genetik
- Grün/Gelb/Rot-Modal bei Wurf anlegen + Probeverpaarung
- Bei kritischem Befund + "Trotzdem fortfahren" → automatische Admin-Mail
- Tierschutz-Check nie durch Nutzer deaktivierbar
KI-Züchter-Features (pro User an/abschaltbar außer Tierschutz):
- routes/zucht_ki.py: 5 Endpunkte — Wurfankündigung, Genetik-Erklärung,
Paarungsanalyse, Hund-Beschreibung, Jahresbericht
- Toggles in Einstellungen (ki_zucht_* Felder)
- KI-Buttons in litters.js + zuchthunde.js
KI-Routing: Privilegierte Rollen (Admin, Züchter, Moderator, Manager)
nutzen Claude Sonnet primär, lokales LLM als Fallback
Datenexport: routes/breeder_export.py — ZIP mit HTML-Dossier + ODS
(odfpy hinzugefügt in requirements.txt)
Admin-Profil: POST /admin/breeder/create-profile für Schnellprofil ohne
Antragsprozess; Admin-Rolle bleibt erhalten
Wurfformular: Dropdown aus Zuchtkartei für Vater/Mutter mit Auto-Fill;
litters.vater_id + mutter_id als FK auf zucht_hunde
Probeverpaarung: heart-fill Icon + Welfare-Block im Ergebnis
Landing Page: Züchter-Section + Feature-Gruppe, Meta-Tags, JSON-LD,
keywords, softwareVersion 2.1
SEO: llms.txt vollständig überarbeitet, robots.txt Züchter-Pfade,
sitemap.xml um Wurfbörse + Züchter-Profile erweitert
SW by-v474, APP_VER 451
|
2026-04-28 19:49:54 +02:00 |
|
|
|
15c696d409
|
requirements: openai 1.59.0→1.59.2 (korrekte Version)
|
2026-04-24 18:04:15 +02:00 |
|
|
|
6125027dcf
|
requirements: openai 1.50→1.59 (Fix proxies-Fehler mit httpx 0.28)
|
2026-04-24 18:03:22 +02:00 |
|
|
|
71e588a240
|
Security Nice-to-Have: Dockerfile, Magic-Bytes, Path-Traversal, TABLE_MAP, Deps
- Dockerfile: non-root user appuser, chown /data + /app
- media_utils: validate_upload() Magic-Byte-Check (JPEG/PNG/GIF/WebP/MP4/WebM)
- media_utils: safe_media_path() Path-Traversal-Schutz beim Löschen
- diary/health/dogs: safe_media_path() statt os.path.join + lstrip
- diary: validate_upload() vor jedem Medien-Upload
- forum: _LIKE_TABLE dict statt dynamischer String-Interpolation
- requirements: uvicorn 0.34, PyJWT 2.10.1, pydantic 2.10.6, bcrypt 4.3, httpx 0.28.1, anthropic 0.49
- SW by-v319, APP_VER 307
|
2026-04-23 18:42:05 +02:00 |
|
|
|
5518064be3
|
Feat: APScheduler — täglich Push für Health-Erinnerungen
- apscheduler==3.10.4 in requirements.txt
- scheduler.py: AsyncIOScheduler, täglich 08:00 Uhr (Europe/Berlin)
- Job prüft naechstes IN (heute, in 7 Tagen, gestern):
heute → "Heute fällig", 7 Tage → Vorwarnung, gestern → Überfällig
- Nur Impfung, Entwurmung, Medikament
- misfire_grace_time=3600 (robust nach Container-Neustart)
- Scheduler start/stop im FastAPI lifespan
|
2026-04-13 20:49:49 +02:00 |
|
|
|
6f48ec581d
|
Backend Sprint 2+3: Health-Modul, Multi-Dog Tagebuch, Pillow, Migrations
- database.py: diary_dogs + walk_participant_dogs Tabellen, idempotente
Migration für Health-Felder (charge_nr, kosten, diagnose, …), Backfill
- routes/health.py: vollständiges Health-Modul (war Stub), CRUD für
Impfung/Entwurmung/Tierarzt/Medikament/Gewicht/Allergie/Dokument
- routes/diary.py: Multi-Dog n:m via diary_dogs (dog_ids in allen Endpoints)
- routes/dogs.py: Foto-Upload konvertiert HEIC/PNG/WebP → JPEG via Pillow
- routes/poison.py: Resolve mit Grundauswahl + Soft-Delete (geloest_von/at/grund)
- ki.py: health_summary() für KI-Gesundheitsbericht
- main.py: /favicon.ico Route
- requirements.txt: Pillow 11.2.1 + pillow-heif 0.22.0
|
2026-04-13 19:29:51 +02:00 |
|
|
|
00be2bbcd5
|
Sprint 0: Backend, Docker, KI-Layer mit Free/Premium-Trennung
|
2026-04-12 16:39:34 +02:00 |
|