Core vs Módulos
Núcleo (compartilhado)
Todo módulo usa. Já implementado salvo indicado.
| Recurso | Status |
|---|---|
| Auth, sessão, RBAC | ✅ |
| Tenant (multi-cliente) | ✅ |
| Usuários, preferências | ✅ |
| Lojas / unidades (incl. CD) | ✅ |
| Produtos (catálogo) | ✅ |
| Estoque (loja × produto × tamanho) | ✅ |
| Vendas | 🔲 (entra com Vendas/PDV) |
| Navegação, layout, tema, Jarbys (shell front) | ✅ parcial |
Módulo Remanejamento (1º)
Próprio: lotes, recomendações, override/veto, regras do motor, cadência, métricas de efetividade, histórico. Consome do core: produtos, lojas, estoque, usuários.
Estrutura-alvo (backend)
app/
core/ config, security, deps, rbac, tenant
shared/ models/schemas/repos do CORE (tenant, usuario, loja, produto, estoque, venda)
modules/
remanejamento/ models · schemas · services/(engine,grade,lotes,metricas) · router · seed
vendas/ (futuro)
main.py monta core + routers dos módulos habilitadosEstrutura-alvo (frontend)
src/
core/ shell: AuthProvider, layout, sidebar, tema, Jarbys, services/api, services/types
modules/
remanejamento/ routes · components · api.ts
routes/ composição das rotas dos módulos + 404/loginRegistry de módulos
Um registry declara cada módulo (id, ícone, rotas, menu, papéis, habilitação por tenant). O shell lê o registry e monta navegação + rotas. Adicionar módulo = entrada no registry + a pasta do módulo.