using ChatRAG.Models; namespace ChatRAG.Services.Contracts { /// /// Interface unificada para operações de documentos de texto. /// Permite alternar entre MongoDB, Qdrant, ou outros providers sem quebrar código. /// public interface ITextDataService { // ======================================== // MÉTODOS ORIGINAIS (compatibilidade com TextData.cs atual) // ======================================== /// /// Salva texto no banco (método original do seu TextData.cs) /// /// Título do documento /// Conteúdo do documento /// ID do projeto Task SalvarNoMongoDB(string titulo, string texto, string projectId); /// /// Salva ou atualiza texto com ID específico (método original) /// /// ID do documento (null para criar novo) /// Título do documento /// Conteúdo do documento /// ID do projeto Task SalvarNoMongoDB(string? id, string titulo, string texto, string projectId); /// /// Processa texto completo dividindo por seções (método original) /// /// Texto com divisões marcadas por ** /// ID do projeto Task SalvarTextoComEmbeddingNoMongoDB(string textoCompleto, string projectId); /// /// Recupera todos os documentos (método original) /// /// Lista de todos os documentos Task> GetAll(); /// /// Recupera documentos por projeto (método original) /// /// ID do projeto /// Lista de documentos do projeto Task> GetByPorjectId(string projectId); /// /// Recupera documento por ID (método original) /// /// ID do documento /// Documento ou null se não encontrado Task GetById(string id); // ======================================== // MÉTODOS NOVOS (interface moderna e unificada) // ======================================== /// /// Salva documento usando modelo unificado /// /// Dados do documento /// ID do documento criado Task SaveDocumentAsync(DocumentInput document); /// /// Atualiza documento existente /// /// ID do documento /// Novos dados do documento Task UpdateDocumentAsync(string id, DocumentInput document); /// /// Remove documento /// /// ID do documento Task DeleteDocumentAsync(string id); /// /// Verifica se documento existe /// /// ID do documento /// True se existe, False caso contrário Task DocumentExistsAsync(string id); /// /// Recupera documento por ID (formato moderno) /// /// ID do documento /// Documento ou null se não encontrado Task GetDocumentAsync(string id); /// /// Lista documentos por projeto (formato moderno) /// /// ID do projeto /// Lista de documentos do projeto Task> GetDocumentsByProjectAsync(string projectId); /// /// Conta documentos /// /// Filtrar por projeto (opcional) /// Número de documentos Task GetDocumentCountAsync(string? projectId = null); // ======================================== // OPERAÇÕES EM LOTE // ======================================== /// /// Salva múltiplos documentos de uma vez /// /// Lista de documentos /// Lista de IDs dos documentos criados Task> SaveDocumentsBatchAsync(List documents); /// /// Remove múltiplos documentos de uma vez /// /// Lista de IDs para remover Task DeleteDocumentsBatchAsync(List ids); // ======================================== // INFORMAÇÕES DO PROVIDER // ======================================== /// /// Nome do provider (MongoDB, Qdrant, etc.) /// string ProviderName { get; } /// /// Estatísticas e métricas do provider /// /// Informações sobre performance, saúde, etc. Task> GetProviderStatsAsync(); } }