using System; using System.Threading.Tasks; using Mindforge.API.Models.Enums; using Mindforge.API.Models.Requests; using Mindforge.API.Services.Interfaces; using Mindforge.API.Exceptions; namespace Mindforge.API.Services { public class FileService : IFileService { private readonly IAgentService _agentService; private const LlmProvider DefaultProvider = LlmProvider.OpenAI; private const string DefaultModel = "gpt-5-mini"; public FileService(IAgentService agentService) { _agentService = agentService; } public async Task CheckFileAsync(FileCheckRequest request) { string systemPrompt; if (request.CheckType.ToLower() == "language") { systemPrompt = $@"Você é um revisor de textos sênior e especialista em língua portuguesa do Brasil. Sua tarefa é analisar o texto fornecido e corrigir rigorosamente todos os erros gramaticais, de concordância, pontuação, garantindo clareza, coesão e fluidez. Por favor, siga esta estrutura: 1. Retorne o texto completamente revisado e polido. 2. Não adicione nenhum texto adicional, apenas o texto revisado. 3. Não altere o sentido do texto, mantenha a mesma ideia. Apenas corrija os erros gramaticais, de concordância e pontuação. Responda única e exclusivamente em português do Brasil. Foque em textos de concursos públicos, principalmente para a banca Cebraspe."; } else if (request.CheckType.ToLower() == "content") { systemPrompt = $@"Você é um analista de conteúdo experiente, especializado em revisão crítica e verificação de fatos. Sua tarefa é realizar uma análise rigorosa do texto fornecido, identificando erros lógicos, imprecisões de conteúdo, contradições internas e inconsistências argumentativas. Por favor, siga esta estrutura: 1. Destaque cada problema encontrado no texto original. 2. Explique detalhadamente por que é um erro ou inconsistência. 3. Apresente sugestões claras e embasadas para reescrever ou corrigir os trechos problemáticos, melhorando a coerência e a lógica e a clareza do conteúdo. Responda única e exclusivamente em português do Brasil e mantenha um tom analítico e construtivo. Responda em tópicos para ser apresentados ao usuário, sendo sucinto e não extremamente detalhado. Os resumos serão utilizados para concursos públicos, principalmente para a banca Cebraspe. "; } else { throw new UserException("Tipo de verificação inválido. Use 'language' ou 'content'."); } string userPrompt = $"Arquivo: {request.FileName}\nConteúdo:\n{request.FileContent}"; return await _agentService.ProcessRequestAsync(DefaultProvider, systemPrompt, userPrompt, DefaultModel); } } }