35 lines
1.6 KiB
SQL
35 lines
1.6 KiB
SQL
|
|
-- P4a Task 5:用量阈值(单行配置表,迁移内种子行)+ 阈值告警账本(A23 后台侧)。
|
|||
|
|
-- 校对手决:Prisma 生成 DDL 固定 utf8mb4_unicode_ci,逐表改写为库级约定的
|
|||
|
|
-- utf8mb4_0900_bin(id/kind/albumId 等字符串列的大小写敏感语义依赖它)。
|
|||
|
|
-- 「同 kind+albumId 活跃告警唯一」为应用级约束(MySQL 无部分唯一索引):
|
|||
|
|
-- evaluateUsage 以单行配置 FOR UPDATE 作串行化锚点(packages/db-cn/src/usage.ts)。
|
|||
|
|
-- 阈值两维缺省 NULL=停用;种子行固定 id 见 USAGE_THRESHOLDS_SINGLETON_ID。
|
|||
|
|
|
|||
|
|
-- CreateTable
|
|||
|
|
CREATE TABLE `usage_thresholds` (
|
|||
|
|
`id` VARCHAR(191) NOT NULL,
|
|||
|
|
`storageBytes` BIGINT NULL,
|
|||
|
|
`perAlbumBytes` BIGINT NULL,
|
|||
|
|
`updatedAt` DATETIME(6) NOT NULL,
|
|||
|
|
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|
|||
|
|
|
|||
|
|
-- 单行种子(PUT /admin/usage/thresholds 恒 upsert 本行;缺失行由 evaluate
|
|||
|
|
-- 兜底视作双维停用,但迁移种子保证常规路径下不变量成立)。
|
|||
|
|
INSERT INTO `usage_thresholds` (`id`, `storageBytes`, `perAlbumBytes`, `updatedAt`)
|
|||
|
|
VALUES ('usage-thresholds-single-row', NULL, NULL, CURRENT_TIMESTAMP(6));
|
|||
|
|
|
|||
|
|
-- CreateTable
|
|||
|
|
CREATE TABLE `usage_alerts` (
|
|||
|
|
`id` VARCHAR(191) NOT NULL,
|
|||
|
|
`kind` VARCHAR(16) NOT NULL,
|
|||
|
|
`albumId` VARCHAR(64) NULL,
|
|||
|
|
`message` VARCHAR(1024) NOT NULL,
|
|||
|
|
`createdAt` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
|||
|
|
`resolvedAt` DATETIME(6) NULL,
|
|||
|
|
|
|||
|
|
INDEX `usage_alerts_resolvedAt_idx`(`resolvedAt`),
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|