返回 AiToEarn
image.dto.ts
1 import { createZodDto, UserType } from '@yikart/common'
2 import { z } from 'zod'
3
4 // 图片生成请求
5 const imageGenerationSchema = 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 })
15
16 export class ImageGenerationDto extends createZodDto(imageGenerationSchema) {}
17
18 // 图片编辑请求
19 const imageEditSchema = z.object({
20 model: z.string().describe('图片编辑模型'),
21 image: z.string().or(z.string().array()).describe('原始图片'),
22 prompt: z.string().min(1).max(4000).describe('编辑描述'),
23 mask: z.string().optional().describe('遮罩图片'),
24 n: z.int().min(1).max(1).optional().describe('生成图片数量'),
25 size: z.string().optional().describe('图片尺寸'),
26 response_format: z.enum(['url', 'b64_json']).optional().describe('返回格式'),
27 user: z.string().optional().describe('用户标识符'),
28 })
29
30 export class ImageEditDto extends createZodDto(imageEditSchema) {}
31
32 // 用户图片生成请求
33 const userImageGenerationSchema = z.object({
34 userId: z.string(),
35 userType: z.enum(UserType),
36 ...imageGenerationSchema.shape,
37 })
38
39 export class UserImageGenerationDto extends createZodDto(userImageGenerationSchema) {}
40
41 // 用户图片编辑请求
42 const userImageEditSchema = z.object({
43 userId: z.string(),
44 userType: z.enum(UserType),
45 ...imageEditSchema.shape,
46 })
47
48 export class UserImageEditDto extends createZodDto(userImageEditSchema) {}
49
50 // 图片生成模型查询DTO
51 const imageGenerationModelsQuerySchema = z.object({
52 userId: z.string().optional().describe('用户ID'),
53 userType: z.enum(UserType).optional().describe('用户类型'),
54 })
55
56 export class ImageGenerationModelsQueryDto extends createZodDto(imageGenerationModelsQuerySchema) {}
57
58 // 图片编辑模型查询DTO
59 const imageEditModelsQuerySchema = z.object({
60 userId: z.string().optional().describe('用户ID'),
61 userType: z.enum(UserType).optional().describe('用户类型'),
62 })
63
64 export class ImageEditModelsQueryDto extends createZodDto(imageEditModelsQuerySchema) {}
65
66 // Gemini 图片生成请求
67 const geminiImageGenerationSchema = z.object({
68 prompt: z.string().min(1).max(4000).describe('图片描述提示'),
69 imageUrls: z.array(z.string()).optional().describe('参考图片 URL 列表'),
70 imageSize: z.enum(['1K', '2K', '4K']).optional().describe('图片尺寸'),
71 aspectRatio: z.enum(['1:1', '2:3', '3:2', '3:4', '4:3', '4:5', '5:4', '9:16', '16:9', '21:9']).optional().describe('图片宽高比'),
72 model: z.enum(['gemini-3.1-flash-image-preview', 'gemini-3-pro-image-preview']).optional().describe('Gemini 图片模型'),
73 })
74
75 export class GeminiImageGenerationDto extends createZodDto(geminiImageGenerationSchema) {}
76
77 // 用户 Gemini 图片生成请求
78 const userGeminiImageGenerationSchema = z.object({
79 userId: z.string(),
80 userType: z.enum(UserType),
81 ...geminiImageGenerationSchema.shape,
82 })
83
84 export class UserGeminiImageGenerationDto extends createZodDto(userGeminiImageGenerationSchema) {}
85
85 lines TYPESCRIPT