Files
yourpart-daemon/migrations
..

Datenbank-Migrationen (Falukant / YpDaemon)

Siehe auch docs/FALUKANT_DAEMON_HANDOFF.md (Abgleich mit Backend-Übergabe).

001_falukant_family_lovers.sql

Voraussetzung für den FalukantFamilyWorker (Liebhaber, Ehezufriedenheit, Ansehen, Monatskosten, Kinder aus Liebschaften).

Manuell ausführen auf der Ziel-DB (nach Backup):

psql "$DATABASE_URL" -f migrations/001_falukant_family_lovers.sql

002_falukant_family_rename_legacy_columns.sql

Nur nötig, wenn 001 bereits mit den alten Spaltennamen (consecutive_underpayment_months) eingespielt wurde.

Backend (YourPart3): Beim Anlegen einer lover-Beziehung relationship_state erzeugen; Ehezufriedenheit liegt auf relationship (married / engaged / wooing); Idempotenzfelder last_daily_processed_at / last_monthly_processed_at werden vom Daemon gesetzt.

Ohne passende Spalten (last_daily_processed_at) bleibt der Family-Worker inaktiv.

012_falukant_political_benefits_daemon.sql

Tabellen political_benefit_last_tick und optional political_appointment für den PoliticsWorker / Modul political_benefits.rs:

  • reputation_periodic: Ticks mit Persistenz (benötigt Backend-Seeds falukant_predefine.political_office_benefit mit JSON-Feldern tr oder benefitType, gain, intervalDays).
  • free_lover_slots: Summe count im Liebschafts-Monatstick (Daemon), max. 5.
  • Ernennungen: Daemon setzt nur pendingexpired, wenn expires_at überschritten (Anlage durch Backend-API).

Die Join-Spalte auf political_office_benefit heißt im Repo political_office_type_id — falls das Sequelize-Modell abweicht, SQL in src/worker/sql.rs anpassen.

013_falukant_political_daily_salary.sql

Spalte falukant_data.falukant_user.last_political_daily_salary_on (Datum): Idempotenz für political_benefits::run_daily_political_salary — einmal pro Tag Gutschrift; Beträge aus JSON-Feld daily_salary (tr/benefitType = daily_salary) oder gestufter Daemon-Fallback nach Amts-Rang.

014_falukant_certificate_productions_count_since.sql

Spalte falukant_data.falukant_user.certificate_productions_count_since: Zertifikats-Produktionszählung (Mindestwerte + Produktionspunkte) ab diesem Zeitpunkt; Daemon setzt bei Aufstieg/Bankrott/Erbfolge auf NOW(). NULL = bis zur ersten Änderung weiterhin alle passenden Log-Zeilen zählen.

015_falukant_log_production_completion_count.sql

Spalte falukant_log.production.completion_count: zählt abgeschlossene Produktionen pro aggregierter Log-Zeile (bei gleichem Tag/Produkt/Region wird die Menge per UPSERT summiert; ohne completion_count bliebe COUNT(*) über die Zeilen fälschlich niedrig). Zertifikatsabfrage nutzt SUM(completion_count) (Migration 015 vor Deploy des aktualisierten Produce-Workers ausführen).