| 1 | import { WorkStatus } from '@yikart/common' |
| 2 | import { z } from 'zod' |
| 3 | |
| 4 | // --------------------------------------------------------------------------- |
| 5 | // WorkLinkInfo |
| 6 | // --------------------------------------------------------------------------- |
| 7 | |
| 8 | export const WorkLinkInfoSchema = z.object({ |
| 9 | dataId: z.string().describe('数据 ID'), |
| 10 | uniqueId: z.string().describe('唯一标识'), |
| 11 | type: z.string().describe('类型'), |
| 12 | videoType: z.enum(['short', 'long']).optional().describe('视频类型'), |
| 13 | resolvedUrl: z.string().optional().describe('解析后的 URL'), |
| 14 | originalWorkLink: z.string().optional().describe('原始作品链接'), |
| 15 | workStatus: z.literal(WorkStatus.LINK_ERROR).optional().describe('作品状态'), |
| 16 | }) |
| 17 | export interface WorkLinkInfo extends z.infer<typeof WorkLinkInfoSchema> {} |
| 18 | |
| 19 | // --------------------------------------------------------------------------- |
| 20 | // WorkDetailInfo |
| 21 | // --------------------------------------------------------------------------- |
| 22 | |
| 23 | export const WorkDetailInfoSchema = z.object({ |
| 24 | dataId: z.string().describe('数据 ID'), |
| 25 | title: z.string().optional().describe('标题'), |
| 26 | desc: z.string().optional().describe('描述'), |
| 27 | topics: z.array(z.string()).optional().describe('话题列表'), |
| 28 | coverUrl: z.string().optional().describe('封面 URL'), |
| 29 | videoUrl: z.string().optional().describe('视频 URL'), |
| 30 | imgUrlList: z.array(z.string()).optional().describe('图片 URL 列表'), |
| 31 | publishTime: z.coerce.date().optional().describe('发布时间'), |
| 32 | type: z.string().describe('类型'), |
| 33 | videoType: z.enum(['short', 'long']).optional().describe('视频类型'), |
| 34 | duration: z.number().optional().describe('时长(秒)'), |
| 35 | rawData: z.record(z.string(), z.unknown()).optional().describe('原始数据'), |
| 36 | }) |
| 37 | export interface WorkDetailInfo extends z.infer<typeof WorkDetailInfoSchema> {} |
| 38 |