mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-06 19:22:06 +00:00
4.8 KiB
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.jstokenUtility.js,authService.js, Redux (app/store.js, slices)usePaginatedList.js, toda pastapages/(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
- Completar fundação (
api/api.ts,routes.tsx, AuthProvider, layout shell) api/api-paths.ts(extrair delib/api/services.js)- POC:
domain/auth+ login → deletepages/auth/ - POC:
domain/work-orders(list) → delete trecho list depages/workorders/ - Contrato cookies com backend
Ver plano completo com diagramas em .cursor/plans/migração_arquitetura_irisloan_cf39e1a6.plan.md.