115 lines
5.4 KiB
Markdown
115 lines
5.4 KiB
Markdown
# LeadScraper — Leia-me
|
|
|
|
Motor de busca e prospecção de leads via automação de navegador (Google Maps), com backend em Java, frontend próprio, banco de dados PostgreSQL e execução em Docker.
|
|
|
|
Este documento é o ponto de entrada do projeto. Leia-o antes de começar qualquer etapa.
|
|
|
|
---
|
|
|
|
## 1. Estrutura do projeto
|
|
|
|
```
|
|
leadscraper/
|
|
├── LEIA-ME.md ← este arquivo
|
|
├── ARQUITETURA-SCHEMA.md ← schema completo do banco + stack tecnológica + módulos
|
|
├── PROGRESSO.md ← tracker de progresso, atualizado a cada etapa concluída
|
|
└── etapas/
|
|
├── 01-setup-projeto-docker-flyway.md
|
|
├── 02-modelagem-entidades-jpa.md
|
|
├── 03-motor-scraper-playwright.md
|
|
├── 04-normalizador-padronizacao.md
|
|
├── 05-pool-proxies-anti-bloqueio.md
|
|
├── 06-api-rest-backend.md
|
|
├── 07-frontend-setup-dashboard.md
|
|
├── 08-frontend-integracao-api.md
|
|
├── 09-docker-compose-deploy.md
|
|
└── 10-testes-validacao-final.md
|
|
```
|
|
|
|
## 2. Como este projeto deve ser executado
|
|
|
|
1. **Leia `ARQUITETURA-SCHEMA.md` por completo** antes de iniciar qualquer etapa — ele é a fonte de verdade sobre schema de banco, tecnologias e módulos. Nenhuma etapa deve divergir do que está lá sem atualizar o documento primeiro.
|
|
2. **Siga as etapas em `etapas/` na ordem numérica.** Cada arquivo é autocontido: traz objetivo, contexto necessário e critérios de aceite. Não pule etapas — cada uma assume que a anterior foi concluída.
|
|
3. **Antes de iniciar uma etapa, abra `PROGRESSO.md`** e confira se a etapa anterior está marcada como concluída. Se não estiver, resolva pendências antes de avançar.
|
|
4. **Ao concluir uma etapa, atualize `PROGRESSO.md` imediatamente** — marque status, data e qualquer observação relevante (ex: decisão técnica tomada, desvio do plano original).
|
|
5. Se durante a execução de uma etapa for necessário mudar algo do schema ou da arquitetura definida em `ARQUITETURA-SCHEMA.md`, **atualize o documento primeiro** (versionando, ex: v1.0 → v1.1) e só depois prossiga — nunca deixe o código divergir silenciosamente do documento de arquitetura.
|
|
6. Novas funcionalidades que surgirem depois do projeto em produção (ex: exportação avançada, novo canal de contato) devem virar **novos arquivos de etapa numerados** (11, 12...) ou migrations incrementais — nunca reescrever o schema base do zero.
|
|
|
|
## 3. Pré-requisitos de ambiente
|
|
|
|
- Java 21 (JDK)
|
|
- Docker + Docker Compose
|
|
- Node.js 20+ (apenas para build do frontend)
|
|
- Maven (ou o wrapper `mvnw` incluso no projeto backend)
|
|
|
|
## 4. Visão geral rápida do sistema
|
|
|
|
- **Backend (Java/Spring Boot):** expõe API REST, roda o motor de scraping (Playwright), aplica as regras de padronização e persiste os leads.
|
|
- **Frontend (React/Vite):** dashboard para disparar novas buscas, acompanhar status, listar/filtrar/exportar leads.
|
|
- **Banco (PostgreSQL):** armazena leads, ramos, buscas, proxies e histórico de contato.
|
|
- **Docker Compose:** orquestra os três serviços acima para subir o ambiente completo com um único comando.
|
|
|
|
Detalhes completos de cada peça estão em `ARQUITETURA-SCHEMA.md`.
|
|
|
|
## 5. Subida completa com Docker Compose
|
|
|
|
1. Crie um `.env` a partir do exemplo:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
2. Edite o `.env` antes de usar em produção:
|
|
|
|
- `DB_PASSWORD`: use uma senha forte.
|
|
- `JWT_SECRET`: use uma chave longa, com pelo menos 32 caracteres.
|
|
- `API_URL`: mantenha `/api` quando o frontend Nginx fizer proxy para o backend no mesmo compose. Para publicar backend e frontend em domínios separados, use a URL pública do backend, por exemplo `https://api.seudominio.com`.
|
|
- `FRONTEND_PORT`, `BACKEND_PORT`, `SERVER_PORT` e `DB_PORT`: ajuste se as portas `8081`, `8082` ou `5433` já estiverem ocupadas.
|
|
- `BUSCA_WORKER_ENABLED`: use `false` se quiser subir o ambiente sem processar buscas automaticamente.
|
|
|
|
3. Suba o ambiente completo:
|
|
|
|
```bash
|
|
docker compose up --build
|
|
```
|
|
|
|
O Compose sobe PostgreSQL, backend e frontend. O backend espera o healthcheck do banco, aplica as migrations do Flyway no startup e expõe a API em `http://localhost:8082` por padrão. O frontend fica em `http://localhost:8081` por padrão e encaminha chamadas `/api/*` para o backend interno.
|
|
|
|
Se você alterar `DB_PASSWORD` depois que o volume `postgres_data` já foi criado, o Postgres continuará usando a senha definida na primeira inicialização. Para trocar a senha em ambiente local descartável, recrie o volume; em produção, faça a rotação de senha pelo próprio banco antes de atualizar o `.env`.
|
|
|
|
## 6. Deploy em produção
|
|
|
|
O deploy oficial usa `escavador.seconectai.com.br`, Caddy para HTTPS automático e `docker-compose.prod.yml`.
|
|
|
|
Para instalar os comandos globais no servidor:
|
|
|
|
```bash
|
|
curl -fsSL https://producao-gitea.0jo7zj.easypanel.host/tiago/Prospeccao_SeConectai/raw/branch/main/scripts/bootstrap-commands.sh | sudo bash
|
|
```
|
|
|
|
Primeira instalação:
|
|
|
|
```bash
|
|
seconectaiescavador.install
|
|
```
|
|
|
|
Atualização depois de novos commits:
|
|
|
|
```bash
|
|
seconectaiescavador.update
|
|
```
|
|
|
|
Veja detalhes em `DEPLOY.md`.
|
|
|
|
Credenciais iniciais de desenvolvimento:
|
|
|
|
- Email: `tiago27.dossantos@gmail.com`
|
|
- Senha: `10031992`
|
|
|
|
## 7. Ordem de leitura recomendada para quem for executar
|
|
|
|
1. `LEIA-ME.md` (este arquivo)
|
|
2. `ARQUITETURA-SCHEMA.md`
|
|
3. `PROGRESSO.md` (ver o que já foi feito, se houver histórico)
|
|
4. `etapas/01-...md` em diante, sequencialmente
|