fix: 게임 outbox 운영 시각을 UTC wall로 통일한다

KST 세션에서 ReadModel과 WebPush outbox의 producer provenance를 분리하고 due, lease, retention 비교를 UTC wall 계약으로 맞춘다.

기존 TIMESTAMP(3) 타입과 이전 DML 형태를 유지하면서 populated upgrade, pending requeue, delivered 보존과 두 번째 deploy no-op을 자동 검증한다.
This commit is contained in:
2026-08-24 07:40:45 +00:00
parent 3bda79ccf8
commit fa9cee36cf
9 changed files with 765 additions and 15 deletions
+8 -8
View File
@@ -97,12 +97,12 @@ model ReadModelOutbox {
id BigInt @id @default(autoincrement())
payload Json
attempts Int @default(0)
availableAt DateTime @default(now()) @map("available_at")
lockedAt DateTime? @map("locked_at")
availableAt DateTime @default(dbgenerated("CURRENT_TIMESTAMP AT TIME ZONE 'UTC'")) @map("available_at") @db.Timestamp(3)
lockedAt DateTime? @map("locked_at") @db.Timestamp(3)
lockOwner String? @map("lock_owner")
deliveredAt DateTime? @map("delivered_at")
deliveredAt DateTime? @map("delivered_at") @db.Timestamp(3)
lastError String? @map("last_error")
createdAt DateTime @default(now()) @map("created_at")
createdAt DateTime @default(dbgenerated("CURRENT_TIMESTAMP AT TIME ZONE 'UTC'")) @map("created_at") @db.Timestamp(3)
@@index([deliveredAt, availableAt, id], map: "read_model_outbox_delivered_at_available_at_id_idx")
@@map("read_model_outbox")
@@ -116,12 +116,12 @@ model WebPushOutbox {
year Int?
month Int?
attempts Int @default(0)
availableAt DateTime @default(now()) @map("available_at")
lockedAt DateTime? @map("locked_at")
availableAt DateTime @default(dbgenerated("CURRENT_TIMESTAMP AT TIME ZONE 'UTC'")) @map("available_at") @db.Timestamp(3)
lockedAt DateTime? @map("locked_at") @db.Timestamp(3)
lockOwner String? @map("lock_owner")
deliveredAt DateTime? @map("delivered_at")
deliveredAt DateTime? @map("delivered_at") @db.Timestamp(3)
lastError String? @map("last_error")
createdAt DateTime @default(now()) @map("created_at")
createdAt DateTime @default(dbgenerated("CURRENT_TIMESTAMP AT TIME ZONE 'UTC'")) @map("created_at") @db.Timestamp(3)
@@index([deliveredAt, availableAt, id], map: "web_push_outbox_delivered_at_available_at_id_idx")
@@map("web_push_outbox")