Files
yourpart3/docs/FALUKANT_LOVERS_IMPLEMENTATION_BACKLOG.md

479 lines
14 KiB
Markdown

# Falukant: Implementierungs-Backlog für Liebhaber, Mätressen, Ehezufriedenheit und Kinder aus Liebschaften
## Zweck
Dieses Backlog übersetzt die Fach- und Technikdokumente in konkrete Umsetzungspakete.
Grundlagen:
- [FALUKANT_LOVERS_CONCEPT.md](/mnt/share/torsten/Programs/YourPart3/docs/FALUKANT_LOVERS_CONCEPT.md)
- [FALUKANT_LOVERS_DAEMON_SPEC.md](/mnt/share/torsten/Programs/YourPart3/docs/FALUKANT_LOVERS_DAEMON_SPEC.md)
- [FALUKANT_LOVERS_TECHNICAL_CONCEPT.md](/mnt/share/torsten/Programs/YourPart3/docs/FALUKANT_LOVERS_TECHNICAL_CONCEPT.md)
Das Backlog ist absichtlich in Reihenfolge angeordnet. Spätere Pakete bauen auf früheren auf.
## Rahmen
Nicht Teil der ersten Umsetzung:
- eigenes Dienerschaftssystem
- finales Balancing
- große Ereignisketten rund um Kirche, Gericht oder Hofintrigen
## Paket B1: Datenmodell vorbereiten
### Ziel
Die Datenbasis für Ehezufriedenheit, Liebschaftsstatus und Kinder aus Liebschaften anlegen.
### Aufgaben
1. Migration für `falukant_data.relationship_state` anlegen
2. Modell [relationship_state.js](/mnt/share/torsten/Programs/YourPart3/backend/models/falukant/data/relationship_state.js) anlegen
3. Associations in [associations.js](/mnt/share/torsten/Programs/YourPart3/backend/models/associations.js) ergänzen
4. `child_relation` um `legitimacy`, `birth_context`, `public_known` erweitern
5. Modell [child_relation.js](/mnt/share/torsten/Programs/YourPart3/backend/models/falukant/data/child_relation.js) anpassen
### Betroffene Dateien
- [backend/models/associations.js](/mnt/share/torsten/Programs/YourPart3/backend/models/associations.js)
- [backend/models/falukant/data/child_relation.js](/mnt/share/torsten/Programs/YourPart3/backend/models/falukant/data/child_relation.js)
- neue Migrationen in [backend/migrations](/mnt/share/torsten/Programs/YourPart3/backend/migrations)
- neue Datei [backend/models/falukant/data/relationship_state.js](/mnt/share/torsten/Programs/YourPart3/backend/models/falukant/data/relationship_state.js)
### Abhängigkeiten
- keine
### Done
- Datenbank kann die neuen Felder speichern
- Sequelize kann `Relationship` plus `state` laden
- `ChildRelation` kennt neue Legitimitätsfelder
## Paket B2: Backfill und Defaults
### Ziel
Bestehende Ehen und Liebschaften mit Startwerten versorgen.
### Aufgaben
1. Backfill-Migration oder Reparaturskript für bestehende `married`-Beziehungen
2. Backfill-Migration oder Reparaturskript für bestehende `lover`-Beziehungen
3. Fallback-Logik im Backend ergänzen, falls für alte Datensätze noch kein State existiert
### Betroffene Dateien
- neue Migration oder Tool in [backend/migrations](/mnt/share/torsten/Programs/YourPart3/backend/migrations) oder [backend/tools](/mnt/share/torsten/Programs/YourPart3/backend/tools)
- [backend/services/falukantService.js](/mnt/share/torsten/Programs/YourPart3/backend/services/falukantService.js)
### Abhängigkeiten
- B1
### Done
- alle alten `married`- und `lover`-Beziehungen haben nutzbare Zustandswerte
- Family-Lesezugriffe brechen nicht bei fehlendem State
## Paket B3: Family-Lesepfade erweitern
### Ziel
Die bestehenden API-Daten für Familie so erweitern, dass das Frontend sofort lesen und anzeigen kann.
### Aufgaben
1. `getFamily()` in [falukantService.js](/mnt/share/torsten/Programs/YourPart3/backend/services/falukantService.js) um `state`-Daten erweitern
2. für Ehebeziehungen `marriageSatisfaction` und `marriageState` liefern
3. für `lovers` Rollen-, Kosten-, Sichtbarkeits- und Risikofelder liefern
4. Hilfsmethoden für Standesgruppe und Vorschauwerte ergänzen
### Betroffene Dateien
- [backend/services/falukantService.js](/mnt/share/torsten/Programs/YourPart3/backend/services/falukantService.js)
### Abhängigkeiten
- B1
- B2
### Done
- `GET /api/falukant/family` liefert die neuen Datenfelder
- keine UI-Aktion nötig, aber Daten sind vollständig lesbar
## Paket B4: Family-UI lesend ausbauen
### Ziel
Die neuen Daten im Familienbereich sichtbar machen, ohne schon alle Interaktionen einzubauen.
### Aufgaben
1. Ehebereich in [FamilyView.vue](/mnt/share/torsten/Programs/YourPart3/frontend/src/views/falukant/FamilyView.vue) um `Ehe-Zufriedenheit` ergänzen
2. `lovers`-Bereich mit Rolle, Sichtbarkeit, Diskretion, Unterhalt, Reputationseffekt und Eheeffekt erweitern
3. Kinderkennzeichnung für `legitimate`, `hidden_bastard`, `acknowledged_bastard` ergänzen
4. I18n-Schlüssel in den Falukant-Locales ergänzen
### Betroffene Dateien
- [frontend/src/views/falukant/FamilyView.vue](/mnt/share/torsten/Programs/YourPart3/frontend/src/views/falukant/FamilyView.vue)
- [frontend/src/i18n/locales/de/falukant.json](/mnt/share/torsten/Programs/YourPart3/frontend/src/i18n/locales/de/falukant.json)
- [frontend/src/i18n/locales/en/falukant.json](/mnt/share/torsten/Programs/YourPart3/frontend/src/i18n/locales/en/falukant.json)
- [frontend/src/i18n/locales/es/falukant.json](/mnt/share/torsten/Programs/YourPart3/frontend/src/i18n/locales/es/falukant.json)
### Abhängigkeiten
- B3
### Done
- FamilyView zeigt neue Zustände lesbar an
- uneheliche Kinder sind UI-seitig unterscheidbar
## Paket B5: Berechnungslogik im Service kapseln
### Ziel
Alle Formeln in wiederverwendbare Backend-Helfer auslagern, bevor Daemon-Jobs gebaut werden.
### Aufgaben
1. `getRankGroup(...)` implementieren
2. `calculateLoverMonthlyCost(...)` implementieren
3. `calculateMarriageDelta(...)` implementieren
4. `calculateReputationDeltaFromLover(...)` implementieren
5. `calculateDailyVisibilityDelta(...)` und `calculateDailyDiscretionDelta(...)` implementieren
6. `calculateDailyScandalChance(...)` implementieren
7. `calculateMonthlyPregnancyChance(...)` implementieren
### Betroffene Dateien
- [backend/services/falukantService.js](/mnt/share/torsten/Programs/YourPart3/backend/services/falukantService.js)
### Abhängigkeiten
- B1
- B2
### Done
- Daemon-Jobs können auf zentrale Helper zugreifen
- keine Formel liegt verstreut in mehreren Jobs
## Paket B6: Daily-Tick-Übergabe an externen Daemon
### Ziel
Die tägliche Spiellogik so spezifizieren und übergeben, dass der externe Daemon sie korrekt ausführen kann.
### Aufgaben
1. Übergabedokument für den externen Daemon erstellen
2. Daily Input- und Output-Felder festlegen
3. Idempotenzanforderungen für `last_daily_processed_at` festlegen
4. Datenabhängigkeiten für Ehe, Liebschaften und Stand definieren
5. Benachrichtigungs- und Ereignisfolgen beschreiben
### Betroffene Dateien
- [docs/FALUKANT_LOVERS_DAEMON_HANDOFF.md](/mnt/share/torsten/Programs/YourPart3/docs/FALUKANT_LOVERS_DAEMON_HANDOFF.md)
- [docs/FALUKANT_LOVERS_DAEMON_SPEC.md](/mnt/share/torsten/Programs/YourPart3/docs/FALUKANT_LOVERS_DAEMON_SPEC.md)
### Abhängigkeiten
- B5
### Done
- der externe Daemon hat eine vollständige Daily-Tick-Übergabe
- Daily-Logik ist ohne Rückfragen implementierbar
## Paket B7: Monthly-Tick-Übergabe an externen Daemon
### Ziel
Die monatliche Spiellogik so spezifizieren und übergeben, dass der externe Daemon sie korrekt ausführen kann.
### Aufgaben
1. Monthly Input- und Output-Felder festlegen
2. Geldabbuchung und Moneyflow-Anforderungen beschreiben
3. Unterversorgung und Zustandsänderungen beschreiben
4. Kind-Erzeugung und Folgeeffekte beschreiben
5. Idempotenzanforderungen für `last_monthly_processed_at` festlegen
6. Transaktionsanforderungen definieren
### Betroffene Dateien
- [docs/FALUKANT_LOVERS_DAEMON_HANDOFF.md](/mnt/share/torsten/Programs/YourPart3/docs/FALUKANT_LOVERS_DAEMON_HANDOFF.md)
- [docs/FALUKANT_LOVERS_DAEMON_SPEC.md](/mnt/share/torsten/Programs/YourPart3/docs/FALUKANT_LOVERS_DAEMON_SPEC.md)
### Abhängigkeiten
- B5
### Done
- der externe Daemon hat eine vollständige Monthly-Tick-Übergabe
- Monatslogik ist ohne Rückfragen implementierbar
## Paket B8: Kinder aus Liebschaften technisch ermöglichen
### Ziel
Kinder aus aktiven Liebschaften erzeugen und korrekt markieren.
### Aufgaben
1. `createChildFromLoverRelationship(...)` implementieren
2. `processLoverBirths(...)` in den Monthly Tick integrieren
3. `ChildRelation` korrekt mit `birthContext = lover` anlegen
4. `legitimacy = hidden_bastard` als Startwert setzen
5. erste Folgeeffekte auf Ansehen und Ehezufriedenheit anwenden
### Betroffene Dateien
- [backend/services/falukantService.js](/mnt/share/torsten/Programs/YourPart3/backend/services/falukantService.js)
- [backend/models/falukant/data/child_relation.js](/mnt/share/torsten/Programs/YourPart3/backend/models/falukant/data/child_relation.js)
- [docs/FALUKANT_LOVERS_DAEMON_HANDOFF.md](/mnt/share/torsten/Programs/YourPart3/docs/FALUKANT_LOVERS_DAEMON_HANDOFF.md)
### Abhängigkeiten
- B7
### Done
- Kinder aus Liebschaften können entstehen
- sie sind von legitimen Kindern technisch unterscheidbar
## Paket B9: Notifications und Folgeereignisse MVP
### Ziel
Die wichtigsten Ergebnisse für Spieler sichtbar machen.
### Aufgaben
1. Notifikationstypen für Kosten, Unterversorgung, Gerücht, Skandal und Kind ergänzen
2. Benachrichtigungstexte definieren
3. Daily- und Monthly-Tick an die Notification-Logik anbinden
### Betroffene Dateien
- [docs/FALUKANT_LOVERS_DAEMON_HANDOFF.md](/mnt/share/torsten/Programs/YourPart3/docs/FALUKANT_LOVERS_DAEMON_HANDOFF.md)
- bestehende Notification-Modelle oder Services im Backend
- ggf. [frontend/src/views/falukant/OverviewView.vue](/mnt/share/torsten/Programs/YourPart3/frontend/src/views/falukant/OverviewView.vue) indirekt, falls Benachrichtigungen dort auftauchen
### Abhängigkeiten
- B6
- B7
- B8
### Done
- Spieler sehen relevante Familienfolgen aktiv
## Paket B10: Lover-Aktionen im Backend
### Ziel
Interaktive Steuerung von Liebschaften serverseitig ermöglichen.
### Aufgaben
1. `setLoverMaintenance(...)`
2. `setLoverDiscretionMode(...)`
3. `acknowledgeLover(...)`
4. `endLoverRelationship(...)`
5. `giftLover(...)`
6. Router- und Controller-Anbindung
### Betroffene Dateien
- [backend/services/falukantService.js](/mnt/share/torsten/Programs/YourPart3/backend/services/falukantService.js)
- [backend/controllers/falukantController.js](/mnt/share/torsten/Programs/YourPart3/backend/controllers/falukantController.js)
- [backend/routers/falukantRouter.js](/mnt/share/torsten/Programs/YourPart3/backend/routers/falukantRouter.js)
### Abhängigkeiten
- B3
- B5
### Done
- Backend bietet alle Kernaktionen für Lovers an
## Paket B11: Lover-Aktionen im Frontend
### Ziel
Die neuen Interaktionen in `FamilyView` und ggf. Dialogen bedienbar machen.
### Aufgaben
1. Action-Buttons in [FamilyView.vue](/mnt/share/torsten/Programs/YourPart3/frontend/src/views/falukant/FamilyView.vue) ergänzen
2. API-Aufrufe anbinden
3. Feedback- und Confirm-Dialoge integrieren
4. Zustandsänderungen direkt im UI sichtbar machen
### Betroffene Dateien
- [frontend/src/views/falukant/FamilyView.vue](/mnt/share/torsten/Programs/YourPart3/frontend/src/views/falukant/FamilyView.vue)
- ggf. neue API-Helfer in `frontend/src/api`
### Abhängigkeiten
- B10
### Done
- Unterhalt, Anerkennung, Diskretion und Beenden sind im UI nutzbar
## Paket B12: Anerkennung unehelicher Kinder
### Ziel
Uneheliche Kinder später sichtbar anerkennen können.
### Aufgaben
1. Backend-Methode `acknowledgeLoverChild(...)`
2. Route und Controller
3. UI-Aktion im Familienbereich
4. direkte Folgeeffekte auf Ansehen und Ehe einbauen
### Betroffene Dateien
- [backend/services/falukantService.js](/mnt/share/torsten/Programs/YourPart3/backend/services/falukantService.js)
- [backend/controllers/falukantController.js](/mnt/share/torsten/Programs/YourPart3/backend/controllers/falukantController.js)
- [backend/routers/falukantRouter.js](/mnt/share/torsten/Programs/YourPart3/backend/routers/falukantRouter.js)
- [frontend/src/views/falukant/FamilyView.vue](/mnt/share/torsten/Programs/YourPart3/frontend/src/views/falukant/FamilyView.vue)
### Abhängigkeiten
- B8
- B11
### Done
- uneheliche Kinder können anerkannt werden
- Status und Folgen ändern sich sichtbar
## Paket B13: Admin- und Testhilfen
### Ziel
Die neue Mechanik testbar und debugbar machen.
### Aufgaben
1. Admin- oder Tool-Zugriff auf `relationship_state`
2. Debug-Skript für `30 Tage simulieren`
3. Plausibilitätsprüfungen für fehlende States
4. Reparaturskript für inkonsistente Kinderdaten
### Betroffene Dateien
- [backend/tools](/mnt/share/torsten/Programs/YourPart3/backend/tools)
- ggf. [backend/services/adminService.js](/mnt/share/torsten/Programs/YourPart3/backend/services/adminService.js)
- [docs/FALUKANT_LOVERS_DAEMON_HANDOFF.md](/mnt/share/torsten/Programs/YourPart3/docs/FALUKANT_LOVERS_DAEMON_HANDOFF.md)
### Abhängigkeiten
- B6
- B7
- B8
### Done
- Entwickler können Systemzustände nachvollziehen und korrigieren
## Paket B14: QA und Balancing-Vorbereitung
### Ziel
Noch kein finales Balancing, aber die technische Basis für spätere Feinjustierung schaffen.
### Aufgaben
1. Konfigurationspunkte für Kosten- und Reputationswerte zentralisieren
2. Grundtests für Daily- und Monthly-Tick definieren
3. Testfälle für Standesgruppen definieren
4. Testfälle für weibliche und männliche Spielfiguren spiegeln
5. Testfälle für Kinder aus Liebschaften definieren
### Betroffene Dateien
- [docs/FALUKANT_LOVERS_DAEMON_HANDOFF.md](/mnt/share/torsten/Programs/YourPart3/docs/FALUKANT_LOVERS_DAEMON_HANDOFF.md)
- ggf. Testverzeichnis im Backend
### Abhängigkeiten
- B6
- B7
- B8
### Done
- Werte sind zentral auffindbar
- spätere Balancing-Runden können auf Testfällen aufsetzen
## Empfohlene Reihenfolge
Für eine saubere erste Lieferung:
1. B1
2. B2
3. B3
4. B4
5. B5
6. B6
7. B7
8. B8
9. B9
10. B10
11. B11
12. B12
13. B13
14. B14
## MVP-Schnitt
Wenn eine erste spielbare Version schneller geliefert werden soll, reicht zunächst:
1. B1
2. B2
3. B3
4. B4
5. B5
6. B6
7. B7
8. B8
Damit wären bereits vorhanden:
- sichtbare Liebhaber-Details
- Ehezufriedenheit
- laufende Kosten
- laufende Ansehensänderung
- Kinder aus Liebschaften
Noch nicht enthalten im MVP:
- volle Interaktionssteuerung
- Anerkennung unehelicher Kinder
- Admin-Tools
- spätere Balancing-Infrastruktur
## Nächster konkreter Schritt
Wenn direkt implementiert werden soll, ist der erste technische Einstieg:
- B1 Datenmodell vorbereiten
Das ist der sauberste Startpunkt, weil danach alle weiteren Pakete darauf aufbauen können.