diff --git a/app/game-engine/test/unificationFinalization.integration.test.ts b/app/game-engine/test/unificationFinalization.integration.test.ts index ac5897c8..d02d1f18 100644 --- a/app/game-engine/test/unificationFinalization.integration.test.ts +++ b/app/game-engine/test/unificationFinalization.integration.test.ts @@ -19,6 +19,7 @@ const fixtureId = 8_901; const serverId = 'che_unification_atomicity_fixture'; const profileName = 'che'; const userId = 'unification-atomicity-user'; +const legacyOfficerPicture = 'users/core/a369f064a434262b025bd2ebc70c60d5.jpg?=20260814'; integration('unification finalization transaction', () => { let db: GamePrismaClient; @@ -118,7 +119,7 @@ integration('unification finalization transaction', () => { dedication: 5, age: 40, crew: 400, - picture: '1.png', + picture: legacyOfficerPicture, turnTime: new Date('0190-07-01T00:00:00.000Z'), meta: { ownerName: '원자 사용자', @@ -354,7 +355,10 @@ integration('unification finalization transaction', () => { aux: { maxPower: 3_500, maxCrew: 400, maxCities: ['원자도시'] }, generals: [fixtureId], }); - expect(await db.emperor.count({ where: { serverId } })).toBe(1); + expect(legacyOfficerPicture.length).toBeGreaterThan(32); + expect(await db.emperor.findFirstOrThrow({ where: { serverId } })).toMatchObject({ + l12pic: legacyOfficerPicture, + }); expect( (await db.inheritancePoint.findUniqueOrThrow({ where: { userId_key: { userId, key: 'previous' } } })) .value diff --git a/app/gateway-api/test/releaseManifest.test.ts b/app/gateway-api/test/releaseManifest.test.ts index d324a5b8..05bd741e 100644 --- a/app/gateway-api/test/releaseManifest.test.ts +++ b/app/gateway-api/test/releaseManifest.test.ts @@ -39,7 +39,7 @@ describe('readReleaseManifest', () => { await expect(readReleaseManifest(workspaceRoot)).resolves.toMatchObject({ controllerProtocol: RELEASE_CONTROLLER_PROTOCOL, gatewaySchemaHead: '20260819000000_backfill_profile_release_source', - gameSchemaHead: '20260819000000_add_general_last_action', + gameSchemaHead: '20260820000000_widen_emperor_officer_pictures', }); }); diff --git a/packages/infra/prisma/migrations/20260820000000_widen_emperor_officer_pictures/migration.sql b/packages/infra/prisma/migrations/20260820000000_widen_emperor_officer_pictures/migration.sql new file mode 100644 index 00000000..c7ada2aa --- /dev/null +++ b/packages/infra/prisma/migrations/20260820000000_widen_emperor_officer_pictures/migration.sql @@ -0,0 +1,10 @@ +-- Ref의 emperior 관직 장수 사진 경로는 VARCHAR(64)다. 사용자 아이콘 URL처럼 +-- 32자를 넘는 정상 경로도 통일 archive에 저장할 수 있도록 원래 폭을 복원한다. +ALTER TABLE "emperior" ALTER COLUMN "l12pic" TYPE VARCHAR(64); +ALTER TABLE "emperior" ALTER COLUMN "l11pic" TYPE VARCHAR(64); +ALTER TABLE "emperior" ALTER COLUMN "l10pic" TYPE VARCHAR(64); +ALTER TABLE "emperior" ALTER COLUMN "l9pic" TYPE VARCHAR(64); +ALTER TABLE "emperior" ALTER COLUMN "l8pic" TYPE VARCHAR(64); +ALTER TABLE "emperior" ALTER COLUMN "l7pic" TYPE VARCHAR(64); +ALTER TABLE "emperior" ALTER COLUMN "l6pic" TYPE VARCHAR(64); +ALTER TABLE "emperior" ALTER COLUMN "l5pic" TYPE VARCHAR(64); diff --git a/release-manifest.json b/release-manifest.json index ed380510..60eadb22 100644 --- a/release-manifest.json +++ b/release-manifest.json @@ -2,6 +2,6 @@ "formatVersion": 1, "controllerProtocol": 2, "gatewaySchemaHead": "20260819000000_backfill_profile_release_source", - "gameSchemaHead": "20260819000000_add_general_last_action", + "gameSchemaHead": "20260820000000_widen_emperor_officer_pictures", "components": ["gateway-api", "gateway-frontend", "release-controller", "game-api", "game-engine", "game-frontend"] }