From 18da76779092de5d28b4e02fba81ca5a7c8f57c0 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 14 Aug 2026 17:52:39 +0000 Subject: [PATCH] Upgrade schemas imported from legacy dumps --- ent_watchdog.py | 3 +- gmao_watchdog.py | 3 +- ...5b6c7d8_add_missing_gmao_context_fields.py | 106 ++++++++++++++++++ 3 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 migrations/versions/e0f4a5b6c7d8_add_missing_gmao_context_fields.py diff --git a/ent_watchdog.py b/ent_watchdog.py index 16bcec4..fb5aaa1 100644 --- a/ent_watchdog.py +++ b/ent_watchdog.py @@ -443,6 +443,7 @@ def main(): signal.signal(signal.SIGINT, signal_handler) while running: + result = None try: result = run_watchdog() if result is False: @@ -465,4 +466,4 @@ def main(): log("Watchdog ENT arrêté") if __name__ == '__main__': - main() \ No newline at end of file + main() diff --git a/gmao_watchdog.py b/gmao_watchdog.py index 7c34697..2480195 100644 --- a/gmao_watchdog.py +++ b/gmao_watchdog.py @@ -308,6 +308,7 @@ def main(): signal.signal(signal.SIGINT, signal_handler) while running: + result = None try: result = run_watchdog() if result is False: @@ -330,4 +331,4 @@ def main(): log("Watchdog GMAO arrêté") if __name__ == '__main__': - main() \ No newline at end of file + main() diff --git a/migrations/versions/e0f4a5b6c7d8_add_missing_gmao_context_fields.py b/migrations/versions/e0f4a5b6c7d8_add_missing_gmao_context_fields.py new file mode 100644 index 0000000..e23592c --- /dev/null +++ b/migrations/versions/e0f4a5b6c7d8_add_missing_gmao_context_fields.py @@ -0,0 +1,106 @@ +"""Add synchronization fields missing from older GMAO dumps. + +Revision ID: e0f4a5b6c7d8 +Revises: d9e3f4a5b6c7 +Create Date: 2026-08-14 +""" + +from alembic import op +import sqlalchemy as sa + + +revision = "e0f4a5b6c7d8" +down_revision = "d9e3f4a5b6c7" +branch_labels = None +depends_on = None + + +def upgrade(): + op.add_column( + "equipments", + sa.Column("is_deleted", sa.Boolean(), nullable=False, server_default=sa.false()), + ) + op.add_column( + "equipments", sa.Column("deleted_at", sa.DateTime(), nullable=True) + ) + op.add_column( + "interventions", + sa.Column("original_scheduled_date", sa.DateTime(), nullable=True), + ) + op.add_column( + "interventions", sa.Column("postpone_count", sa.Integer(), nullable=True) + ) + op.add_column( + "interventions", + sa.Column("last_postpone_reason", sa.Text(), nullable=True), + ) + op.add_column( + "interventions", sa.Column("last_postpone_at", sa.DateTime(), nullable=True) + ) + op.add_column( + "interventions", + sa.Column("preventive_task_id", sa.Integer(), nullable=True), + ) + op.add_column( + "interventions", sa.Column("lot_task_id", sa.Integer(), nullable=True) + ) + op.add_column( + "interventions", sa.Column("postpone_reason", sa.Text(), nullable=True) + ) + op.add_column( + "gmao_context", + sa.Column("outlook_sync_enabled", sa.Boolean(), nullable=True), + ) + op.add_column( + "gmao_context", + sa.Column("outlook_sync_interval", sa.Integer(), nullable=True), + ) + op.add_column( + "gmao_context", + sa.Column("outlook_sync_lookback_hours", sa.Integer(), nullable=True), + ) + op.add_column( + "gmao_context", + sa.Column("ai_provider", sa.String(length=20), nullable=True), + ) + op.add_column( + "gmao_context", + sa.Column("ollama_model", sa.String(length=100), nullable=True), + ) + op.add_column( + "gmao_context", + sa.Column("watchdog_enabled", sa.Boolean(), nullable=True), + ) + op.add_column( + "gmao_context", + sa.Column("watchdog_interval", sa.Integer(), nullable=True), + ) + + op.execute( + "UPDATE gmao_context SET " + "outlook_sync_enabled = COALESCE(outlook_sync_enabled, TRUE), " + "outlook_sync_interval = COALESCE(outlook_sync_interval, 10), " + "outlook_sync_lookback_hours = COALESCE(outlook_sync_lookback_hours, 24), " + "ai_provider = COALESCE(ai_provider, 'openrouter'), " + "watchdog_enabled = COALESCE(watchdog_enabled, FALSE), " + "watchdog_interval = COALESCE(watchdog_interval, 10)" + ) + + +def downgrade(): + op.drop_column("gmao_context", "watchdog_interval") + op.drop_column("gmao_context", "watchdog_enabled") + op.drop_column("gmao_context", "ollama_model") + op.drop_column("gmao_context", "ai_provider") + op.drop_column("gmao_context", "outlook_sync_lookback_hours") + op.drop_column("gmao_context", "outlook_sync_interval") + op.drop_column("gmao_context", "outlook_sync_enabled") + op.drop_column("interventions", "postpone_reason") + op.drop_column("interventions", "lot_task_id") + op.drop_column("interventions", "preventive_task_id") + op.drop_column("interventions", "last_postpone_at") + op.drop_column("interventions", "last_postpone_reason") + op.drop_column("interventions", "postpone_count") + op.drop_column("interventions", "original_scheduled_date") + op.drop_column("equipments", "deleted_at") + op.drop_column("equipments", "is_deleted")