Implement lover relationship management features: Add endpoints for creating, acknowledging, and managing lover relationships in the FalukantController. Enhance backend models with RelationshipState for tracking relationship statuses. Update frontend components to display and manage lover details, including marriage satisfaction and household tension. Improve localization for new features in multiple languages.
This commit is contained in:
478
docs/FALUKANT_LOVERS_IMPLEMENTATION_BACKLOG.md
Normal file
478
docs/FALUKANT_LOVERS_IMPLEMENTATION_BACKLOG.md
Normal file
@@ -0,0 +1,478 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user