import { z } from 'zod'; export const RepStatsSchema = z.object({ codVendedor: z.number().int(), nomeVendedor: z.string().nullable(), pedidosMes: z.number().int(), faturamentoMes: z.number(), ticketMedio: z.number(), pctMeta: z.number(), }); export type RepStats = z.infer; export const EquipeResponseSchema = z.object({ reps: z.array(RepStatsSchema), totalReps: z.number().int(), syncedAt: z.iso.datetime(), }); export type EquipeResponse = z.infer; // Card de disputa/análise por supervisor na aba Equipe (visão gerente/admin). // Time = reps cujo cod_supervisor aponta para este supervisor + o próprio // supervisor (mesma semântica de getTeamCodes). Métricas agregadas do time no mês. export const SupervisorCardSchema = z.object({ codSupervisor: z.number().int(), nomeSupervisor: z.string().nullable(), faturamentoMes: z.number(), faturamentoMesAnterior: z.number(), variacaoPct: z.number().nullable(), // null quando não há base no mês anterior pedidosMes: z.number().int(), ticketMedio: z.number(), metaTotal: z.number(), pctMeta: z.number(), totalClientes: z.number().int(), clientesPositivados: z.number().int(), pctPositivacao: z.number(), repsTotal: z.number().int(), repsAtivos: z.number().int(), // reps do time que faturaram no mês }); export type SupervisorCard = z.infer; export const SupervisoresResponseSchema = z.object({ supervisores: z.array(SupervisorCardSchema), syncedAt: z.iso.datetime(), }); export type SupervisoresResponse = z.infer;