Implement political office history logging: Added SQL logic to archive political office records upon expiration and deletion, ensuring historical tracking of office terms. Updated relevant queries to insert records into falukant_log.political_office_history for better compliance with data retention policies.
All checks were successful
Deploy yourpart (blue-green) / deploy (push) Successful in 1m33s
All checks were successful
Deploy yourpart (blue-green) / deploy (push) Successful in 1m33s
This commit is contained in:
28
migrations/016_falukant_log_political_office_history.sql
Normal file
28
migrations/016_falukant_log_political_office_history.sql
Normal file
@@ -0,0 +1,28 @@
|
||||
-- Abgeschlossene politische Ämter (Amtsende, Neubesetzung, Entfernung) für Auswertung „Karrierehöchstwert“ / UI.
|
||||
-- Wird vom YpDaemon vor Löschen aus falukant_data.political_office befüllt.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS falukant_log.political_office_history (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
character_id INTEGER NOT NULL,
|
||||
office_type_id INTEGER NOT NULL,
|
||||
region_id INTEGER,
|
||||
start_date TIMESTAMPTZ NOT NULL,
|
||||
end_date TIMESTAMPTZ NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- Tabelle kann bereits vom Backend existieren (ohne region_id o. Ä.): CREATE TABLE IF NOT EXISTS ergänzt keine Spalten.
|
||||
ALTER TABLE falukant_log.political_office_history
|
||||
ADD COLUMN IF NOT EXISTS region_id INTEGER;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_pol_office_hist_character
|
||||
ON falukant_log.political_office_history (character_id);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_pol_office_hist_office_type
|
||||
ON falukant_log.political_office_history (office_type_id);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_pol_office_hist_region
|
||||
ON falukant_log.political_office_history (region_id);
|
||||
|
||||
COMMENT ON TABLE falukant_log.political_office_history IS
|
||||
'Politische Amtszeiten nach Ende; start_date/end_date aus Amtszeile bzw. NOW() bei vorzeitigem Ende (YpDaemon).';
|
||||
@@ -41,3 +41,7 @@ Spalte **`falukant_data.falukant_user.certificate_productions_count_since`**: Ze
|
||||
## `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).
|
||||
|
||||
## `016_falukant_log_political_office_history.sql`
|
||||
|
||||
Tabelle **`falukant_log.political_office_history`**: Archiv abgeschlossener politischer Amtszeiten (`character_id`, `office_type_id`, `region_id`, `start_date`, `end_date`). Der Daemon schreibt **vor** jedem relevanten `DELETE` auf **`falukant_data.political_office`** (Amtsende/Neuwahl-Pfad, Übersitz-Trim, Charaktertod). **`falukant_data.process_elections()`** (PostgreSQL) liegt außerhalb des Rust-Repos — falls dort Zeilen gelöscht werden, analog **`INSERT` in diese Historie** in der DB-Funktion ergänzen.
|
||||
|
||||
Reference in New Issue
Block a user