// Server-only helpers for AI request logging and rate limiting.
// Imported with `await import("@/lib/ai-monitoring.server")` from server-fn handlers.
import { supabaseAdmin } from "@/integrations/supabase/client.server";

export type AiRequestKind = "photoshoot_plan" | "moodboard_image";
export type AiRequestStatus = "ok" | "error" | "rate_limited" | "validation_failed";

export interface LogAiRequestArgs {
  userId: string | null;
  kind: AiRequestKind;
  status: AiRequestStatus;
  latencyMs?: number;
  promptTokens?: number;
  completionTokens?: number;
  totalTokens?: number;
  model?: string;
  errorCode?: string;
  errorMessage?: string;
}

export async function logAiRequest(args: LogAiRequestArgs): Promise<void> {
  try {
    await supabaseAdmin.from("ai_request_log").insert({
      user_id: args.userId,
      kind: args.kind,
      status: args.status,
      latency_ms: args.latencyMs ?? null,
      prompt_tokens: args.promptTokens ?? null,
      completion_tokens: args.completionTokens ?? null,
      total_tokens: args.totalTokens ?? null,
      model: args.model ?? null,
      error_code: args.errorCode ?? null,
      error_message: args.errorMessage?.slice(0, 1000) ?? null,
    });
  } catch (e) {
    // Monitoring must never break the user request.
    console.error("[ai-monitoring] failed to log request:", e);
  }
}
