﻿# 2026-04-14 - uploads api foundation

## O que mudou
- criado o endpoint `POST /adm/api/Uploads/simple` em `src/Modules/Uploads/Http/UploadsController.php` para concentrar o upload simples na camada de API
- extraída a lógica de upload simples para `src/Modules/Media/SimpleUploadService.php`, reduzindo o acoplamento do fluxo antigo em `upload.php`
- mantida compatibilidade do retorno legado (`response`, `url`, `filename`, `type`, `extension`, `size`, `errors`) para não quebrar telas que ainda consomem o formato antigo
- adicionado suporte inicial ao parâmetro `storage_provider`, permitindo escolher `local` ou `bunny` no mesmo fluxo de upload
- adicionado suporte inicial ao parâmetro `media_kind` para organizar melhor o caminho remoto quando o upload usar Bunny
- migradas várias telas e modais que ainda apontavam para `upload.php` para o novo endpoint `/adm/api/Uploads/simple`
- `upload.php` foi mantido apenas como bridge legada temporária e agora carrega o autoload antes de instanciar a classe nova
- criados endpoints de gerenciamento em `UploadsController` para configurações da política de upload, listagem operacional de arquivos e exportação local -> Bunny
- criada a base do file manager em `pages/admin/uploads-manager.php`, permitindo navegar arquivos locais e Bunny por provider/caminho
- evoluída a tela `pages/admin/uploads-manager.php` para modo galeria/grid com breadcrumb clicável, navegação entre pastas, preview de imagens e ação operacional de exportação para Bunny
- adicionada ação de exclusão para itens locais e Bunny via file manager, agora organizada em menu de ações por card (`3 pontinhos`) para reduzir ruído visual
- adicionada seleção em massa no file manager com barra de lote e exclusão em lote para arquivos/pastas do provider atual
- adicionadas ações de renomear e mover itens para qualquer pasta no file manager, usando a mesma operação de `move` tanto para rename quanto para mudança de diretório
- adicionada uma área de upload com Dropzone no topo do file manager, revelada por botão, enviando arquivos para a pasta atualmente aberta no manager
- corrigida a inicialização da Dropzone no file manager, definindo `action` no formulário e desabilitando `autoDiscover` para evitar o erro `No URL provided`
- ajustada a integração da Dropzone para reaproveitar instâncias já anexadas pelo template e evitar o erro `Dropzone already attached`, além de mover o botão de envio para a barra de ações da página
- adicionada listagem de diretório no client Bunny para suportar a visualização operacional do storage remoto
- ajustado o file manager para tratar falhas de autenticação/configuração do Bunny como aviso operacional, sem quebrar a tela
- registrado em `src/Modules/Media/BACKLOG.md` o próximo passo de produto para file manager de uploads e exportação para Bunny

## Intenção técnica
- tirar o upload simples do fluxo procedural isolado e trazer essa responsabilidade para a API
- permitir convivência segura entre storage local e Bunny sem duplicar endpoints por tipo de tela
- abrir caminho para aposentadoria do `upload.php` sem fazer um corte brusco nas telas legadas
- começar a unificar upload, mídia e storage remoto sob uma mesma camada operacional
- dar ao admin uma navegação visual real sobre os arquivos, em vez de depender só de tabela e campo de path manual

## Resultado
- o sistema já passa a ter um endpoint oficial de API para upload simples
- a base para seleção de provedor de mídia ficou preparada no backend
- o admin já ganha uma tela de file manager com navegação por pasta, breadcrumb e visualização em grid para arquivos locais e Bunny
- o Bunny com credencial inválida ou ausente deixa de derrubar o fluxo e passa a orientar o operador com aviso na própria tela
- a remoção definitiva do `upload.php` agora depende só de concluir a migração dos consumidores restantes e validar integrações externas que ainda possam chamar esse arquivo diretamente
