import { api, API_BASE_URL } from "@/lib/api-client";

export interface PlagiarismCheckRequest {
  text: string;
  submission_id?: number;
}

export interface PlagiarismCheckResult {
  similarity_score: number;
  matches: { source: string; excerpt: string; score: number }[];
}

export const plagiarismService = {
  async check(body: PlagiarismCheckRequest): Promise<PlagiarismCheckResult> {
    return api.post<PlagiarismCheckResult>("/plagiarism/check", body);
  },

  async getReport(submissionId: number): Promise<PlagiarismCheckResult> {
    return api.get<PlagiarismCheckResult>(`/plagiarism/report/${submissionId}`);
  },

  async downloadReport(submissionId: number): Promise<Blob> {
    const res = await fetch(`${API_BASE_URL}/plagiarism/report/${submissionId}/download`, {
      headers: { Authorization: `Bearer ${localStorage.getItem("encoach_token") ?? ""}` },
    });
    if (!res.ok) throw new Error(`Download failed: ${res.status} ${res.statusText}`);
    return res.blob();
  },
};
