feat(worker): watermark versioning with atomic history regeneration
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
-- P4a Task 3:水印版本化——albums 双版本位列(watermarkVersion 已有 P1 起,
|
||||
-- 本迁移补「有效版本位」watermarkEnabled/watermarkEffectiveVersion,语义见
|
||||
-- packages/contracts/src/watermark.ts)+ 配置版本账本 watermark_configs +
|
||||
-- 历史重生成任务 watermark_jobs(id 兼作对外 jobId 与 BullMQ jobId)。
|
||||
-- 校对手决:Prisma 生成 DDL 固定 utf8mb4_unicode_ci,逐表改写为库级约定的
|
||||
-- utf8mb4_0900_bin(albumId/id/errorCode 等字符串列的大小写敏感语义依赖它;
|
||||
-- 新增两列非 VARCHAR,无校对关注)。
|
||||
-- AlterTable
|
||||
ALTER TABLE `albums` ADD COLUMN `watermarkEffectiveVersion` INTEGER NOT NULL DEFAULT 0,
|
||||
ADD COLUMN `watermarkEnabled` BOOLEAN NOT NULL DEFAULT false;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE `watermark_configs` (
|
||||
`id` VARCHAR(191) NOT NULL,
|
||||
`albumId` VARCHAR(64) NOT NULL,
|
||||
`configVersion` INTEGER NOT NULL,
|
||||
`config` JSON NOT NULL,
|
||||
`createdAt` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||
|
||||
UNIQUE INDEX `watermark_configs_albumId_configVersion_key`(`albumId`, `configVersion`),
|
||||
PRIMARY KEY (`id`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE `watermark_jobs` (
|
||||
`id` VARCHAR(191) NOT NULL,
|
||||
`albumId` VARCHAR(64) NOT NULL,
|
||||
`configVersion` INTEGER NOT NULL,
|
||||
`state` VARCHAR(16) NOT NULL DEFAULT 'pending',
|
||||
`progress` INTEGER NOT NULL DEFAULT 0,
|
||||
`total` INTEGER NOT NULL DEFAULT 0,
|
||||
`failed` INTEGER NOT NULL DEFAULT 0,
|
||||
`errorCode` VARCHAR(64) NULL,
|
||||
`createdAt` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||
`updatedAt` DATETIME(6) NOT NULL,
|
||||
|
||||
INDEX `watermark_jobs_albumId_createdAt_idx`(`albumId`, `createdAt`),
|
||||
PRIMARY KEY (`id`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|
||||
Reference in New Issue
Block a user