feat(server): refactor for byok (#14911)

This commit is contained in:
DarkSky
2026-05-07 04:03:14 +08:00
committed by GitHub
parent 4e169ea5c7
commit eb9cc22502
115 changed files with 10369 additions and 1256 deletions

View File

@@ -0,0 +1,73 @@
-- CreateTable
CREATE TABLE "ai_workspace_byok_configs" (
"id" VARCHAR NOT NULL,
"workspace_id" VARCHAR NOT NULL,
"provider" VARCHAR NOT NULL,
"name" VARCHAR NOT NULL,
"description" VARCHAR,
"encrypted_api_key" TEXT NOT NULL,
"endpoint" TEXT,
"sort_order" INTEGER NOT NULL DEFAULT 0,
"enabled" BOOLEAN NOT NULL DEFAULT true,
"disabled_reason" VARCHAR,
"last_validated_at" TIMESTAMPTZ(3),
"last_validation_error" TEXT,
"last_used_at" TIMESTAMPTZ(3),
"last_error_at" TIMESTAMPTZ(3),
"last_error" TEXT,
"created_by" VARCHAR,
"updated_by" VARCHAR,
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMPTZ(3) NOT NULL,
CONSTRAINT "ai_workspace_byok_configs_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "ai_usage_events" (
"id" VARCHAR NOT NULL,
"workspace_id" VARCHAR NOT NULL,
"user_id" VARCHAR,
"provider" VARCHAR NOT NULL,
"provider_source" VARCHAR NOT NULL,
"feature_kind" VARCHAR NOT NULL,
"model" VARCHAR,
"session_id" VARCHAR,
"task_id" VARCHAR,
"action_id" VARCHAR,
"billing_unit_id" VARCHAR,
"prompt_tokens" INTEGER NOT NULL DEFAULT 0,
"completion_tokens" INTEGER NOT NULL DEFAULT 0,
"total_tokens" INTEGER NOT NULL DEFAULT 0,
"cached_tokens" INTEGER NOT NULL DEFAULT 0,
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "ai_usage_events_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE INDEX "ai_workspace_byok_configs_workspace_id_idx" ON "ai_workspace_byok_configs"("workspace_id");
-- CreateIndex
CREATE INDEX "ai_workspace_byok_configs_workspace_id_provider_enabled_sor_idx" ON "ai_workspace_byok_configs"("workspace_id", "provider", "enabled", "sort_order");
-- CreateIndex
CREATE UNIQUE INDEX "ai_workspace_byok_configs_workspace_id_provider_name_key" ON "ai_workspace_byok_configs"("workspace_id", "provider", "name");
-- CreateIndex
CREATE INDEX "ai_usage_events_workspace_id_created_at_idx" ON "ai_usage_events"("workspace_id", "created_at");
-- CreateIndex
CREATE INDEX "ai_usage_events_workspace_id_provider_source_created_at_idx" ON "ai_usage_events"("workspace_id", "provider_source", "created_at");
-- CreateIndex
CREATE INDEX "ai_usage_events_feature_kind_created_at_idx" ON "ai_usage_events"("feature_kind", "created_at");
-- CreateIndex
CREATE INDEX "ai_usage_events_quota_exempt_idx" ON "ai_usage_events"("user_id", "provider_source", "feature_kind", "billing_unit_id");
-- AddForeignKey
ALTER TABLE "ai_workspace_byok_configs" ADD CONSTRAINT "ai_workspace_byok_configs_workspace_id_fkey" FOREIGN KEY ("workspace_id") REFERENCES "workspaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "ai_usage_events" ADD CONSTRAINT "ai_usage_events_workspace_id_fkey" FOREIGN KEY ("workspace_id") REFERENCES "workspaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;