6.4 KiB
6.4 KiB
LeadScraper — Progresso do Projeto
Instrução para quem estiver executando: antes de iniciar uma etapa, confira aqui se a etapa anterior está Concluída. Ao terminar uma etapa, atualize a linha correspondente imediatamente — não deixe para atualizar em lote no final.
Status possíveis: Não iniciada | Em andamento | Concluída | Bloqueada
| # | Etapa | Arquivo | Status | Data conclusão | Observações |
|---|---|---|---|---|---|
| 01 | Setup do projeto, Docker e Flyway | etapas/01-setup-projeto-docker-flyway.md |
Concluída | 2026-09-21 | Esqueleto Spring Boot, Docker Compose Postgres, application.yml, Flyway V1 e pacotes base criados. mvn test passou; Postgres subiu via Docker Compose; aplicação conectou e registrou V1__init em flyway_schema_history. |
| 02 | Modelagem das entidades JPA | etapas/02-modelagem-entidades-jpa.md |
Concluída | 2026-09-21 | Migrations V2 a V8, entidades JPA, enums, repositories e teste de persistência implementados. mvn test passou com Postgres local; Flyway registrou V1 a V8 com sucesso. |
| 03 | Motor de scraper com Playwright | etapas/03-motor-scraper-playwright.md |
Em andamento | 2026-09-21 | Dependência Playwright instalada, Chromium baixado, serviços do scraper, DTO bruto, orquestrador e testes de parser implementados. mvn test passou. Pendente validação manual contra Google Maps real com 3 buscas. |
| 04 | Normalizador e padronização de dados | etapas/04-normalizador-padronizacao.md |
Concluída | 2026-09-21 | Normalizadores de nome, telefone, CNPJ, ramo e hash implementados, com LeadNormalizerService e LeadNormalizadoDTO. mvn test passou. Observação: o scraper atual ainda não fornece CNPJ bruto, então o serviço mantém CNPJ null até esse dado existir na extração. |
| 05 | Pool de proxies e anti-bloqueio | etapas/05-pool-proxies-anti-bloqueio.md |
Concluída | 2026-09-21 | ProxyPoolService, BloqueioDetector, BackoffService, delays humanizados e fingerprint variável integrados ao BuscaOrchestrator. Migration V9 adiciona proxies.em_uso; arquitetura atualizada para v1.1. mvn test passou com Postgres via Docker, executado fora do sandbox para acessar localhost:5432. Observação: etapa 03 ainda mantém pendência de validação manual contra Google Maps real. |
| 06 | API REST do backend | etapas/06-api-rest-backend.md |
Concluída | 2026-09-21 | JWT, endpoints de auth/buscas/leads/ramos, exportação CSV, Swagger via springdoc, worker agendado e persistência com deduplicação por place_id/hash_dedup implementados. mvn test passou com Postgres local, executado fora do sandbox para acessar localhost:5432. Observação: persistência fim-a-fim com dados reais depende da validação manual do Google Maps pendente na etapa 03. |
| 07 | Setup do dashboard frontend | etapas/07-frontend-setup-dashboard.md |
Concluída | 2026-09-21 | Projeto React + Vite + TypeScript criado em frontend/, com Tailwind, componentes base estilo shadcn/ui, TanStack Query, React Hook Form + Zod, React Router e Recharts. Layout com sidebar/header, rotas protegidas por autenticação mockada e páginas mockadas implementadas. npm run build passou. npm install exigiu execução fora do sandbox para baixar pacotes. |
| 08 | Integração frontend com a API | etapas/08-frontend-integracao-api.md |
Concluída | 2026-09-22 | Cliente HTTP com JWT, autenticação real, buscas, leads, CSV, curadoria e dashboard integrados. Backend recebeu PATCH /leads/{id}/ramo e GET /leads/resumo para fechar curadoria e agregados. npm run build passou; Postgres subiu via Docker Compose; mvn test passou fora do sandbox com acesso a localhost:5432. |
| 09 | Docker Compose e deploy | etapas/09-docker-compose-deploy.md |
Concluída | 2026-09-22 | Dockerfiles do backend/frontend, Nginx com proxy /api, Compose com Postgres/backend/frontend, healthcheck, .env.example e documentação implementados. Validado com docker compose -p leadscraper_stage09 --env-file .env.example up --build -d em volume limpo: containers subiram, frontend respondeu 200, login direto e via /api responderam 200, Flyway aplicou V1 a V11 automaticamente. Observação: volume Postgres antigo mantém a senha original; para trocar senha em ambiente descartável é preciso recriar volume. |
| 10 | Testes e validação final | etapas/10-testes-validacao-final.md |
Concluída | 2026-09-22 | Validação final executada no stack Docker reconstruído. mvn test passou com 16 testes; npm run build passou. Smoke test via Nginx /api: frontend 200, login 200, endpoint protegido sem token 403, com token 200, export CSV 200. Busca real padaria em Campinas, SP concluiu com 92 encontrados em aproximadamente 65s; repetição concluiu com 54 encontrados e o total persistido permaneceu 86, validando deduplicação. Curadoria validada com criação de ramo e PATCH /leads/{id}/ramo, reduzindo leads sem ramo de 86 para 85. Segurança revisada: JWT_SECRET não possui fallback hardcoded no runtime e o formulário de login não preenche senha padrão; credencial bootstrap permanece apenas como dev seed documentado. Observação: Playwright baixou navegadores adicionais no primeiro uso e registrou aviso de dependências para Firefox/WebKit, mas o fluxo Chromium/Google Maps concluiu com sucesso. |
Regras de preenchimento
- Nunca avance para a próxima etapa com a anterior em
Bloqueadasem registrar o motivo em "Observações" - Se uma etapa exigir mudança no schema ou na arquitetura definida em
ARQUITETURA-SCHEMA.md, registre isso em "Observações" e atualize a versão do documento de arquitetura correspondente - Se surgirem etapas novas depois da 10 (funcionalidades futuras), adicione novas linhas numeradas (11, 12...) em vez de renumerar as existentes
Log de decisões técnicas relevantes
(preencher conforme o projeto avança — decisões que fugirem do planejado originalmente em ARQUITETURA-SCHEMA.md devem ser registradas aqui com data e motivo)
- 2026-09-21: Etapa 05 adicionou
proxies.em_usopara reserva concorrente comFOR UPDATE SKIP LOCKED, evitando que duas buscas usem o mesmo proxy ao mesmo tempo. - 2026-09-22: Etapa 10 removeu fallback hardcoded de
JWT_SECRETno runtime; ambientes locais/Docker agora precisam informar a variável explicitamente. - 2026-09-22: Adicionada migration
V12para atualizar o usuário bootstrap paratiago27.dossantos@gmail.com, mantendo compatibilidade com volumes Flyway já aplicados.