File size: 1,371 Bytes
e026dc9
 
 
fb3bb56
e026dc9
 
c5771b6
 
 
 
e026dc9
 
 
fb3bb56
365a483
e026dc9
c5771b6
 
e026dc9
 
 
fb3bb56
e026dc9
 
 
 
c5771b6
 
e026dc9
 
 
fb3bb56
e026dc9
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { z } from "zod";

export const generateAdSchema = z.object({
  niche: z.enum(["home_insurance", "glp1", "auto_insurance"]),
  num_images: z.number().min(1).max(10),
  image_model: z.string().optional().nullable(),
  target_audience: z.string().optional().nullable(),
  offer: z.string().optional().nullable(),
  use_trending: z.boolean().optional(),
  trending_context: z.string().optional().nullable(),
});

export const generateBatchSchema = z.object({
  niche: z.enum(["home_insurance", "glp1", "auto_insurance"]),
  count: z.number().min(1).max(100),
  image_model: z.string().optional().nullable(),
  target_audience: z.string().optional().nullable(),
  offer: z.string().optional().nullable(),
});

export const generateMatrixSchema = z.object({
  niche: z.enum(["home_insurance", "glp1", "auto_insurance"]),
  angle_key: z.string().optional().nullable(),
  concept_key: z.string().optional().nullable(),
  num_images: z.number().min(1).max(5),
  image_model: z.string().optional().nullable(),
  target_audience: z.string().optional().nullable(),
  offer: z.string().optional().nullable(),
});

export const testingMatrixSchema = z.object({
  niche: z.enum(["home_insurance", "glp1", "auto_insurance"]),
  angle_count: z.number().min(1).max(10),
  concept_count: z.number().min(1).max(10),
  strategy: z.enum(["balanced", "top_performers", "diverse"]),
});