# ApiCore – Aufgabenliste Abgeleitet aus [`docs/lastenheft.md`](docs/lastenheft.md) Abschnitt 26. Reihenfolge innerhalb MVP ist Bau-Reihenfolge (siehe Vorgabe: Auth zuerst, dann Kette bis Export). Haken erst setzen, wenn Lint+Typecheck+Tests+Build für das jeweilige Projekt grün sind UND das Modul manuell/per Test verifiziert wurde. ## MVP (MUSS) – Abschnitt 26, Liste 1 ### 0. Grundgerüst - [x] Backend: NestJS-Projekt scaffolden, Prisma init, `/api/v1` Versioning, Swagger unter `/api/v1/docs`, `/health` + `/health/ready` - [x] Backend: `.env.example` (`DATABASE_URL`, `JWT_ACCESS_SECRET`, `JWT_REFRESH_SECRET`) - [x] Backend: Prisma-Schema für alle MVP-Entitäten (siehe ARCHITECTURE.md §4, §6), erste Migration - [x] Frontend: Next.js (App Router, TS) scaffolden, Tailwind + shadcn/ui, PWA-Manifest, TanStack Query Provider - [x] `deploy/k8s/`: Dockerfiles (Backend, Frontend), Deployment/Service/Ingress, ConfigMap/Secret-Vorlagen ### 1. Benutzerverwaltung / Auth - Backend: `AuthModule`, `UsersModule`, `AuditModule` (Grundstruktur) - Endpunkte: `POST /api/v1/auth/login`, `POST /api/v1/auth/refresh`, `POST /api/v1/auth/logout`, `GET /api/v1/users`, `POST /api/v1/users`, `GET/PATCH /api/v1/users/:id`, `POST /api/v1/users/:id/deactivate` - Frontend: `/login`, `/settings/users` (nur Administrator) - [x] Rollen-Enum + Guards (`JwtAuthGuard`, `RolesGuard`, `@Roles()`) implementiert und in jedem künftigen Modul verpflichtend - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 2. Bienenstände - Backend: `ApiariesModule` - Endpunkte: `GET/POST /api/v1/apiaries`, `GET/PATCH /api/v1/apiaries/:id`, `POST /api/v1/apiaries/:id/deactivate` - Frontend: `/apiaries`, `/apiaries/[id]`, `/apiaries/new` - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 3. Völker - Backend: `ColoniesModule` (inkl. `ColonyApiaryHistory`, `ColonyLineage` für Ableger/Vereinigung) - Endpunkte: `GET/POST /api/v1/colonies`, `GET/PATCH /api/v1/colonies/:id`, `POST /api/v1/colonies/:id/move`, `POST /api/v1/colonies/:id/split`, `POST /api/v1/colonies/:id/merge`, `POST /api/v1/colonies/:id/dissolve`, `GET /api/v1/colonies/:id/history` - Frontend: `/colonies`, `/colonies/[id]`, `/colonies/new` - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 4. Königinnen - Backend: `QueensModule` (inkl. `QueenColonyHistory`) - Endpunkte: `GET/POST /api/v1/queens`, `GET/PATCH /api/v1/queens/:id`, `POST /api/v1/queens/:id/assign-colony`, `GET /api/v1/queens/:id/history` - Frontend: `/queens`, `/queens/[id]`, `/queens/new` - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 5. Durchsichten - Backend: `InspectionsModule` - Endpunkte: `GET/POST /api/v1/inspections`, `GET /api/v1/inspections/:id`, `GET /api/v1/colonies/:id/inspections`, `POST /api/v1/inspections/:id/create-task` - Frontend: `/inspections/new` (mobile-optimiertes Schnellformular), `/colonies/[id]` Tab "Durchsichten" - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 6. Aufgaben - Backend: `TasksModule` (polymorphe Verknüpfung: Colony/Apiary/Queen/HoneyBatch/Storage/General) - Endpunkte: `GET/POST /api/v1/tasks`, `GET/PATCH /api/v1/tasks/:id`, `POST /api/v1/tasks/:id/complete` - Frontend: `/tasks` (Liste, Filter nach Status/Priorität/Fälligkeit) - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 7. Varroamessungen - Backend: `VarroaModule` - Endpunkte: `GET/POST /api/v1/varroa-measurements`, `GET /api/v1/colonies/:id/varroa-measurements` - Frontend: `/varroa/new`, `/colonies/[id]` Tab "Varroa" mit Verlaufsgrafik - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 8. Behandlungen - Backend: `TreatmentsModule` - Endpunkte: `GET/POST /api/v1/treatments`, `GET /api/v1/colonies/:id/treatments` - Frontend: `/treatments/new`, `/colonies/[id]` Tab "Behandlungen" - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 9. Fütterungen - Backend: `FeedingsModule` - Endpunkte: `GET/POST /api/v1/feedings`, `GET /api/v1/colonies/:id/feedings`, `GET /api/v1/colonies/:id/feedings/summary` - Frontend: `/feedings/new`, `/colonies/[id]` Tab "Fütterung" - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 10. Ernten (inkl. Schleuderung als Fundament der Chargenkette) - Backend: `HarvestsModule`, `ExtractionsModule` - Endpunkte: `GET/POST /api/v1/harvests`, `GET /api/v1/harvests/:id`, `GET/POST /api/v1/extractions`, `GET /api/v1/extractions/:id` - Frontend: `/harvests/new`, `/harvests/[id]`, `/extractions/new` - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 11. Honigchargen - Backend: `HoneyBatchesModule` (inkl. Honigmessungen, siehe ARCHITECTURE.md Annahme 1) - Endpunkte: `GET/POST /api/v1/honey-batches`, `GET /api/v1/honey-batches/:id`, `GET /api/v1/honey-batches/:id/traceability`, `POST /api/v1/honey-batches/:id/measurements` - Frontend: `/honey-batches`, `/honey-batches/[id]` (inkl. Rückverfolgbarkeits-Ansicht) - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 12. Grundlegende Lagerverwaltung - Backend: `StorageModule` (StorageContainer, StockItem, StockMovement) - Endpunkte: `GET/POST /api/v1/storage-containers`, `GET/POST /api/v1/stock-items`, `POST /api/v1/stock-items/:id/movements` - Frontend: `/storage` - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 13. Dashboard - Backend: `DashboardModule` - Endpunkte: `GET /api/v1/dashboard/summary`, `GET /api/v1/dashboard/alerts` - Frontend: `/dashboard` (Startseite nach Login) - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 14. Suche und Filter - Backend: `SearchModule` (`GET /api/v1/search?q=`), Filter-Query-Parameter in bestehenden List-Endpunkten (Standort, Status, Zeitraum etc., kombinierbar) - Frontend: `/search`, Filterleisten in allen Listen-Views - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 15. Responsive Smartphone-Oberfläche - Frontend: Mobile-first-Layout für alle o.g. Views verifiziert (Touch-Targets, Bottom-Nav, "+ Neu"-Schnellaktion permanent erreichbar) - [x] Manuell auf simulierter Smartphone-Breite (< 480px) und Tablet-Breite geprüft ### 16–18. API, API-Dokumentation, Rollen/Berechtigungen - Cross-cutting, wird pro Modul mitgeliefert (jeder Endpunkt in Swagger, jeder Endpunkt mit Rollen-Guard) - [x] Abschließende Prüfung: alle Endpunkte in `/api/v1/docs` sichtbar, alle mit Rollenprüfung ### 19. Audit-Log (vollständiges Modul inkl. Abfrage/UI) - Backend: `AuditModule` erweitert um Abfrage-Endpunkte (Grundstruktur bereits in Schritt 1 gebaut, hier UI + Query-API) - Endpunkte: `GET /api/v1/audit-log?entityType=&entityId=` - Frontend: `/settings/audit-log` (nur Administrator) - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 20. Backupfähigkeit - [x] Prisma-Migrationen reproduzierbar (kein `db push` in Produktion, nur `migrate deploy`) - [x] Backup-/Restore-Strategie in ARCHITECTURE.md dokumentiert - [x] `/health/ready` prüft DB-Erreichbarkeit ### 21. Datenexport - Backend: `ExportModule` - Endpunkte: `GET /api/v1/export/colonies.csv`, `GET /api/v1/export/honey-batches.csv`, `GET /api/v1/export/:report.pdf`, `GET /api/v1/export/:entity.json` - Frontend: Export-Buttons in den jeweiligen Listen-Views - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### MVP-Abschluss - [x] Gesamter Backend-Build grün (`lint`, `typecheck`, `test`, `test:e2e`, `build`) - [x] Gesamter Frontend-Build grün (`lint`, `typecheck`, `test`, `build`) - [x] Rückverfolgbarkeitskette Volk → Durchsicht → Behandlung → Ernte → Schleuderung → Honigcharge → Lager end-to-end manuell verifiziert - [x] Alle Erfolgskriterien aus Abschnitt 30 stichprobenartig beantwortbar ## v1.x (SOLL) – Abschnitt 26, Liste 2 Reihenfolge = Bau-Reihenfolge. Gleiche Haken-Regel wie MVP: erst setzen, wenn Lint+Typecheck+Tests+Build grün UND manuell/per Test verifiziert. ### R. Redesign (grundlegend) - [x] Design-Tokens: warme Honig-/Wachs-Farbpalette (Amber-Primär, Salbeigrün-Sekundär, Warnung/Erfolg), Space Grotesk (Überschrift) + Inter (Fließtext) + IBM Plex Mono (Codes/IDs) - [x] Navigation, Dashboard, Login neu gestaltet (Hexagon-Markenzeichen, aktiver Link-Zustand, Waben-Signaturmuster) - [ ] Verbleibende Bestandsseiten (Listen/Details aller MVP-Module) auf einheitlichen Karten-/Badge-/Icon-Stil durchgezogen - [ ] Alle neuen v1.x-Module folgen dem Redesign von Anfang an (kein Nacharbeiten nötig) ### 22. QR-Code-System - Backend: `QrModule` – erzeugt QR-Code (PNG/SVG) pro Objekt, kodiert Deep-Link (`/colonies/:id`, bei Volk direkt `/inspections/new?colonyId=:id` gemäß Lastenheft-Begründung "reduziert Auswahlaufwand") - Endpunkte: `GET /api/v1/qr/:entityType/:id.svg` für `entityType` ∈ `colonies|apiaries|queens|honey-batches|storage-containers` - Frontend: "QR-Code"-Button/Dialog auf den jeweiligen Detailseiten, druckfreundliche Ansicht - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 23. Abfüllungen und Produkte - Backend: `BottlingModule` (`BottlingBatch`), `ProductsModule` (`Product`); Abfüllung reduziert `HoneyBatch.amount` transaktional - Endpunkte: `GET/POST /api/v1/bottling-batches`, `GET /api/v1/bottling-batches/:id`, `GET/POST /api/v1/products`, `GET/PATCH /api/v1/products/:id` - Frontend: `/bottling/new`, `/bottling/:id`, `/products`, `/products/new` - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 24. Inventar - Backend: `EquipmentModule` (`Equipment`: Inventarnummer, Bezeichnung, Hersteller, Kaufdatum, Zustand, Standort, Wartungsdatum) - Endpunkte: `GET/POST /api/v1/equipment`, `GET/PATCH /api/v1/equipment/:id` - Frontend: `/equipment`, `/equipment/new`, `/equipment/:id` - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 25. Kalender - Backend: `CalendarModule` – aggregiert Durchsichten, Aufgaben, Behandlungen, Fütterungen, Ernten, Königinnenarbeiten in einem Zeitfenster - Endpunkte: `GET /api/v1/calendar?from=&to=&apiaryId=` - Frontend: `/calendar` (Monats-/Wochenansicht) - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 26. Benachrichtigungssystem - Backend: `NotificationsModule` (`Notification`: Priorität INFO/HINWEIS/WARNUNG/KRITISCH, Nachricht, verknüpftes Objekt, gelesen); erzeugt aus Automatisierungen/Schwellenwerten - Endpunkte: `GET /api/v1/notifications`, `POST /api/v1/notifications/:id/read` - Frontend: Glocken-Icon in der Navigation mit Liste/Badge für ungelesene Einträge - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 27. Statistik und Reporting - Backend: `StatisticsModule` – Auswertungen gemäß Abschnitt 4.26 (Volksstärke-Entwicklung, Völkerverluste, Königinnen-Ertrag/Lebensdauer, Standort-Ertrag, Varroa-Verlauf, Honigertrag pro Volk/Stand/Jahr, Futterverbrauch) - Endpunkte: `GET /api/v1/statistics/{colonies|queens|apiaries|varroa|honey|feeding}` - Frontend: `/statistics` mit Diagrammen - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 28. Webhooks - Backend: `WebhooksModule` (`WebhookSubscription`: URL, Events, Secret, aktiv); Event-Dispatcher an bestehende Services angehängt (`colony.created`, `inspection.created`, `queen.created`, `queen.replaced`, `harvest.created`, `batch.created`, `batch.updated`, `product.stock_changed`, `task.created`, `task.completed`), HMAC-signierter POST - Endpunkte: `GET/POST /api/v1/webhooks`, `DELETE /api/v1/webhooks/:id` - Frontend: `/settings/webhooks` (nur Administrator) - [ ] Backend-Modul fertig, getestet, grün, committet - [ ] Frontend-Views fertig, getestet, grün, committet ### 29. Dokumente und Bilder - Backend: `DocumentsModule` (`Document`: entityType/entityId, Dateiname, MIME-Typ, Größe, Speicherpfad, Hochgeladen-von); Objektspeicher als lokales Volume (`deploy/k8s` ConfigMap-Pfad, austauschbar) - Endpunkte: `POST /api/v1/documents` (multipart, entityType/entityId), `GET /api/v1/documents?entityType=&entityId=`, `GET /api/v1/documents/:id/download`, `DELETE /api/v1/documents/:id` - Frontend: Datei-Upload-Widget auf Volk-/Königin-/Durchsicht-/Bienenstand-/Honigcharge-Detailseiten - [ ] Backend-Modul fertig, getestet, grün, committet - [ ] Frontend-Views fertig, getestet, grün, committet ### 30. Automatisierungen - Backend: `AutomationModule` (`AutomationRule`: Trigger-Typ, aktiv, Konfiguration, Aktionsvorlage) mit fest hinterlegten Triggern (keine Königin+keine Stifte → Kontrollvorschlag, Varroa-Schwellenwert → Behandlungsprüfung, Futterstatus kritisch → Fütterungsaufgabe), erzeugt Task + Notification - Endpunkte: `GET/POST /api/v1/automation-rules`, `PATCH /api/v1/automation-rules/:id` - Frontend: `/settings/automation-rules` (nur Administrator) - [ ] Backend-Modul fertig, getestet, grün, committet - [ ] Frontend-Views fertig, getestet, grün, committet ### 31. Königinnenbewertung - Backend: `QueenEvaluation` (Volksstärke, Sanftmut, Wabensitz, Schwarmtrieb, Brutbild, Honigertrag je Skala 1–5, Datum, Notizen) verknüpft mit Königin - Endpunkte: `GET/POST /api/v1/queens/:id/evaluations` - Frontend: Bewertungsformular + Verlauf auf der Königin-Detailseite - [x] Backend-Modul fertig, getestet, grün, committet - [x] Frontend-Views fertig, getestet, grün, committet ### 32. Lagerbehälter-Umlagerung - Backend: `HoneyBatchRelocation`-Historie – Honigcharge zwischen Lagerbehältern umlagern, `storageContainerId` aktualisieren, jede Umlagerung dokumentiert - Endpunkte: `POST /api/v1/honey-batches/:id/relocate`, `GET /api/v1/honey-batches/:id/relocations` - Frontend: Lagerbehälter-Sektion + Umlagerungshistorie auf der Honigcharge-Detailseite - [ ] Backend-Modul fertig, getestet, grün, committet - [ ] Frontend-Views fertig, getestet, grün, committet ### 33. Importfunktionen - Backend: `ImportModule` – CSV-Import für Stammdaten (`apiaries`, `colonies`, `queens`), Validierung, Ergebnisbericht (erstellt/übersprungen/Fehler pro Zeile) - Endpunkte: `POST /api/v1/import/:entity` (multipart CSV) - Frontend: `/settings/import` (nur Administrator), Datei-Upload + Ergebnisbericht - [ ] Backend-Modul fertig, getestet, grün, committet - [ ] Frontend-Views fertig, getestet, grün, committet ### v1.x-Abschluss - [ ] Gesamter Backend-Build grün (`lint`, `typecheck`, `test`, `test:e2e`, `build`) - [ ] Gesamter Frontend-Build grün (`lint`, `typecheck`, `test`, `build`) - [ ] Erweiterte Kernanforderung aus Abschnitt 29 end-to-end verifiziert: Stand → Volk → Königin → Durchsicht → Behandlung → Ernte → Schleuderung → Honigcharge → Lagerbehälter → Abfüllung → Produkt ## Später (KANN) – Abschnitt 26, Liste 3 Software-seitig umsetzbare Punkte werden gebaut. Punkte, die dedizierte native Build-Pipelines, echte ML-Modelle oder physische Hardware voraussetzen, sind als "nicht umsetzbar in diesem Kontext" markiert statt mit einer Alibi-Umsetzung – Begründung jeweils dahinter. - [ ] Kartenansicht (Bienenstände mit Koordinaten auf einer Karte) - [ ] Wetterintegration / Wetterhistorie je Bienenstand (externe Wetter-API anhand Bienenstand-Koordinaten) - [ ] Trachtprognosen (heuristische Einschätzung aus Wetterdaten + Saison + historischen Ernten, kein ML-Modell) - [ ] Öffentliche Herkunftsseiten für Honigchargen + Kunden-QR-Code (Abschnitt 27: `wabenhain.com/herkunft/{lot}`, öffentlicher Read-Endpoint) - [ ] Vollständig offlinefähige PWA mit Sync (Service Worker + IndexedDB-Warteschlange für Durchsichten, Sync bei Wiederverbindung) - [ ] NFC-Tags (Web-NFC-API, nur Chrome/Android; kodiert denselben Deep-Link wie der QR-Code; kein Fallback für andere Browser möglich) - [x] ~~Native Smartphone-App~~ – nicht umsetzbar in diesem Kontext: erfordert eigene native Codebasis, App-Store-Vertrieb und Build-Pipeline ausserhalb einer Web-Session - [x] ~~KI-Auswertung von Völkerdaten, automatische Anomalieerkennung, Fotoanalyse~~ – nicht umsetzbar in diesem Kontext: erfordert dediziertes ML-Modelltraining/-Betrieb, keine seriöse Umsetzung als einfache Heuristik - [x] ~~Spracherfassung am Bienenstand, automatische Zusammenfassung einer Durchsicht~~ – nicht umsetzbar in diesem Kontext: erfordert Spracherkennungs-/LLM-Infrastruktur über das bestehende Stack hinaus - [x] ~~Sensorintegration (Stockwaagen, Temperatur-/Feuchtesensoren)~~ – nicht umsetzbar in diesem Kontext: erfordert physische IoT-Hardware - [ ] KI-Auswertung von Völkerdaten / automatische Anomalieerkennung - [ ] Fotoanalyse - [ ] Spracherfassung am Bienenstand - [ ] Automatische Zusammenfassung einer Durchsicht - [ ] Sensorintegration (Stockwaagen, Temperatur-/Feuchtesensoren) - [ ] Öffentliche Herkunftsseiten für Honigchargen (Wabenhain-Integration, Abschnitt 27) - [ ] Kunden-QR-Code auf Honiggläsern