/**
 * Zod schemas for AI agent inputs and outputs.
 *
 * Shared between server-side validation and any future admin UI.
 */

import { z } from 'zod';

// ─── ImageApprovalAgent ───────────────────────────────────────────────────────

export const searchEngineImageReviewInputSchema = z.object({
  imageUrl: z.url(),
  dealTitle: z.string().trim().min(1).max(120),
  category: z.string().trim().min(1).max(50),
});

export const uploadedImageReviewInputSchema = z.object({
  imageUrl: z.url(),
  dealTitle: z.string().trim().min(1).max(120),
  uploaderType: z.enum(['user', 'vendor']),
});

// ─── ReviewRemovalPrescoringAgent ─────────────────────────────────────────────

export const reviewRemovalPrescoringInputSchema = z.object({
  reviewBody: z.string().trim().min(1).max(5000),
  reviewRating: z.number().int().min(1).max(5).nullable(),
  vendorReply: z.string().trim().max(5000).optional(),
  removalReason: z.string().trim().min(1).max(2000),
});

// ─── VendorViolationFlagAgent ─────────────────────────────────────────────────

export const vendorViolationSignalsSchema = z.object({
  unresolvedComplaints: z.number().int().min(0),
  avgRating: z.number().min(0).max(5),
  removedReviews: z.number().int().min(0),
  refundRate: z.number().min(0).max(1),
  daysSinceFirstSale: z.number().int().min(0),
});

export const vendorViolationFlagInputSchema = z.object({
  vendorId: z.uuid(),
  signals: vendorViolationSignalsSchema,
});
