ALTER TABLE "AiModel" ADD COLUMN IF NOT EXISTS "healthStatus" varchar DEFAULT 'healthy' NOT NULL, ADD COLUMN IF NOT EXISTS "healthConsecutiveFailures" integer DEFAULT 0 NOT NULL, ADD COLUMN IF NOT EXISTS "healthLastEventType" varchar(32), ADD COLUMN IF NOT EXISTS "healthLastError" text, ADD COLUMN IF NOT EXISTS "healthLastFailureAt" timestamp, ADD COLUMN IF NOT EXISTS "healthLastSuccessAt" timestamp, ADD COLUMN IF NOT EXISTS "healthAutoDisabledAt" timestamp, ADD COLUMN IF NOT EXISTS "healthAutoDisabledReason" text, ADD COLUMN IF NOT EXISTS "healthUpdatedAt" timestamp DEFAULT now() NOT NULL; CREATE TABLE IF NOT EXISTS "AiModelHealthEvent" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "modelId" uuid REFERENCES "AiModel"("id") ON DELETE SET NULL, "providerId" uuid REFERENCES "AiProvider"("id") ON DELETE SET NULL, "modelRuntimeId" varchar(128), "modelDisplayName" varchar(128), "providerType" varchar(64), "providerName" varchar(128), "eventType" varchar(32) DEFAULT 'error' NOT NULL, "severity" varchar(24) DEFAULT 'error' NOT NULL, "context" varchar(96), "counted" boolean DEFAULT true NOT NULL, "consecutiveFailures" integer DEFAULT 0 NOT NULL, "autoDisabled" boolean DEFAULT false NOT NULL, "elapsedMs" integer, "requestId" varchar(128), "errorMessage" text, "metadata" jsonb, "createdAt" timestamp DEFAULT now() NOT NULL ); CREATE INDEX IF NOT EXISTS "AiModelHealthEvent_modelId_createdAt_idx" ON "AiModelHealthEvent" ("modelId", "createdAt" DESC); CREATE INDEX IF NOT EXISTS "AiModelHealthEvent_createdAt_idx" ON "AiModelHealthEvent" ("createdAt" DESC); CREATE INDEX IF NOT EXISTS "AiModel_healthStatus_idx" ON "AiModel" ("healthStatus");