feat(gtos): página de gerenciamento de GTOs com filtros e paginação
continuous-integration/webhook Deploy concluído (VPS4)

Backend:
- routes/gtos.js: GET /api/gtos reescrito com filtros (all/vinculada/enviada),
  busca ILIKE por patient_name e gto_number, paginação (page/limit),
  retorna { rows, total, pages } + thumb_url da primeira imagem vinculada.

Frontend:
- GtosPage.jsx (/gtos): cards de stats clicáveis (Todas/Vinculadas/Enviadas)
  com contadores em tempo real; tabela com colunas: thumb, número, paciente,
  qtd imagens (badge colorido), descrição, data, status, ações; paginação
  numérica; busca com debounce 350ms.
- StatusBadge: Pendente / Vinculada / Enviada com cores distintas.
- GtoDetailModal: info completa, grid de imagens vinculadas com thumb +
  botão desvincular, toggle enviada/pendente com feedback visual.
- CreateGtoModal: formulário com número, paciente, descrição.
- Sidebar: item GTOs (fa-file-medical) entre Pacientes e Novo Paciente.
- App.jsx: rota /gtos (ProtectedRoute).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
VPS 4 Deploy Agent
2026-05-31 16:06:42 +02:00
parent 98dcb729a5
commit f027842c76
4 changed files with 625 additions and 24 deletions
+7
View File
@@ -13,6 +13,7 @@ import ResetPage from './pages/ResetPage';
import DownloadPage from './pages/DownloadPage';
import PatientsPage from './pages/PatientsPage';
import SettingsPage from './pages/SettingsPage';
import GtosPage from './pages/GtosPage';
export default function App() {
return (
@@ -69,6 +70,12 @@ export default function App() {
</AdminRoute>
} />
<Route path="/gtos" element={
<ProtectedRoute>
<GtosPage />
</ProtectedRoute>
} />
{/* Catch-all: redireciona para home */}
<Route path="*" element={<Navigate to="/" replace />} />
</Routes>