ai-chatbot/lib/db/migrations/0079_add_ai_model_health.sql
Your Name 11a2babb77
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
feat: add ai model health failover
2026-05-09 09:33:50 +08:00

41 lines
1.7 KiB
SQL

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");