479 lines
14 KiB
Markdown
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.
|