# 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.