Continuação direta da leva anterior, sem parar para autorização (a
pedido do usuário). 2 subagentes eden-frontend em paralelo.
- Cadastro de Cliente: lista, criação direta (PF/PJ + portabilidade),
detalhe rico editável por seção (status, endereço, contatos, dados
PF/PJ com CPF/CNPJ sempre somente-leitura, portabilidade condicional)
+ sub-seção de Sócios para PJ. Fecha a pendência da leva anterior:
QuoteDetailPage não pede mais UUID colado à mão para fechar negócio,
agora é um select real com atalho para criar cadastro novo.
- Contratos: lista, criação (itens produto+quantidade, partes
contratada/contratante), detalhe com resumo financeiro, aviso de
fidelidade sem efeito legal quando não aprovada, histórico de status,
e botões de transição limitados aos alvos válidos a partir do status
atual (servidor continua sendo a única fonte de verdade real).
QuoteDetailPage ganha link "Criar contrato a partir desta oferta"
quando a oferta está fechada.
Reconciliação manual de App.tsx/AuthenticatedLayout.tsx/QuoteDetailPage.tsx
entre os 2 agentes (mais o de Empresas/CRM/Ofertas da leva anterior),
um de cada vez, confirmando typecheck/build limpo a cada mesclagem.
Verificado: pnpm turbo run typecheck build (28/28); containers
eden-api/eden-core reconstruídos; fluxo completo testado ao vivo
ATRAVÉS DO PROXY same-origin (porta 3001, não direto na API) — login,
criação de cadastro, criação de contrato, transição de status inválida
corretamente rejeitada com 409.
Claude-Session: https://claude.ai/code/session_01BcWWuKfykGtUweXmHD6cKx
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Prioriza a parte web a pedido do usuário. 2 subagentes eden-frontend em
paralelo sobre o shell autenticado já pronto:
- Empresas/Produtos/Revendas: CRUD completo (lista + criar/editar),
layout modelado nas páginas reais do tema DreamsERP comprado
(purchase/vendors.tsx, inventory/products.tsx) — máscara de moeda para
as 5 faixas de preço + implantação. Novo componente Table<T> genérico
em packages/ui.
- CRM: Leads (lista, criar/editar, converter em oportunidade) e
Oportunidades, modelados em crm/leads.tsx/dealsDetails.tsx.
- Ofertas/Quotes: o módulo mais rico — criação com lista dinâmica de
itens produto/quantidade, fidelidade reduzida opcional, desconto
opcional, totais calculados pelo servidor; detalhe com aprovar/rejeitar
e fechar negócio. Modelado em sales/salesQuotes*.tsx. Novo componente
Select em packages/ui.
Correção de instrução no meio da leva: usuário pediu para seguir de
perto o layout real do tema comprado, não só os tokens visuais já
extraídos — as páginas React relevantes do tema foram extraídas para
.tmp/theme-reference/ (nunca versionado) em cada worktree e os agentes
já em execução foram redirecionados via mensagem (não relançados).
Bug real do próprio agente, corrigindo meu brief: Leads/Opportunities
respondem em camelCase (mapLead/mapOpportunity), não snake_case como o
resto da API — verificado contra o código-fonte real antes de aceitar.
Integração manual: um dos 2 agentes não conseguiu git merge no próprio
sandbox e restaurou o shell existente por leitura+escrita — cada arquivo
restaurado foi comparado byte a byte contra main (diff -rq) antes de
aceitar. App.tsx/AuthenticatedLayout.tsx/packages/ui/index.ts
reconciliados manualmente juntando as rotas/exports dos dois agentes.
Verificado: pnpm turbo run typecheck build (28/28); containers
eden-api/eden-core reconstruídos; bundle de produção contém todas as
novas telas; login simulando Origin de browser real; listagens
retornando dados reais; criação de lead confirmando o formato camelCase.
Claude-Session: https://claude.ai/code/session_01BcWWuKfykGtUweXmHD6cKx
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>