Epic_1_Sprint_8 Create plugin manager - robbiemu/aclarai GitHub Wiki
Tarefa: Criar Gerenciador de Plugins e Orquestrador de Importação
Descrição
Desenvolver um gerenciador de plugins e orquestrador de importação centralizado que coordene o processo de ingestão de arquivos de conversação. Este componente será responsável por escanear e selecionar automaticamente o plugin de formato apropriado (incluindo um plugin de fallback), passar o arquivo para o plugin selecionado e registrar o status da importação, conforme o fluxo definido em On-Pluggable-Formats.md
.
Escopo
Incluído
- Implementação de um gerenciador de plugins que escaneia e descobre todos os plugins de formato conhecidos (implementações da interface
Plugin
deOn-Pluggable-Formats.md
). - Desenvolvimento da lógica de orquestração (
convert_file_to_markdowns
deOn-Pluggable-Formats.md
) para:- Iterar sobre os plugins descobertos.
- Executar o método
can_accept(raw_input)
de cada plugin para determinar qual plugin pode processar o arquivo. - Executar o método
convert(raw_input, input_path)
do primeiro plugin ondecan_accept()
retornatrue
.
- Implementação de passagem do arquivo de entrada (
raw_input
einput_path
) para o plugin selecionado. - Registro detalhado do status de importação para cada arquivo processado (sucesso, ignorado - ex: duplicata, erro - ex: falha de conversão), que será utilizado pela UI de importação (próxima tarefa de Sprint 8).
- Suporte para o plugin de fallback (implementado em Sprint 2, conforme
Idea-default-plugin-task.md
) quando nenhum plugin específico de formato aceita o arquivo. O orquestrador deve garantir que o fallback seja a última opção. - Integração robusta com o sistema de plugins existente, garantindo que a interface
Plugin
(can_accept
,convert
) seja respeitada. - Documentação clara do processo de orquestração, da descoberta de plugins e de como estender o sistema com novos plugins.
- Implementação de tratamento de erros e exceções durante o processo de seleção e conversão de plugins.
Excluído
- Interface de usuário para visualização interativa do processo de importação (será implementada na tarefa seguinte deste sprint, "Build Gradio Import Panel").
- Implementação de plugins específicos para novos formatos (estes são desenvolvidos separadamente e plugados no sistema).
- Otimizações avançadas de desempenho para orquestração de milhões de arquivos.
- Processamento em lote de grandes volumes de arquivos (o foco é na orquestração de um arquivo por vez, que pode ser chamado em um loop).
- Análise avançada de conteúdo de arquivos para além do que os plugins
can_accept()
fornecem.
Critérios de Aceitação
- O gerenciador escaneia e descobre corretamente todos os plugins de formato disponíveis.
- O sistema executa o método
can_accept()
dos plugins na ordem correta e seleciona o primeiro plugin que retornatrue
. - O arquivo de entrada é passado corretamente para o método
convert()
do plugin selecionado. - O status de importação (sucesso, ignorado, erro) é registrado adequadamente para cada arquivo processado.
- O plugin de fallback é utilizado corretamente quando nenhum plugin específico aceita o arquivo.
- A integração funciona robustamente com a interface
Plugin
existente (On-Pluggable-Formats.md
). - A documentação clara do processo de orquestração e de como estender o sistema com novos plugins está disponível.
- Testes automatizados demonstram a funcionalidade com diferentes tipos de arquivo (aceitos por plugins específicos, aceitos pelo fallback, e não aceitos por nenhum).
Dependências
- Sistema de plugins base e interface
Plugin
implementados (conformeOn-Pluggable-Formats.md
). - Pelo menos um plugin de fallback implementado e funcional (de Sprint 2, conforme
Idea-default-plugin-task.md
). - Sistema de criação de arquivos Markdown Tier 1 (de Sprint 2), que será o consumidor final da saída do orquestrador.
Entregáveis
- Código-fonte do gerenciador de plugins e orquestrador de importação.
- Implementação da lógica de registro de status de importação.
- Documentação do processo de orquestração e extensão.
- Testes unitários e de integração para o orquestrador.
Estimativa de Esforço
- 2 dias de trabalho
Riscos e Mitigações
- Risco: Falhas na detecção do plugin apropriado ou na ordem de prioridade dos plugins.
- Mitigação: Implementar logging detalhado do processo de seleção de plugins. Definir e documentar uma ordem de prioridade clara para plugins (ex: plugins mais específicos primeiro, fallback por último).
- Risco: Conflitos ou erros entre plugins com capacidades sobrepostas.
- Mitigação: A regra de "primeiro plugin que aceita" mitiga isso. No entanto, testar com cenários de sobreposição e garantir que os plugins sejam bem isolados.
- Risco: Falhas durante o processo de importação dentro de um plugin não são adequadamente tratadas pelo orquestrador.
- Mitigação: O orquestrador deve capturar exceções lançadas pelos plugins (
try...except
ao chamarplugin.convert()
) e registrar o status de erro, impedindo que uma falha em um plugin interrompa o processo geral de importação.
- Mitigação: O orquestrador deve capturar exceções lançadas pelos plugins (
Notas Técnicas
- Considerar o uso de um padrão de design Chain of Responsibility ou Strategy para a cascata de plugins, embora a implementação direta de um loop
for
sobre uma lista ordenada de plugins seja suficiente para o MVP. - Implementar um mecanismo de descoberta dinâmica de plugins (e.g., usando
entry_points
ou um registro simples) para que novos plugins possam ser adicionados sem modificar o código do orquestrador. - Estruturar logs de forma clara para facilitar o diagnóstico de problemas, indicando qual plugin foi tentado, qual aceitou, e o resultado da conversão.
- A saída do orator (
list[MarkdownOutput]
) deve ser passada para o componente responsável por escrever os arquivos Markdown Tier 1 no vault (de Sprint 2).