chore(admin-service): 添加系统维护和共管钱包的数据库迁移

添加缺失的 migration 文件,包含:
- system_maintenances 表 (系统维护公告)
- WalletSessionStatus 枚举
- co_managed_wallet_sessions 表 (共管钱包会话)
- co_managed_wallets 表 (共管钱包记录)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-27 23:36:42 -08:00
parent 1b5bcf3fda
commit e51450d9f9
1 changed files with 85 additions and 0 deletions

View File

@ -0,0 +1,85 @@
-- =============================================================================
-- System Maintenance & Co-Managed Wallet Migration
-- 系统维护公告 + 共管钱包系统
-- =============================================================================
-- -----------------------------------------------------------------------------
-- 1. 系统维护公告表
-- -----------------------------------------------------------------------------
CREATE TABLE "system_maintenances" (
"id" TEXT NOT NULL,
"title" VARCHAR(100) NOT NULL,
"message" TEXT NOT NULL,
"start_time" TIMESTAMP(3) NOT NULL,
"end_time" TIMESTAMP(3) NOT NULL,
"is_active" BOOLEAN NOT NULL DEFAULT false,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
"created_by" TEXT NOT NULL,
"updated_by" TEXT,
CONSTRAINT "system_maintenances_pkey" PRIMARY KEY ("id")
);
CREATE INDEX "system_maintenances_is_active_idx" ON "system_maintenances"("is_active");
CREATE INDEX "system_maintenances_start_time_end_time_idx" ON "system_maintenances"("start_time", "end_time");
-- -----------------------------------------------------------------------------
-- 2. 共管钱包会话状态枚举
-- -----------------------------------------------------------------------------
CREATE TYPE "WalletSessionStatus" AS ENUM ('WAITING', 'READY', 'PROCESSING', 'COMPLETED', 'FAILED', 'CANCELLED');
-- -----------------------------------------------------------------------------
-- 3. 共管钱包会话表
-- -----------------------------------------------------------------------------
CREATE TABLE "co_managed_wallet_sessions" (
"id" TEXT NOT NULL,
"wallet_name" VARCHAR(100) NOT NULL,
"threshold_t" INTEGER NOT NULL,
"threshold_n" INTEGER NOT NULL,
"invite_code" VARCHAR(20) NOT NULL,
"status" "WalletSessionStatus" NOT NULL DEFAULT 'WAITING',
"participants" TEXT NOT NULL,
"current_round" INTEGER NOT NULL DEFAULT 0,
"total_rounds" INTEGER NOT NULL DEFAULT 3,
"public_key" VARCHAR(200),
"error" TEXT,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
"created_by" VARCHAR(100) NOT NULL,
CONSTRAINT "co_managed_wallet_sessions_pkey" PRIMARY KEY ("id")
);
CREATE UNIQUE INDEX "co_managed_wallet_sessions_invite_code_key" ON "co_managed_wallet_sessions"("invite_code");
CREATE INDEX "co_managed_wallet_sessions_invite_code_idx" ON "co_managed_wallet_sessions"("invite_code");
CREATE INDEX "co_managed_wallet_sessions_status_idx" ON "co_managed_wallet_sessions"("status");
CREATE INDEX "co_managed_wallet_sessions_created_by_idx" ON "co_managed_wallet_sessions"("created_by");
CREATE INDEX "co_managed_wallet_sessions_created_at_idx" ON "co_managed_wallet_sessions"("created_at");
-- -----------------------------------------------------------------------------
-- 4. 共管钱包表
-- -----------------------------------------------------------------------------
CREATE TABLE "co_managed_wallets" (
"id" TEXT NOT NULL,
"session_id" TEXT NOT NULL,
"name" VARCHAR(100) NOT NULL,
"public_key" VARCHAR(200) NOT NULL,
"threshold_t" INTEGER NOT NULL,
"threshold_n" INTEGER NOT NULL,
"participants" TEXT NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"created_by" VARCHAR(100) NOT NULL,
CONSTRAINT "co_managed_wallets_pkey" PRIMARY KEY ("id")
);
CREATE UNIQUE INDEX "co_managed_wallets_session_id_key" ON "co_managed_wallets"("session_id");
CREATE INDEX "co_managed_wallets_session_id_idx" ON "co_managed_wallets"("session_id");
CREATE INDEX "co_managed_wallets_public_key_idx" ON "co_managed_wallets"("public_key");
CREATE INDEX "co_managed_wallets_created_by_idx" ON "co_managed_wallets"("created_by");
CREATE INDEX "co_managed_wallets_created_at_idx" ON "co_managed_wallets"("created_at");