From aaaf0ac343a38bb9038f6b60800a0d5f5aa8b877 Mon Sep 17 00:00:00 2001 From: DongHyeonka Date: Tue, 18 Aug 2026 22:39:52 +0900 Subject: [PATCH] =?UTF-8?q?contract:=20ResponseMeta.page=20=EC=8A=A4?= =?UTF-8?q?=ED=82=A4=EB=A7=88=20=ED=99=95=EC=9E=A5=20=EB=B0=98=EC=98=81?= =?UTF-8?q?=ED=95=B4=20studio=20=EA=B3=84=EC=95=BD=20=EC=9E=AC=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit design-package 6a85d81이 ResponseMeta.page를 순수 null 타입에서 [object, null]로 넓혔다(openapi-generator가 순수 null 타입을 다루지 못해 생긴 계약 결함 수정, wire 의미는 그대로 — page는 여전히 항상 null). page의 생성 타입이 `null`에서 `{ [key: string]: unknown } | null`로 넓어졌다 — 의도된 변경이다. Co-Authored-By: Claude Opus 5 (1M context) --- .../tech-log/contracts/studio/canonical-source.json | 4 ++-- src/features/tech-log/contracts/studio/generated.ts | 6 ++++-- .../tech-log/contracts/studio/studio-api.openapi.yaml | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/features/tech-log/contracts/studio/canonical-source.json b/src/features/tech-log/contracts/studio/canonical-source.json index 128290c..094d82d 100644 --- a/src/features/tech-log/contracts/studio/canonical-source.json +++ b/src/features/tech-log/contracts/studio/canonical-source.json @@ -1,8 +1,8 @@ { "packageId": "@tech-log/studio-contract", "version": "3.0.0", - "digest": "sha256:8ec2170ccdb27bd7ef29b46d732527987cf69d2c9818f7fe1943cb4d12b0dde4", - "sourceRevision": "d170392", + "digest": "sha256:e44b9b50e30ccd876ba4a6d6e082b7b14fad602c56619d0eb196c07c756106b0", + "sourceRevision": "6a85d81", "operationIds": [ "getStudioSession", "getStudioDashboard", diff --git a/src/features/tech-log/contracts/studio/generated.ts b/src/features/tech-log/contracts/studio/generated.ts index d3f735a..3524be1 100644 --- a/src/features/tech-log/contracts/studio/generated.ts +++ b/src/features/tech-log/contracts/studio/generated.ts @@ -386,8 +386,10 @@ export interface components { requestId: string; traceId: string; correlationId?: string | null; - /** @description Studio는 body 안 cursor 페이지네이션을 쓰므로 항상 null이다 */ - page?: null; + /** @description Studio는 body 안 cursor 페이지네이션을 쓰므로 항상 null이다. 백엔드 템플릿의 ResponseMeta record가 이 필드를 직렬화한다. */ + page?: { + [key: string]: unknown; + } | null; }; ApiError: { /** @enum {string} */ diff --git a/src/features/tech-log/contracts/studio/studio-api.openapi.yaml b/src/features/tech-log/contracts/studio/studio-api.openapi.yaml index 8cc18c2..731a2f6 100644 --- a/src/features/tech-log/contracts/studio/studio-api.openapi.yaml +++ b/src/features/tech-log/contracts/studio/studio-api.openapi.yaml @@ -641,7 +641,7 @@ components: requestId: { type: string, minLength: 1, maxLength: 200 } traceId: { type: string, minLength: 1, maxLength: 200 } correlationId: { type: [string, "null"], maxLength: 200 } - page: { type: "null", description: Studio는 body 안 cursor 페이지네이션을 쓰므로 항상 null이다 } + page: { type: ["object", "null"], additionalProperties: true, description: "Studio는 body 안 cursor 페이지네이션을 쓰므로 항상 null이다. 백엔드 템플릿의 ResponseMeta record가 이 필드를 직렬화한다." } ApiError: type: object additionalProperties: false