contract: discriminator enum 정정 반영해 studio 계약 재생성
design-package d170392이 discriminator 판별 필드를 const에서 단일값
enum으로 바꿨다(wire 의미 동일, openapi-generator 7.18.0의
discriminator+const NPE를 피하려는 정정). vendor된 계약과 생성 타입을
다시 맞춘다. 실질적인 리터럴 타입은 그대로다 — JSDoc 태그만
@constant에서 @enum {string}으로 바뀌었다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
d23a18f659
commit
9244f5c15d
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"packageId": "@tech-log/studio-contract",
|
||||
"version": "3.0.0",
|
||||
"digest": "sha256:25ed2e9f5b76bfeacf66e5a84ea8daf05979faa0b54e4980781f02115bbf0627",
|
||||
"sourceRevision": "3e8a164",
|
||||
"digest": "sha256:8ec2170ccdb27bd7ef29b46d732527987cf69d2c9818f7fe1943cb4d12b0dde4",
|
||||
"sourceRevision": "d170392",
|
||||
"operationIds": [
|
||||
"getStudioSession",
|
||||
"getStudioDashboard",
|
||||
|
||||
@@ -588,7 +588,7 @@ export interface components {
|
||||
relations: components["schemas"]["RelationInput"][];
|
||||
};
|
||||
CaseInput: components["schemas"]["WorkingCopyInputBase"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
kind: "CASE";
|
||||
problem: string;
|
||||
conclusion: string;
|
||||
@@ -608,7 +608,7 @@ export interface components {
|
||||
kind: "CASE";
|
||||
};
|
||||
ReferenceInput: components["schemas"]["WorkingCopyInputBase"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
kind: "REFERENCE";
|
||||
purpose: string;
|
||||
rules: components["schemas"]["ReferenceRule"][];
|
||||
@@ -625,7 +625,7 @@ export interface components {
|
||||
kind: "REFERENCE";
|
||||
};
|
||||
QuestionInput: components["schemas"]["WorkingCopyInputBase"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
kind: "QUESTION";
|
||||
/**
|
||||
* @description Backend Inquiry lifecycle의 축약 view다.
|
||||
@@ -652,7 +652,7 @@ export interface components {
|
||||
kind: "QUESTION";
|
||||
};
|
||||
ProjectDecisionInput: components["schemas"]["WorkingCopyInputBase"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
kind: "PROJECT_DECISION";
|
||||
/**
|
||||
* @description UI 용어다. Backend Domain의 `ACCEPTED`/`ADOPTED` 명칭이 다르면
|
||||
@@ -687,7 +687,7 @@ export interface components {
|
||||
updatedAt: string;
|
||||
};
|
||||
CaseWorkingCopy: components["schemas"]["WorkingCopyBase"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
kind: "CASE";
|
||||
problem: string;
|
||||
conclusion: string;
|
||||
@@ -704,7 +704,7 @@ export interface components {
|
||||
kind: "CASE";
|
||||
};
|
||||
ReferenceWorkingCopy: components["schemas"]["WorkingCopyBase"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
kind: "REFERENCE";
|
||||
purpose: string;
|
||||
rules: components["schemas"]["ReferenceRule"][];
|
||||
@@ -721,7 +721,7 @@ export interface components {
|
||||
kind: "REFERENCE";
|
||||
};
|
||||
QuestionWorkingCopy: components["schemas"]["WorkingCopyBase"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
kind: "QUESTION";
|
||||
/** @enum {string|null} */
|
||||
questionStatus: "OPEN" | "RESOLVED" | null;
|
||||
@@ -740,7 +740,7 @@ export interface components {
|
||||
kind: "QUESTION";
|
||||
};
|
||||
ProjectDecisionWorkingCopy: components["schemas"]["WorkingCopyBase"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
kind: "PROJECT_DECISION";
|
||||
/** @enum {string|null} */
|
||||
decisionStatus: "PROPOSED" | "ADOPTED" | null;
|
||||
@@ -911,7 +911,7 @@ export interface components {
|
||||
};
|
||||
Inline: components["schemas"]["InlineText"] | components["schemas"]["InlineEmphasis"] | components["schemas"]["InlineStrong"] | components["schemas"]["InlineCode"] | components["schemas"]["InlineLink"] | components["schemas"]["InlineStatus"];
|
||||
InlineEmphasis: components["schemas"]["InlineContainer"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
type?: "EMPHASIS";
|
||||
} & {
|
||||
/**
|
||||
@@ -921,7 +921,7 @@ export interface components {
|
||||
type: "EMPHASIS";
|
||||
};
|
||||
InlineStrong: components["schemas"]["InlineContainer"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
type?: "STRONG";
|
||||
} & {
|
||||
/**
|
||||
@@ -966,7 +966,7 @@ export interface components {
|
||||
items: components["schemas"]["ListItem"][];
|
||||
};
|
||||
UnorderedListBlock: components["schemas"]["ListBlockBase"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
type?: "UNORDERED_LIST";
|
||||
} & {
|
||||
/**
|
||||
@@ -976,7 +976,7 @@ export interface components {
|
||||
type: "UNORDERED_LIST";
|
||||
};
|
||||
OrderedListBlock: components["schemas"]["ListBlockBase"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
type?: "ORDERED_LIST";
|
||||
} & {
|
||||
/**
|
||||
@@ -1074,7 +1074,7 @@ export interface components {
|
||||
};
|
||||
CaseRenderBlock: components["schemas"]["HeadingBlock"] | components["schemas"]["ParagraphBlock"] | components["schemas"]["BlockquoteBlock"] | components["schemas"]["UnorderedListBlock"] | components["schemas"]["OrderedListBlock"] | components["schemas"]["CodeBlock"] | components["schemas"]["DataTableBlock"] | components["schemas"]["CalloutBlock"] | components["schemas"]["EvidenceFigureBlock"];
|
||||
CasePublicRenderModel: components["schemas"]["PublicRenderModelBase"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
kind: "CASE";
|
||||
problem: string;
|
||||
conclusion: string;
|
||||
@@ -1091,7 +1091,7 @@ export interface components {
|
||||
kind: "CASE";
|
||||
};
|
||||
ReferencePublicRenderModel: components["schemas"]["PublicRenderModelBase"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
kind: "REFERENCE";
|
||||
purpose: string;
|
||||
rules: components["schemas"]["ReferenceRule"][];
|
||||
@@ -1113,7 +1113,7 @@ export interface components {
|
||||
linkLabel: string;
|
||||
};
|
||||
QuestionPublicRenderModel: components["schemas"]["PublicRenderModelBase"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
kind: "QUESTION";
|
||||
/**
|
||||
* @description 공개 표현용 축약 상태다. Domain의 `INVESTIGATING`/`PAUSED`는 `OPEN`으로 표현된다.
|
||||
@@ -1135,7 +1135,7 @@ export interface components {
|
||||
kind: "QUESTION";
|
||||
};
|
||||
ProjectDecisionPublicRenderModel: components["schemas"]["PublicRenderModelBase"] & {
|
||||
/** @constant */
|
||||
/** @enum {string} */
|
||||
kind: "PROJECT_DECISION";
|
||||
/** @enum {string} */
|
||||
status: "PROPOSED" | "ADOPTED";
|
||||
|
||||
@@ -928,7 +928,7 @@ components:
|
||||
- type: object
|
||||
required: [kind, problem, conclusion, environment, reproduction, lastVerifiedOn, bodyMarkdown]
|
||||
properties:
|
||||
kind: { type: string, const: CASE }
|
||||
kind: { type: string, enum: [CASE] }
|
||||
problem: { type: string, maxLength: 100000 }
|
||||
conclusion: { type: string, maxLength: 100000 }
|
||||
environment: { type: string, maxLength: 100000 }
|
||||
@@ -947,7 +947,7 @@ components:
|
||||
- type: object
|
||||
required: [kind, purpose, rules, applyWhen, exceptions, examples, verifiedOn]
|
||||
properties:
|
||||
kind: { type: string, const: REFERENCE }
|
||||
kind: { type: string, enum: [REFERENCE] }
|
||||
purpose: { type: string, maxLength: 100000 }
|
||||
rules: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/ReferenceRule" } }
|
||||
applyWhen: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/OrderedText" } }
|
||||
@@ -961,7 +961,7 @@ components:
|
||||
- type: object
|
||||
required: [kind, questionStatus, facts, assumptions, unknowns, constraints, options, nextValidation, resolution]
|
||||
properties:
|
||||
kind: { type: string, const: QUESTION }
|
||||
kind: { type: string, enum: [QUESTION] }
|
||||
questionStatus:
|
||||
type: [string, "null"]
|
||||
enum: [OPEN, RESOLVED, null]
|
||||
@@ -988,7 +988,7 @@ components:
|
||||
- type: object
|
||||
required: [kind, decisionStatus, decidedOn, statement, rationale, consequences]
|
||||
properties:
|
||||
kind: { type: string, const: PROJECT_DECISION }
|
||||
kind: { type: string, enum: [PROJECT_DECISION] }
|
||||
decisionStatus:
|
||||
type: [string, "null"]
|
||||
enum: [PROPOSED, ADOPTED, null]
|
||||
@@ -1035,7 +1035,7 @@ components:
|
||||
- type: object
|
||||
required: [kind, problem, conclusion, environment, reproduction, lastVerifiedOn, bodyMarkdown]
|
||||
properties:
|
||||
kind: { type: string, const: CASE }
|
||||
kind: { type: string, enum: [CASE] }
|
||||
problem: { type: string, maxLength: 100000 }
|
||||
conclusion: { type: string, maxLength: 100000 }
|
||||
environment: { type: string, maxLength: 100000 }
|
||||
@@ -1049,7 +1049,7 @@ components:
|
||||
- type: object
|
||||
required: [kind, purpose, rules, applyWhen, exceptions, examples, verifiedOn]
|
||||
properties:
|
||||
kind: { type: string, const: REFERENCE }
|
||||
kind: { type: string, enum: [REFERENCE] }
|
||||
purpose: { type: string, maxLength: 100000 }
|
||||
rules: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/ReferenceRule" } }
|
||||
applyWhen: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/OrderedText" } }
|
||||
@@ -1063,7 +1063,7 @@ components:
|
||||
- type: object
|
||||
required: [kind, questionStatus, facts, assumptions, unknowns, constraints, options, nextValidation, resolution]
|
||||
properties:
|
||||
kind: { type: string, const: QUESTION }
|
||||
kind: { type: string, enum: [QUESTION] }
|
||||
questionStatus: { type: [string, "null"], enum: [OPEN, RESOLVED, null] }
|
||||
facts: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/OrderedText" } }
|
||||
assumptions: { type: array, maxItems: 50, items: { $ref: "#/components/schemas/OrderedText" } }
|
||||
@@ -1082,7 +1082,7 @@ components:
|
||||
- type: object
|
||||
required: [kind, decisionStatus, decidedOn, statement, rationale, consequences]
|
||||
properties:
|
||||
kind: { type: string, const: PROJECT_DECISION }
|
||||
kind: { type: string, enum: [PROJECT_DECISION] }
|
||||
decisionStatus: { type: [string, "null"], enum: [PROPOSED, ADOPTED, null] }
|
||||
decidedOn: { type: [string, "null"], format: date }
|
||||
statement: { type: string, maxLength: 100000 }
|
||||
@@ -1251,7 +1251,7 @@ components:
|
||||
additionalProperties: false
|
||||
required: [type, text]
|
||||
properties:
|
||||
type: { type: string, const: TEXT }
|
||||
type: { type: string, enum: [TEXT] }
|
||||
text: { type: string, minLength: 1, maxLength: 100000 }
|
||||
InlineContainer:
|
||||
type: object
|
||||
@@ -1264,14 +1264,14 @@ components:
|
||||
additionalProperties: false
|
||||
required: [type, code]
|
||||
properties:
|
||||
type: { type: string, const: INLINE_CODE }
|
||||
type: { type: string, enum: [INLINE_CODE] }
|
||||
code: { type: string, minLength: 1, maxLength: 100000 }
|
||||
InlineLink:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required: [type, label, href]
|
||||
properties:
|
||||
type: { type: string, const: LINK }
|
||||
type: { type: string, enum: [LINK] }
|
||||
label: { type: string, minLength: 1, maxLength: 100000 }
|
||||
href: { type: string, format: uri, maxLength: 2000 }
|
||||
InlineStatus:
|
||||
@@ -1279,7 +1279,7 @@ components:
|
||||
additionalProperties: false
|
||||
required: [type, label, tone]
|
||||
properties:
|
||||
type: { type: string, const: STATUS }
|
||||
type: { type: string, enum: [STATUS] }
|
||||
label: { type: string, minLength: 1, maxLength: 120 }
|
||||
tone: { type: string, enum: [warning, evidence, neutral] }
|
||||
Inline:
|
||||
@@ -1303,18 +1303,18 @@ components:
|
||||
unevaluatedProperties: false
|
||||
allOf:
|
||||
- { $ref: "#/components/schemas/InlineContainer" }
|
||||
- { type: object, properties: { type: { type: string, const: EMPHASIS } } }
|
||||
- { type: object, properties: { type: { type: string, enum: [EMPHASIS] } } }
|
||||
InlineStrong:
|
||||
unevaluatedProperties: false
|
||||
allOf:
|
||||
- { $ref: "#/components/schemas/InlineContainer" }
|
||||
- { type: object, properties: { type: { type: string, const: STRONG } } }
|
||||
- { type: object, properties: { type: { type: string, enum: [STRONG] } } }
|
||||
HeadingBlock:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required: [type, id, level, content]
|
||||
properties:
|
||||
type: { type: string, const: HEADING }
|
||||
type: { type: string, enum: [HEADING] }
|
||||
id: { type: string, minLength: 1, maxLength: 200 }
|
||||
level: { type: integer, minimum: 2, maximum: 4 }
|
||||
content: { type: array, maxItems: 1000, items: { $ref: "#/components/schemas/Inline" } }
|
||||
@@ -1323,14 +1323,14 @@ components:
|
||||
additionalProperties: false
|
||||
required: [type, content]
|
||||
properties:
|
||||
type: { type: string, const: PARAGRAPH }
|
||||
type: { type: string, enum: [PARAGRAPH] }
|
||||
content: { type: array, maxItems: 1000, items: { $ref: "#/components/schemas/Inline" } }
|
||||
BlockquoteBlock:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required: [type, content]
|
||||
properties:
|
||||
type: { type: string, const: BLOCKQUOTE }
|
||||
type: { type: string, enum: [BLOCKQUOTE] }
|
||||
content: { type: array, maxItems: 1000, items: { $ref: "#/components/schemas/Inline" } }
|
||||
ListItem:
|
||||
type: object
|
||||
@@ -1349,18 +1349,18 @@ components:
|
||||
unevaluatedProperties: false
|
||||
allOf:
|
||||
- { $ref: "#/components/schemas/ListBlockBase" }
|
||||
- { type: object, properties: { type: { type: string, const: UNORDERED_LIST } } }
|
||||
- { type: object, properties: { type: { type: string, enum: [UNORDERED_LIST] } } }
|
||||
OrderedListBlock:
|
||||
unevaluatedProperties: false
|
||||
allOf:
|
||||
- { $ref: "#/components/schemas/ListBlockBase" }
|
||||
- { type: object, properties: { type: { type: string, const: ORDERED_LIST } } }
|
||||
- { type: object, properties: { type: { type: string, enum: [ORDERED_LIST] } } }
|
||||
CodeBlock:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required: [type, code, language, label]
|
||||
properties:
|
||||
type: { type: string, const: CODE_BLOCK }
|
||||
type: { type: string, enum: [CODE_BLOCK] }
|
||||
code: { type: string, maxLength: 100000 }
|
||||
language: { type: [string, "null"], maxLength: 100 }
|
||||
label: { type: [string, "null"], maxLength: 200 }
|
||||
@@ -1391,7 +1391,7 @@ components:
|
||||
additionalProperties: false
|
||||
required: [type, id, caption, rowHeaderColumn, columns, rows]
|
||||
properties:
|
||||
type: { type: string, const: DATA_TABLE }
|
||||
type: { type: string, enum: [DATA_TABLE] }
|
||||
id: { type: string, minLength: 1, maxLength: 200 }
|
||||
caption: { type: string, maxLength: 1000 }
|
||||
rowHeaderColumn: { type: [integer, "null"], minimum: 1 }
|
||||
@@ -1402,7 +1402,7 @@ components:
|
||||
additionalProperties: false
|
||||
required: [type, tone, label, content]
|
||||
properties:
|
||||
type: { type: string, const: CALLOUT }
|
||||
type: { type: string, enum: [CALLOUT] }
|
||||
tone: { type: string, enum: [warning, info] }
|
||||
label: { type: string, maxLength: 200 }
|
||||
content: { type: array, maxItems: 1000, items: { $ref: "#/components/schemas/Inline" } }
|
||||
@@ -1425,7 +1425,7 @@ components:
|
||||
Asset decorative=true → alt="" 허용
|
||||
```
|
||||
properties:
|
||||
type: { type: string, const: EVIDENCE_FIGURE }
|
||||
type: { type: string, enum: [EVIDENCE_FIGURE] }
|
||||
key: { type: string, minLength: 1, maxLength: 200 }
|
||||
alt: { type: string, maxLength: 1000 }
|
||||
caption: { type: string, maxLength: 1000 }
|
||||
@@ -1477,7 +1477,7 @@ components:
|
||||
- type: object
|
||||
required: [kind, problem, conclusion, environment, reproduction, lastVerifiedOn, bodyBlocks]
|
||||
properties:
|
||||
kind: { type: string, const: CASE }
|
||||
kind: { type: string, enum: [CASE] }
|
||||
problem: { type: string, minLength: 1, maxLength: 100000 }
|
||||
conclusion: { type: string, minLength: 1, maxLength: 100000 }
|
||||
environment: { type: string, maxLength: 100000 }
|
||||
@@ -1491,7 +1491,7 @@ components:
|
||||
- type: object
|
||||
required: [kind, purpose, rules, applyWhen, exceptions, examples, verifiedOn]
|
||||
properties:
|
||||
kind: { type: string, const: REFERENCE }
|
||||
kind: { type: string, enum: [REFERENCE] }
|
||||
purpose: { type: string, minLength: 1, maxLength: 100000 }
|
||||
rules: { type: array, minItems: 1, maxItems: 50, items: { $ref: "#/components/schemas/ReferenceRule" } }
|
||||
applyWhen: { type: array, minItems: 1, maxItems: 50, items: { $ref: "#/components/schemas/OrderedText" } }
|
||||
@@ -1513,7 +1513,7 @@ components:
|
||||
- type: object
|
||||
required: [kind, status, facts, assumptions, unknowns, constraints, options, nextValidation, resolution]
|
||||
properties:
|
||||
kind: { type: string, const: QUESTION }
|
||||
kind: { type: string, enum: [QUESTION] }
|
||||
status:
|
||||
type: string
|
||||
enum: [OPEN, RESOLVED]
|
||||
@@ -1535,7 +1535,7 @@ components:
|
||||
- type: object
|
||||
required: [kind, status, decidedOn, statement, rationale, consequences]
|
||||
properties:
|
||||
kind: { type: string, const: PROJECT_DECISION }
|
||||
kind: { type: string, enum: [PROJECT_DECISION] }
|
||||
status: { type: string, enum: [PROPOSED, ADOPTED] }
|
||||
decidedOn: { type: string, format: date }
|
||||
statement: { type: string, minLength: 1, maxLength: 100000 }
|
||||
|
||||
Reference in New Issue
Block a user