Files
Genarrative/packages/shared/src/contracts/puzzleWorkSummary.ts
2026-05-17 05:50:33 +08:00

65 lines
1.7 KiB
TypeScript

import type { JsonObject } from './common';
import type { PuzzleAnchorPack, PuzzleDraftLevel } from './puzzleAgentDraft';
export type PuzzleWorkPublicationStatus = 'draft' | 'published';
export type PuzzleWorkGenerationStatus = PuzzleDraftLevel['generationStatus'];
export interface PuzzleWorkSummary {
workId: string;
profileId: string;
ownerUserId: string;
sourceSessionId?: string | null;
authorDisplayName: string;
workTitle?: string;
workDescription?: string;
levelName: string;
summary: string;
themeTags: string[];
coverImageSrc: string | null;
coverAssetId?: string | null;
publicationStatus: PuzzleWorkPublicationStatus;
updatedAt: string;
publishedAt: string | null;
playCount?: number;
remixCount?: number;
likeCount?: number;
recentPlayCount7d?: number;
pointIncentiveTotalHalfPoints?: number;
pointIncentiveClaimedPoints?: number;
pointIncentiveTotalPoints?: number;
pointIncentiveClaimablePoints?: number;
publishReady: boolean;
generationStatus?: PuzzleWorkGenerationStatus | null;
levels?: PuzzleDraftLevel[];
}
export interface PuzzleWorkProfile extends PuzzleWorkSummary {
anchorPack: PuzzleAnchorPack;
metadata?: JsonObject | null;
}
export interface PuzzleWorksResponse {
items: PuzzleWorkSummary[];
}
export interface PuzzleGalleryWorkRef {
workId: string;
profileId: string;
}
export interface PuzzleGalleryResponse {
items: PuzzleWorkSummary[];
previewRefs?: PuzzleGalleryWorkRef[];
hasMore?: boolean;
nextCursor?: string | null;
totalCount?: number;
}
export interface PuzzleWorkDetailResponse {
item: PuzzleWorkProfile;
}
export interface PuzzleWorkMutationResponse {
item: PuzzleWorkProfile;
}