import { apiService } from "./api";

const ASSISTANT_TIMEOUT_MS = 300_000;

export interface AssistantOutputResponse {
  output?: string;
}

class AssistentePromptsService {
  async gerar(instrucao: string, signal?: AbortSignal): Promise<string> {
    if (!instrucao?.trim()) {
      throw new Error("Instrução é obrigatória");
    }

    const response = await apiService.post<AssistantOutputResponse>(
      "https://prod-hgtx-intelligence-n8n.hgtx.com.br/webhook/codex/parecer/assistente-criar-prompt",
      { instrucao: instrucao.trim() },
      { timeout: ASSISTANT_TIMEOUT_MS, signal }
    );

    if (response.data?.output != null) {
      return String(response.data.output);
    }

    throw new Error("Resposta da API sem texto gerado (output)");
  }

  async refinar(promptAtual: string, instrucao: string, signal?: AbortSignal): Promise<string> {
    if (!promptAtual?.trim()) {
      throw new Error("Prompt atual é obrigatório");
    }

    if (!instrucao?.trim()) {
      throw new Error("Instrução é obrigatória");
    }

    const response = await apiService.post<AssistantOutputResponse>(
      "https://prod-hgtx-intelligence-n8n.hgtx.com.br/webhook/codex/parecer/assistente-melhorar-prompt",
      {
        instrucao: instrucao.trim(),
        prompt_atual: promptAtual.trim(),
      },
      { timeout: ASSISTANT_TIMEOUT_MS, signal }
    );

    if (response.data?.output != null) {
      return String(response.data.output);
    }

    throw new Error("Resposta da API sem texto gerado (output)");
  }
}

export const assistentePromptsService = new AssistentePromptsService();
