feat(api): embed slots with ov replica and public feed
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
-- P4b Task 2:展示位副本表(cn embed_slots 的展示投影,slot-state 事件应用)。
|
||||
-- 校对手决:Prisma 生成 DDL 固定 utf8mb4_unicode_ci,改写为库级约定的
|
||||
-- utf8mb4_0900_bin(slotToken 主键/albumPublicToken 的大小写敏感寻址语义
|
||||
-- 依赖它,同 albums_ov.publicToken 口径)。无墓碑:下线是 enabled=false 的
|
||||
-- 全量快照替换(cn 无删除端点)。
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE `embed_slots_ov` (
|
||||
`slotToken` VARCHAR(32) NOT NULL,
|
||||
`enabled` BOOLEAN NOT NULL DEFAULT true,
|
||||
`albumPublicToken` VARCHAR(32) NULL,
|
||||
`configVersion` INTEGER NOT NULL DEFAULT 1,
|
||||
`settings` JSON NOT NULL,
|
||||
`entityVersion` INTEGER NOT NULL,
|
||||
`updatedAt` DATETIME(6) NOT NULL,
|
||||
|
||||
PRIMARY KEY (`slotToken`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|
||||
@@ -162,6 +162,23 @@ model visit_requests {
|
||||
@@index([createdAt])
|
||||
}
|
||||
|
||||
// —— 副本域:embed_slots_ov(cn embed_slots 的展示投影,P4b Task 2)——
|
||||
// slotToken 即 cn embed_slots.publicToken(公开端点按它寻址,稳定不变);
|
||||
// albumPublicToken 为绑定相册的公开令牌(null=未绑定 → 公开端 404)——副本
|
||||
// 外键落公开令牌而非 cn id:嵌入侧只认 token(A22 换绑不认相册身份)。
|
||||
// entityVersion 是 cn 权威版本(应用写入,ov 不自增);settings 为载荷原文
|
||||
// (当前公开响应不含设置——loader 经 data-* 配置,副本位为对账/后续使用保留)。
|
||||
// 无墓碑:下线是 enabled=false 的全量快照替换(cn 无删除端点)。
|
||||
model embed_slots_ov {
|
||||
slotToken String @id @db.VarChar(32)
|
||||
enabled Boolean @default(true)
|
||||
albumPublicToken String? @db.VarChar(32)
|
||||
configVersion Int @default(1)
|
||||
settings Json
|
||||
entityVersion Int
|
||||
updatedAt DateTime @updatedAt @db.DateTime(6)
|
||||
}
|
||||
|
||||
// —— 统计回传队列:outbox_stat_events(ov→cn,Task 9 消费)——
|
||||
// 与 cn outbox_events 同构的发送位:sentAt 为空即重发(中断恢复),statVersion
|
||||
// 让 cn 侧「仅更高版本替换」幂等。total 恒为权威快照值(非增量)。
|
||||
|
||||
Reference in New Issue
Block a user