chore(eslint): DDD refactor de imports — fechar Onda 5 (PR 5.3)#112
Conversation
🎉 Fecha Onda 5: 108 → 0 errors (-108). ESLint TOTAL: 164 → 0 errors em 4 PRs (#109, #110, #111, este). ## Estratégia DDD Regra `no-restricted-imports` (eslint.config.js) bloqueia: 1. Imports cross-feature deep (`@/features/X/...`) — força entry points 2. Imports relativos profundos (`../../...`) 3. INTRA-feature via alias (`@/features/X/Y` quando arquivo está em X) ## Batch A — INTRA-feature (106 fixes em 42 arquivos) Pattern: `@/features/X/Y/Z` → caminho relativo via path.relative() Ex (src/features/inbox/components/chat/ChatHeader.tsx): - ANTES: `@/features/inbox/components/ai-tools/VisionIcon` - DEPOIS: `../ai-tools/VisionIcon` Distribuição: - 92 inbox (52 chat, 12 contact-details, 8 components, 5 hooks, 3 services, 3 virtualized, 3 conversation-list, 2 realtime, 2 templates, 2 search, 1 monitoring, 1 mocks) - 7 auth (5 components, 1 hooks, 1 context) - 3 admin (2 hooks, 1 services) - 3 connections (2 hooks, 1 services) - 1 sla (1 components) Script: /tmp/fix-intra.mjs (Node + path.relative) - 106/106 sucesso, zero falhas - 1 read/write por arquivo (eficiente) - Ordem desc por linha (não invalida índices) ## Batch B — CROSS-feature (2 fixes) Imports de outra feature DEVEM usar entry point (`@/features/X`), não path interno (`@/features/X/hooks/...`). Os barrels já existiam (`auth/index.ts` e `sla/index.ts` fazem `export * from './hooks'`), só não estavam sendo usados: - src/features/inbox/components/ChatPanel.tsx: `@/features/auth/hooks/useUserRole` → `@/features/auth` - src/features/inbox/components/RealtimeInboxView.tsx: `@/features/sla/hooks/useSLAAlerts` → `@/features/sla` ## Validação - bunx eslint . → 0 errors, 1330 warnings (Onda 5 ZERADA) - bunx tsc --noEmit → ✓ sem erros (typecheck pristine) - bun run build → ✓ built in 58.09s (zero regressões) - 44 files changed, 108 insertions(+), 108 deletions(-) ## Stress-test (10 cenários) ✓ path.relative gera `../foo` ou `./foo` corretamente ✓ Sem imports circulares (auth/sla não importam inbox) ✓ Comments inline preservados (replace só no string interno) ✓ BOM/CRLF tratados pelo Node ✓ index.ts implícito resolvido pelo TS path mapping ✓ Build não quebrou — tsconfig path mapping continua funcionando ✓ Typecheck sem regressão ✓ Sem sessão paralela (verificado via git reflog) ✓ Barrels já existiam, useUserRole/useSLAAlerts já re-exportados ✓ Eslint --fix NÃO usado (só explicit replace, sem side effects) ## Pós-Onda 5 Próximo do roadmap pré-deploy: - PR #108 (preserve/faxina) — decidir mergear ou fechar - 8 dependabots — aplicar recomendação A (fechar com TODO pós-deploy) - Fase B10 — patch 9 vulns npm - Fase B5 — ENV_SETUP doc - Fase C — Dockerfile + deploy zapp.atomicabr.com.br
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (45)
WalkthroughEste PR refatora sistematicamente importações em 49 arquivos, convertendo caminhos alias absolutos ( ChangesRefatoração de Importações: Aliases Absolutos para Caminhos Relativos
Estimated code review effort🎯 2 (Simples) | ⏱️ ~8 minutos Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Pull request overview
Este PR conclui a “Onda 5” eliminando erros de ESLint relacionados à regra no-restricted-imports, alinhando os imports ao boundary DDD do monorepo (evitando deep imports via alias dentro da própria feature e usando entry points para cross-feature).
Changes:
- Refatoração mecânica de imports intra-feature (ex.:
@/features/inbox/...→ caminhos relativos) em diversos módulos deinbox,auth,connections,adminesla. - Ajuste de imports cross-feature para usar barrel entry points (ex.:
@/features/auth,@/features/sla) em vez de paths internos. - Inclusão de
design-system-audit.mdno.gitignore(arquivo gerado por script de auditoria de design system).
Reviewed changes
Copilot reviewed 44 out of 45 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| src/features/sla/components/SLAHistoryDashboard.tsx | Troca import intra-feature de hooks para caminho relativo (../hooks). |
| src/features/inbox/services/whatsappStatusService.ts | Troca import intra-feature para caminho relativo (../data-access/...). |
| src/features/inbox/services/messageService.ts | Ajusta imports intra-feature para relativos (repo + type import de realtime). |
| src/features/inbox/hooks/useWhatsAppStatus.ts | Ajusta imports intra-feature para relativos (service + types). |
| src/features/inbox/hooks/useMessages.ts | Ajusta imports intra-feature para relativos (service/repo + type). |
| src/features/inbox/hooks/realtime/useRealtimeNotifications.ts | Ajusta type import para path relativo ao módulo de realtime. |
| src/features/inbox/hooks/realtime/useMessageUpdateBatcher.ts | Ajusta type import para path relativo ao módulo de realtime. |
| src/features/inbox/components/virtualized/index.ts | Ajusta exports do barrel para paths relativos. |
| src/features/inbox/components/TemplatesWithVariables.tsx | Ajusta import do hook de templates para path relativo. |
| src/features/inbox/components/templates/TemplateEditorDialog.tsx | Ajusta imports (template-utils + type Template) para paths relativos. |
| src/features/inbox/components/search/GlobalSearchResults.tsx | Ajusta type import (SearchResult) para path relativo. |
| src/features/inbox/components/search/GlobalSearchFilters.tsx | Ajusta type imports de filtros para path relativo. |
| src/features/inbox/components/RealtimeInboxView.tsx | Usa entry point @/features/sla para useSLAAlerts (cross-feature). |
| src/features/inbox/components/monitoring/QueueMetricsDashboard.tsx | Ajusta import de QueueMetrics para path relativo. |
| src/features/inbox/components/MessageTemplates.tsx | Ajusta import do hook de templates para path relativo. |
| src/features/inbox/components/MessageReactions.tsx | Ajusta imports de hooks intra-feature para paths relativos. |
| src/features/inbox/components/conversation-list/ConversationItem.tsx | Ajusta imports de componentes intra-feature para paths relativos. |
| src/features/inbox/components/conversation-list/mocks/mockConversations.ts | Ajusta type import para path relativo (mocks dentro da feature). |
| src/features/inbox/components/contact-details/ContactHeaderSection.tsx | Ajusta import de componente intra-feature para path relativo. |
| src/features/inbox/components/contact-details/ContactActionButtons.tsx | Ajusta import de componente intra-feature para path relativo. |
| src/features/inbox/components/contact-details/ContactAccordionSections.tsx | Ajusta imports de múltiplos componentes intra-feature para paths relativos. |
| src/features/inbox/components/ChatPanel.tsx | Ajusta imports de hooks inbox para relativos e useUserRole via entry point @/features/auth. |
| src/features/inbox/components/chat/useChatPanelHandlers.ts | Ajusta import de componente intra-feature para path relativo. |
| src/features/inbox/components/chat/useChatInputLogic.ts | Ajusta import de FileUploaderRef para path relativo. |
| src/features/inbox/components/chat/MessageHoverToolbar.tsx | Ajusta import de componente intra-feature para path relativo. |
| src/features/inbox/components/chat/MessageBubble.tsx | Ajusta imports de múltiplos componentes intra-feature para paths relativos. |
| src/features/inbox/components/chat/InputPreviewBars.tsx | Ajusta import de componente intra-feature para path relativo. |
| src/features/inbox/components/chat/InputExtraTools.tsx | Ajusta imports de componentes intra-feature para paths relativos. |
| src/features/inbox/components/chat/ChatToolPanels.tsx | Ajusta imports de ai-tools intra-feature para paths relativos. |
| src/features/inbox/components/chat/ChatPanelHeader.tsx | Ajusta imports de componentes intra-feature para paths relativos. |
| src/features/inbox/components/chat/ChatMessagesArea.tsx | Ajusta import de componente intra-feature para path relativo. |
| src/features/inbox/components/chat/ChatMessageInput.tsx | Ajusta imports de componentes intra-feature para paths relativos. |
| src/features/inbox/components/chat/ChatMessageBubble.tsx | Ajusta imports de componentes intra-feature para paths relativos. |
| src/features/inbox/components/chat/ChatInputToolbars.tsx | Ajusta imports de componentes intra-feature para paths relativos. |
| src/features/inbox/components/chat/ChatInputArea.tsx | Ajusta imports de componentes intra-feature para paths relativos. |
| src/features/inbox/components/chat/ChatHeader.tsx | Ajusta imports de componentes intra-feature para paths relativos. |
| src/features/connections/services/whatsappConnectionService.ts | Ajusta import intra-feature para path relativo. |
| src/features/connections/hooks/useConnectionsManager.ts | Ajusta imports intra-feature (repo/service) para paths relativos. |
| src/features/auth/hooks/useAuth.ts | Ajusta import do contexto para path relativo. |
| src/features/auth/context/AuthContext.ts | Ajusta import de Profile para path relativo. |
| src/features/auth/components/ProtectedRoute.tsx | Ajusta imports de hooks auth para paths relativos. |
| src/features/auth/components/AuthProvider.tsx | Ajusta imports (service/context) para paths relativos. |
| src/features/admin/services/agentService.ts | Ajusta import do repo para path relativo. |
| src/features/admin/hooks/useAgents.ts | Ajusta imports de service/repo types para paths relativos. |
| .gitignore | Ignora design-system-audit.md gerado pelo script de auditoria. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…09) (#113) Documenta o estado FINAL após: - Onda 5 completa (164 → 0 errors em 4 PRs: #109, #110, #111, #112) - 8 dependabots resolvidos (3 mergeados, 5 fechados, 1 preservation closed) Estado atual: - HEAD main: f1b3eab - ESLint: 0 errors, 1330 warnings - Branches remotas: 2 (main + preserve) - PRs OPEN: 0 Conteúdo do handoff (718 linhas): - TL;DR + estado atual com métricas - Quem é Joaquim e workflow - Histórico cronológico de TODOS os PRs (Schemas, Faxina pré-Onda, Ondas 1, 2, 5) - Faxina de branches (491 → 2) - Resolução técnica dos 8 dependabots - Decisões técnicas-chave (React 18, Vite reject, Sentry accept, etc) - 20 lições aprendidas - Catálogo de notes em /workspace/notes/ - Pendências pré-deploy (Backup Supabase, RabbitMQ 69GB, Drift, Deploy VPS, FX-DEP-02) - Backlogs de review skipped - Como retomar (instruções pra próximo Claude) - Apêndices: comandos úteis, infra VPS, Vercel, workflow Este doc serve como ponto de retomada pra próxima sessão Claude sem perder contexto.
🎉 Fecha Onda 5
Reduz ESLint errors de 108 → 0 (-108, fim da Onda 5).
ESLint TOTAL desde início da Onda 5: 164 → 0 em 4 PRs (#109, #110, #111, este).
Estratégia DDD
A regra
no-restricted-imports(eslint.config.js) bloqueia:@/features/X/...) — força entry points../../...)@/features/X/Yquando arquivo está em X)Diff stat
44 files changed, 108 insertions(+), 108 deletions(-)+ 1 .gitignore entry (design-system-audit.md gerado pelo lint)Batch A — INTRA-feature (106 fixes)
Pattern:
@/features/X/Y/Z→ caminho relativo viapath.relative()Exemplo (
src/features/inbox/components/chat/ChatHeader.tsx):@/features/inbox/components/ai-tools/VisionIcon../ai-tools/VisionIconDistribuição:
Script: Node +
path.relative(), 1 read/write por arquivo, ordem desc por linha. 106/106 sucesso.Batch B — CROSS-feature (2 fixes)
Imports de outra feature DEVEM usar entry point (
@/features/X),não path interno. Os barrels já existiam, só não estavam sendo usados:
ChatPanel.tsx:@/features/auth/hooks/useUserRole→@/features/authRealtimeInboxView.tsx:@/features/sla/hooks/useSLAAlerts→@/features/slaValidação
bunx eslint .→ 0 errors, 1330 warnings ✅bunx tsc --noEmit→ ✓ sem erros (typecheck pristine) ✅bun run build→ ✓ built in 58.09s ✅Stress-test (10 cenários ✓)
path.relativegera../fooou./foocorretamenteauth/index.ts,sla/index.ts)--fixNÃO usado (só explicit replace)design-system-audit.mdgerado pelo lint adicionado ao.gitignoreOnda 5 — Status FINAL
🎉 Total: 164 errors zerados.
Pós-Onda 5 (próximos passos)
Governança
Considerado GRANDE (44 files), seguindo padrão Onda 1+2.
Stress-test de 10 cenários documentado.
🤖 Generated with Claude
Summary by CodeRabbit
Notas de Lançamento
Refactor
Chores