| 1 | import { createZodDto, PaginationDtoSchema, UserType } from '@yikart/common' |
| 2 | import { z } from 'zod' |
| 3 | |
| 4 | // 图片生成请求 |
| 5 | const AdminImageGenerationSchema = z.object({ |
| 6 | prompt: z.string().min(1).max(4000).describe('图片描述提示'), |
| 7 | model: z.string().describe('图片生成模型'), |
| 8 | n: z.number().int().min(1).max(10).optional().describe('生成图片数量'), |
| 9 | quality: z.string().optional().describe('图片质量'), |
| 10 | response_format: z.enum(['url', 'b64_json']).optional().describe('返回格式'), |
| 11 | size: z.string().optional().describe('图片尺寸'), |
| 12 | style: z.string().optional().describe('图片风格'), |
| 13 | user: z.string().optional().describe('用户标识符'), |
| 14 | userId: z.string().describe('用户Id'), |
| 15 | userType: z.enum(UserType).describe('用户类型'), |
| 16 | }) |
| 17 | export class AdminImageGenerationDto extends createZodDto(AdminImageGenerationSchema) {} |
| 18 | |
| 19 | // 通用视频生成请求 |
| 20 | const videoGenerationRequestSchema = z.object({ |
| 21 | model: z.string().min(1).describe('模型名称'), |
| 22 | userId: z.string().describe('用户Id'), |
| 23 | userType: z.enum(UserType).describe('用户类型'), |
| 24 | prompt: z.string().min(1).max(4000).describe('提示词'), |
| 25 | groupId: z.string().optional().describe('素材组 ID,传入后生成成功时保存到该素材组'), |
| 26 | image: z.string().or(z.string().array()).optional().describe('图片URL或base64'), |
| 27 | image_tail: z.string().optional().describe('尾帧图片URL或base64'), |
| 28 | mode: z.string().optional().describe('生成模式'), |
| 29 | size: z.string().optional().describe('尺寸'), |
| 30 | duration: z.number().optional().describe('时长'), |
| 31 | metadata: z.record(z.string(), z.any()).optional().describe('其他参数'), |
| 32 | }) |
| 33 | export class AdminVideoGenerationRequestDto extends createZodDto(videoGenerationRequestSchema) {} |
| 34 | |
| 35 | const AdminVideoGenerationStatusSchema = z.object({ |
| 36 | userId: z.string().describe('用户Id'), |
| 37 | userType: z.enum(UserType).describe('用户类型'), |
| 38 | taskId: z.string().describe('任务ID'), |
| 39 | }) |
| 40 | export class AdminVideoGenerationStatusSchemaDto extends createZodDto(AdminVideoGenerationStatusSchema) {} |
| 41 | |
| 42 | // 通用视频任务状态查询 |
| 43 | const adminListUserVideoTasksQuerySchema = z.object({ |
| 44 | ...PaginationDtoSchema.shape, |
| 45 | userId: z.string().describe('用户Id'), |
| 46 | userType: z.enum(UserType).describe('用户类型'), |
| 47 | }) |
| 48 | |
| 49 | export class AdminUserListVideoTasksQueryDto extends createZodDto(adminListUserVideoTasksQuerySchema) {} |
| 50 | |
| 51 | const imageEditSchema = z.object({ |
| 52 | userId: z.string().describe('用户Id'), |
| 53 | userType: z.enum(UserType).describe('用户类型'), |
| 54 | model: z.string().describe('图片编辑模型'), |
| 55 | image: z.string().or(z.string().array()).describe('原始图片'), |
| 56 | prompt: z.string().min(1).max(4000).describe('编辑描述'), |
| 57 | mask: z.string().optional().describe('遮罩图片'), |
| 58 | n: z.int().min(1).max(100).optional().describe('生成图片数量'), |
| 59 | size: z.string().optional().describe('图片尺寸'), |
| 60 | response_format: z.enum(['url', 'b64_json']).optional().describe('返回格式'), |
| 61 | user: z.string().optional().describe('用户标识符'), |
| 62 | }) |
| 63 | |
| 64 | export class AdminImageEditDto extends createZodDto(imageEditSchema) {} |
| 65 |