feat(sync): cn event coverage, bootstrap and outbox sender

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-18 15:21:41 +08:00
parent 3d6e9ce175
commit 65726702f3
43 changed files with 3333 additions and 181 deletions
@@ -0,0 +1,10 @@
-- P2 Task 3:cn 事件补全——albums/categories/album_assets 增 entityVersion
-- (事件版本条件自增,同 photos 模式);outbox_events 增 priority
-- (normal|high:相册下线/照片隐藏删除类高优先级,发送器批次内优先投递)。
-- VARCHAR 列显式 utf8mb4_0900_bin(沿用库级约定:--create-only 后手工定校对,
-- Prisma 生成 DDL 固定 unicode_ci)。INTEGER 列无校对问题;新列全部带默认值,
-- 存量行与 P1 流程不受影响(相册/分类/资产存量行版本从 1 起算)。
ALTER TABLE `album_assets` ADD COLUMN `entityVersion` INTEGER NOT NULL DEFAULT 1;
ALTER TABLE `albums` ADD COLUMN `entityVersion` INTEGER NOT NULL DEFAULT 1;
ALTER TABLE `categories` ADD COLUMN `entityVersion` INTEGER NOT NULL DEFAULT 1;
ALTER TABLE `outbox_events` ADD COLUMN `priority` VARCHAR(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin NOT NULL DEFAULT 'normal';
+8 -4
View File
@@ -66,6 +66,7 @@ model albums {
downloadEnabled Boolean @default(true)
originalDownloadEnabled Boolean @default(false)
watermarkVersion Int @default(0)
entityVersion Int @default(1) // P2 Task 3:album.updated 事件版本(同 photos 模式)
createdAt DateTime @default(now()) @db.DateTime(6)
updatedAt DateTime @updatedAt @db.DateTime(6)
@@ -99,10 +100,11 @@ model album_members {
}
model categories {
id String @id @default(cuid())
albumId String @db.VarChar(64)
sortOrder Int @default(0)
createdAt DateTime @default(now()) @db.DateTime(6)
id String @id @default(cuid())
albumId String @db.VarChar(64)
sortOrder Int @default(0)
entityVersion Int @default(1) // P2 Task 3:category.* 事件版本(同 photos 模式)
createdAt DateTime @default(now()) @db.DateTime(6)
@@index([albumId, sortOrder])
}
@@ -125,6 +127,7 @@ model album_assets {
state String @default("pending") @db.VarChar(16) // pending|effective(行内一次性上传会话,P1b Task 3)
expectedBytes Int @default(0) // init 申明字节数(complete head 核验依据)
contentType String @default("") @db.VarChar(64) // init 申明 MIME(complete head 核验依据)
entityVersion Int @default(1) // P2 Task 3:asset.updated 事件版本(仅 effective 迁移自增)
createdAt DateTime @default(now()) @db.DateTime(6)
@@index([albumId, kind])
@@ -198,6 +201,7 @@ model outbox_events {
albumId String @db.VarChar(64)
photoId String? @db.VarChar(64)
entityVersion Int
priority String @default("normal") @db.VarChar(16) // normal|high(P2 Task 3:下线/隐藏/删除类 high,发送器批次内优先)
payload Json
occurredAt DateTime @default(now()) @db.DateTime(6)
deliveredAt DateTime? @db.DateTime(6)