feat: 일괄 릴리스 실행 계획을 추가한다

Gateway와 권한 있는 프로필 작업을 하나의 고정 커밋과 순서로 영속화한다. 앞 대상 성공 뒤 다음 작업을 claim하고 실패 대상은 같은 작업 ID로 재시도한다.
This commit is contained in:
2026-08-25 09:19:12 +00:00
parent ac48f2ae5b
commit 9613b482c1
11 changed files with 609 additions and 14 deletions
@@ -0,0 +1,38 @@
CREATE TABLE "gateway_bulk_release" (
"id" UUID NOT NULL,
"source_mode" "GatewaySourceMode" NOT NULL,
"source_ref" TEXT NOT NULL,
"resolved_commit_sha" TEXT NOT NULL,
"reason" TEXT,
"requested_by" TEXT NOT NULL,
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMPTZ(3) NOT NULL,
CONSTRAINT "gateway_bulk_release_pkey" PRIMARY KEY ("id")
);
ALTER TABLE "gateway_operation"
ADD COLUMN "bulk_release_id" UUID,
ADD COLUMN "bulk_order" INTEGER;
ALTER TABLE "gateway_release_operation"
ADD COLUMN "bulk_release_id" UUID,
ADD COLUMN "bulk_order" INTEGER;
ALTER TABLE "gateway_operation"
ADD CONSTRAINT "gateway_operation_bulk_release_id_fkey"
FOREIGN KEY ("bulk_release_id") REFERENCES "gateway_bulk_release"("id")
ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE "gateway_release_operation"
ADD CONSTRAINT "gateway_release_operation_bulk_release_id_fkey"
FOREIGN KEY ("bulk_release_id") REFERENCES "gateway_bulk_release"("id")
ON DELETE SET NULL ON UPDATE CASCADE;
CREATE INDEX "gateway_bulk_release_created_at_idx"
ON "gateway_bulk_release"("created_at");
CREATE INDEX "gateway_operation_bulk_release_id_bulk_order_idx"
ON "gateway_operation"("bulk_release_id", "bulk_order");
CREATE INDEX "gateway_release_operation_bulk_release_id_bulk_order_idx"
ON "gateway_release_operation"("bulk_release_id", "bulk_order");