shoc-frontend-new/docs/ARCHITECTURE_PLAN.md

4.8 KiB

Plano de Arquitetura — SeaHaven (Rebuild Seletivo)

Alinhamento com IrisLoan.Admin · SPA Vite + React Router · sem Next.js · Tailwind + MUI

Documento espelho do plano Cursor. Estratégia: reaproveitar conhecimento, descartar código legado — não normalizar/refatorar o projeto atual.


Estratégia em uma frase

Montar api/ + domain/ + app/ do zero; usar pages/ apenas como referência de endpoints e regras; deletar cada pasta legada quando a feature nova estiver pronta.


Matriz: Manter vs Descartar

Salvar (extrair lógica → código novo)

Legado Salvar Destino
lib/api/services.js Paths ASP.NET + parse de resposta api/api-paths.ts, api/handle-api-response.ts
pages/*/api.js Endpoints reais api/api-paths.ts
constants/queryKeys.js Entidades infra/query-key/query-key.ts
hooks/useDebounce.js, useModal.js Hooks hooks/*.ts
hooks/api/usePMSchedules.js Padrão RQ Template domain/*/use-cases/
lib/queryClient.js Defaults cache lib/query/query-client.ts
App.js, Sidebar.js Rotas e menu app/routes.tsx, config/menu.ts
pages/workorders/ (list) Fluxo de negócio Referência para POC

Descartar (apagar sem refatorar)

  • apiUtil.js, services/api.js, lib/api/client.js
  • tokenUtility.js, authService.js, Redux (app/store.js, slices)
  • usePaginatedList.js, toda pasta pages/ (após substituição)
  • Site.Layout.js, setupProxy.js, site.css, CSS por feature, Font Awesome
  • Forms *FormPage.js (reescrever com RHF + Zod)
  • SharedTable.js, ActionBar.js (recriar se adaptar for caro)

Adiar (later)

  • pages/vendor-portal/ → domain/vendor-portal/
  • pages/calendar/ → wrapper FullCalendar novo

Prioridade de features

Matriz completa (waves, dependências, LOC, critérios de done): FEATURE_PRIORITIZATION.md · config TS: src/config/feature-priorities.ts.

Wave Escopo
0 POC auth → work-orders (list)
1 must-have work-orders (full), dashboard, settings/dropdowns
2 accounts, locations, employees
3 should-have vendors, vendor-pos, uplifts, follow-ups, contacts, settings/task-templates
4 later calendar, vendor-portal, pm-schedules, assets, reports/documents

Decisão stakeholder: auth + work-orders primeiro; POC = auth + work-orders list (não pm-schedules).


Estrutura alvo

src/
├── api/
├── domain/<feature>/
├── infra/query-key/
├── lib/
├── components/ui/ + common/
├── app/
├── config/menu.ts
├── hooks/
├── providers/
└── main.tsx

Fases

Fase Objetivo
0 Completar fundação (Ky, routes, layout, AuthProvider, tooling) — Vite/TS/Tailwind já ok
1 Ky + auth cookies httpOnly; deletar stacks HTTP legadas
2 Reescrever features must-have; delete pages/<feature>/ por entrega
3 Shell UI + forms RHF+Zod
4 Apagar pages/, Redux, CSS legado; Docker + CI + Vitest

Próximos passos

  1. Completar fundação (api/api.ts, routes.tsx, AuthProvider, layout shell)
  2. api/api-paths.ts (extrair de lib/api/services.js)
  3. POC: domain/auth + login → delete pages/auth/
  4. POC: domain/work-orders (list) → delete trecho list de pages/workorders/
  5. Contrato cookies com backend

Ver plano completo com diagramas em .cursor/plans/migração_arquitetura_irisloan_cf39e1a6.plan.md.