104 lines
2.6 KiB
TypeScript
104 lines
2.6 KiB
TypeScript
export type PuzzleTemplatePricingUnit = 'point';
|
||
|
||
export type PuzzleSupportedLevelMode =
|
||
| 'single'
|
||
| 'multi'
|
||
| 'single_or_multi';
|
||
|
||
export type PuzzleLevelGenerationMode = 'single_level' | 'multi_level';
|
||
|
||
export interface PuzzleTemplateCostRange {
|
||
minPoints: number;
|
||
maxPoints: number;
|
||
pricingUnit: PuzzleTemplatePricingUnit;
|
||
reason: string;
|
||
}
|
||
|
||
export type PuzzleDraftEditableFieldPath =
|
||
| 'workTitle'
|
||
| 'workDescription'
|
||
| 'workTags'
|
||
| 'levels[].levelName'
|
||
| 'levels[].pictureDescription'
|
||
| 'levels[].pictureReference';
|
||
|
||
export interface PuzzleTemplateImageGenerationPolicy {
|
||
allowUploadedImageDirectly: boolean;
|
||
allowGeneratedImages: boolean;
|
||
allowPerLevelReferenceImage: boolean;
|
||
defaultCandidateCountPerLevel: number;
|
||
}
|
||
|
||
export interface PuzzleCreativeTemplateProtocol {
|
||
templateId: string;
|
||
title: string;
|
||
summary: string;
|
||
previewImageSrc: string | null;
|
||
supportedLevelMode: PuzzleSupportedLevelMode;
|
||
minLevelCount: number;
|
||
maxLevelCount: number;
|
||
defaultLevelCount: number;
|
||
costRange: PuzzleTemplateCostRange;
|
||
requiredDraftFields: PuzzleDraftEditableFieldPath[];
|
||
imagePolicy: PuzzleTemplateImageGenerationPolicy;
|
||
}
|
||
|
||
export interface PuzzleCreativeTemplateSelection {
|
||
templateId: string;
|
||
title: string;
|
||
reason: string;
|
||
costRange: PuzzleTemplateCostRange;
|
||
supportedLevelMode: PuzzleSupportedLevelMode;
|
||
selectedLevelMode: PuzzleLevelGenerationMode;
|
||
plannedLevelCount: number;
|
||
requiresUserConfirmation: true;
|
||
}
|
||
|
||
export interface CreativePuzzleLevelDraftInput {
|
||
levelName: string;
|
||
pictureDescription: string;
|
||
/**
|
||
* 任务 A 冻结:Phase 1 采用正式字段方案,后续拼图草稿落地需补正式 pictureReference 字段。
|
||
*/
|
||
pictureReference?: string | null;
|
||
}
|
||
|
||
export interface CreativePuzzleDraftToolInput {
|
||
templateId: string;
|
||
templateCostRange: PuzzleTemplateCostRange;
|
||
workTitle: string;
|
||
workDescription: string;
|
||
workTags: string[];
|
||
levels: CreativePuzzleLevelDraftInput[];
|
||
}
|
||
|
||
export interface PuzzleImageGenerationPlanLevel {
|
||
levelId: string;
|
||
levelName: string;
|
||
pictureDescription: string;
|
||
imagePrompt: string;
|
||
pictureReference?: string | null;
|
||
candidateCount: number;
|
||
}
|
||
|
||
export interface PuzzleImageGenerationPlan {
|
||
mode: PuzzleLevelGenerationMode;
|
||
templateId: string;
|
||
estimatedCostRange: PuzzleTemplateCostRange;
|
||
levels: PuzzleImageGenerationPlanLevel[];
|
||
}
|
||
|
||
export type PuzzleDraftFieldPatchOperation =
|
||
| 'set'
|
||
| 'append'
|
||
| 'replace'
|
||
| 'remove';
|
||
|
||
export interface PuzzleDraftFieldPatch {
|
||
fieldPath: PuzzleDraftEditableFieldPath;
|
||
operation: PuzzleDraftFieldPatchOperation;
|
||
levelId?: string | null;
|
||
value: unknown;
|
||
rationale: string;
|
||
}
|