meldestelle/backend/services/masterdata/docs/ROADMAP.md
Stefan Mogeritsch e3d517cc5e docs(CHANGELOG & ROADMAP): update for completed phases, added features, and integrations
- Documented new features: `AbteilungsRegelService`, `CompetitionWarningService`, `profile-feature`, `billing-feature`, and V2-Screens in CHANGELOG.
- Marked P1, P2, and P3 contexts as complete in ROADMAP, including MVP and integration phases.
- Added ZNS-Importer enhancements and frontend feature integrations to ROADMAP progress.
- Updated status of major project phases to reflect completion.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
2026-03-30 16:41:53 +02:00

142 lines
6.4 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Strategische Roadmap: Masterdata (Stammdaten) 2026 H1H2
🏗️ [Lead Architect]
## Leitbild und Scope
- Ziel: ÖTO-konforme, offline-fähige Stammdaten-Plattform für Dressur & Springen als SelfContained System mit eigener
DB, klaren APIs und einem wiederverwendbaren Frontend-Feature (Compose MPP).
- Ergebnis: Lesekanal (REST-API), Schreibkanal (ZNS-Ingestion), datengesteuerte Regel-Engine (Versionierung von
ÖTO-Regeln), vollständige Observability und Betrieb.
- Nicht-Ziele (Phase 1): FEI-Integration, weitere Sparten (VS, Western), komplexe Serien-/Cup-Reglements.
---
## Phasenüberblick und Meilensteine
### 1) Foundation & Governance (WK 12)
- Architektur-Entscheide (ADRs) finalisieren: Database-per-Service, Rule-Engine als Datenmodell, Importer als Worker im
Masterdata-SCS.
- Versionierungs-Strategie: `valid_from/valid_to` auf Regel-Datensätzen; „Regel-Set 2026“ als Seed.
- Security/Cross-Cutting: API-Schlüssel/Service-Tokens, CORS, Ratelimits, Idempotency-Policies dokumentieren und
aktivieren.
- Deliverables:
- [x] ADR-Set im Repo (Rules, DB, Import, API) → ADR-0017, ADR-0018, ADR-0019
- [x] Operative Runbooks (Backup/Restore, Re-Import, Rollback) -> `masterdata-ops.md`
### 2) Datenmodell & Persistenz (WK 24)
- Tabellenkatalog vervollständigen und migrieren (Exposed + Flyway/Liquibase): Reiter, Pferde, Vereine, Funktionäre,
Altersklassen, Lizenzen, Turnierklassen, Gebührenordnung, Richtverfahren, Regelkonfiguration.
- Indizes/Keys: Eindeutige Schlüssel gemäß ZNS (Satz-/Lizenznummern), Suchindizes für Name/Teilstrings.
- Deliverables:
- Migrationsskripte v1.0
- Repository-Impls mit Upsert-Semantik
- Test-Datasets (Mini-ZNS, ÖTO-Seeds)
### 3) Rule-Engine (WK 46)
- Domänenlogik kapseln: Altersklassenrechner, Lizenz-zu-Klasse-Matrix, Abteilungsregeln,
Pferde-/Reiterprüfungs-Scoring (Stilspringen/Dressurpferde), Gebühren-Lookups.
- Datengesteuerte Konfiguration: Tabellen „RegulationConfig“, „LicenseMatrix“, „ClassDefinitions“ mit Versionen.
- Deliverables:
- UseCases im `masterdata-common` (pure Kotlin) + Unit-Tests
- Admin-Seed für „ÖTO 2026“
### 4) ZNS-Ingestion als Worker (WK 57)
- Import-Pipeline (ASCII CP850) als Masterdata-Submodul/Worker: Validierung, Deduplikation (Idempotenz),
Fehlerreporting.
- Re-Import & Delta-Regeln; Konfliktstrategien (last-write-wins vs. checksumbased skip).
- Deliverables:
- Batch-Job + CLI/HTTP Trigger
- Import-Report (persistiert + JSON-Export)
### 5) API-Fassade (WK 68)
- Read-APIs (v1):
- GET /reiter?search=…
- GET /horses?search=…
- GET /vereine?bundesland=…
- GET /altersklassen, /turnierklassen, /lizenzmatrix, /richtverfahren, /gebuehrenordnung
- Admin/Tech-APIs: GET /rulesets, GET /health, GET /metrics
- DTOs mit Kotlinx Serialization; Paginierung & ETags.
- Deliverables: OpenAPI 3 Spec, Contract-Tests
### 6) Frontend-Feature „masterdata“ (WK 79)
- KMP-Feature-Modul: Such-/Detail-Views für Reiter, Pferde, Vereine; Readonly Rule-Explorer.
- State-Management, OfflineCache (Local DB) für Desktop; Fehler-/Konfliktanzeigen beim Import.
- Deliverables: Integrations-Demo in Desktop-Shell, UI-Snippets für Web-Shell
### 7) Observability & Operations (WK 59, parallel)
- Logging-Konzepte (strukturierte Logs), Metriken (Importdauer, Records/s, API Latenzen), Tracing (optional).
- Dashboards/Alerts: Import-Fehlerquote, API 5xx, DBWachstum, Regel-Set-Mismatch.
- Backups/Restore-Runbooks, DR-Test.
### 8) Quality Gate & GoLive (WK 910)
- Test-Strategie:
- Unit: Rule-Engine, UseCases
- Integration: Repos + API + Importer (Mini-ZNS)
- EndtoEnd: Desktop-Feature → API → DB
- Security Review, Performance Smoke (100k Reiter, 50k Pferde, 2k Vereine), Data Quality Checks.
- GoLive Checklist und Staged Rollout.
---
## Verantwortlichkeiten (Agents)
- 🏗️ Lead Architect: ADRs, Architektur-Governance, Phasenabnahme
- 👷 Backend Developer: DB/Repositories, UseCases, API, Importer
- 🎨 Frontend Expert: KMP-Feature, Offline-Cache, API-Integration
- 🐧 DevOps Engineer: CI/CD, Deploy, Observability, Backups
- 🧐 QA Specialist: Test-Strategie, Abdeckung, E2E
- 📜 Rulebook Expert: Daten-Seeds, Regel-Validierung, Review der Matrix
- 🧹 Curator: Docs-as-Code, Changelogs, Runbooks, Session Logs
---
## Architekturprinzipien (Wartbarkeit)
- Hexagonale Architektur strikt einhalten; UseCases sind framework-frei und testbar.
- Regeln im Datenmodell versionieren; Code nutzt nur „aktives Regel-Set“ je Turnier/Datum.
- Importer ist ein Worker des Masterdata-SCS (Schreibkanal), API ist der Lesekanal.
- Idempotenz konsequent: Upserts, ETags, Import-Footprint (checksum, source_id, imported_at).
---
## Abhängigkeiten & Risiken
- Abhängigkeiten: Postgres-Verfügbarkeit, ZNS-Dateiqualität, Identity (Token) für gesicherte Admin-Routen, Desktop-App
Shell.
- Risiken & Gegenmaßnahmen:
- Regeländerungen kurz vor Saisonstart → Versionierte Rulesets + Blue/Green Umschaltung per Config.
- Datenqualität ZNS (Inkonsistenzen) → strikte Validierung + Fehlerreport + manuelle Korrekturrouten (später).
- Performance bei Erstimport → Batchgrößen, Indizes, COPY/Batch-Insert, Profiling.
- ScopeCreep (weitere Sparten) → Phasen-Governance, ADRs, FeatureFlags.
---
## Erfolgskriterien (Messbar)
- T0 Import: Komplettes ZNS-Paket < 10 Minuten, Fehlerrate < 0,5% pro Datei, 100% idempotent.
- API: P95 Latenz < 150 ms bei 500 RPS Burst (ReadOnly Endpunkte), Fehlerquote < 0,1%.
- Rule-Engine: 100% Übereinstimmung mit dokumentierten Beispielen (Golden Files) und ÖTO-Referenzen.
- Observability: 4 zentrale Dashboards + 6 Alarm-Regeln aktiv; Backup/Restore in < 30 Minuten validiert.
---
## Nächste konkrete Schritte (2Wochen SprintPlan)
1. [x] ADRs für ImporterEinbettung, RuleVersionierung, API-Schichten abschließen (🏗)
2. [x] Exposed-Tabellen vervollständigen und in `SchemaUtils.create`/Migrationen registrieren (👷)
3. [x] UseCases: Altersklasse, LizenzMatrix, AbteilungsRegeln inkl. UnitTests (👷🧐)
4. [x] ZNSImporter an Repositories anbinden, Idempotenz-Checks ergänzen, MiniZNS Testlauf (👷🧐)
5. [x] API v1 Endpunkte + OpenAPI, ContractTests (👷🧐)
6. [x] Observability-Grundlagen (Metriken + Dashboards) (🐧)
7. [x] Curator: Docs aktualisieren, Runbooks und Changelogs pflegen (🧹)
8. [x] Frontend-Feature "profile-feature" & "billing-feature" integriert (🎨)