@danhachuel/leadmaster 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -0
- package/README.md +4 -3
- package/backend/main.py +21 -0
- package/frontend/dist/assets/index-0xtgAs3t.js +90 -0
- package/frontend/dist/assets/{index-CFQHp6yf.css → index-pSbjfRli.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/legal/index.html +216 -0
- package/legal/privacy.html +213 -0
- package/legal/terms.html +201 -0
- package/package.json +3 -2
- package/scripts/cli.mjs +7 -16
- package/frontend/dist/assets/index-CPq53JWx.js +0 -90
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,54 @@ O formato é baseado no [Keep a Changelog](https://keepachangelog.com/pt-BR/1.1.
|
|
|
6
6
|
A etiqueta visual de versão usa patch de dois dígitos (ex.: `0.1.00`); o registry NPM
|
|
7
7
|
normaliza para a forma canônica (ex.: `0.1.0`).
|
|
8
8
|
|
|
9
|
+
## [0.1.03] — 2026-10-25
|
|
10
|
+
|
|
11
|
+
### Adicionado
|
|
12
|
+
|
|
13
|
+
- **Páginas legais e de verificação** (`legal/`), baseadas no layout do AutoPost-Lunga:
|
|
14
|
+
- `legal/index.html` — página de apresentação/verificação para APIs de plataformas
|
|
15
|
+
(TikTok, YouTube, Pinterest, Meta): funcionalidades do LeadMaster (CRM Kanban,
|
|
16
|
+
extratores de leads, agentes de IA e pipeline de vídeos faceless), integrações via
|
|
17
|
+
APIs oficiais e links para os documentos legais.
|
|
18
|
+
- `legal/privacy.html` — Política de Privacidade em português (Brasil) com conformidade
|
|
19
|
+
explícita à LGPD (Lei 13.709/2018): dados coletados (e-mail, leads prospectados, uso,
|
|
20
|
+
cookies, tokens de API), finalidades, armazenamento 100% local (JSON), bases legais,
|
|
21
|
+
compartilhamento (plataformas via APIs oficiais e provedores de LLM), direitos do
|
|
22
|
+
titular (art. 18), segurança, retenção e encarregado (DPO).
|
|
23
|
+
- `legal/terms.html` — Termos de Uso em português (Brasil): aceitação, descrição do
|
|
24
|
+
serviço ("como está"), responsabilidades do usuário (conteúdo gerado, credenciais,
|
|
25
|
+
LGPD e termos de plataformas terceiras), usos proibidos (spam/assédio), limitação de
|
|
26
|
+
responsabilidade (bloqueios e penalidades de plataformas), propriedade intelectual
|
|
27
|
+
(uso pessoal, vedada revenda), foro do desenvolvedor (Brasil) e referência à
|
|
28
|
+
Política de Privacidade.
|
|
29
|
+
- Páginas responsivas (HTML5 semântico, CSS embutido, favicon do urso), com rodapé
|
|
30
|
+
de verificação para plataformas e contato do desenvolvedor.
|
|
31
|
+
- Pasta `legal/` incluída no pacote NPM (`files`).
|
|
32
|
+
|
|
33
|
+
## [0.1.02] — 2026-10-24
|
|
34
|
+
|
|
35
|
+
### Corrigido
|
|
36
|
+
|
|
37
|
+
- **Poluição do terminal por logs de polling** (`GET /api/metrics`):
|
|
38
|
+
- Launcher (`scripts/cli.mjs`) e `npm run dev` iniciam o uvicorn com
|
|
39
|
+
`--no-access-log`.
|
|
40
|
+
- Filtro granular de logging no backend silencia o access-log **apenas** de
|
|
41
|
+
`/api/metrics` — erros, exceções e os demais endpoints continuam logados
|
|
42
|
+
normalmente (vale também para execuções manuais do uvicorn).
|
|
43
|
+
- Painel migrado para **TanStack Query** (`@tanstack/react-query`,
|
|
44
|
+
`refetchInterval` de 10s): ciclo de vida e cleanup automáticos, pausa
|
|
45
|
+
quando a aba fica ociosa e retoma ao focar; indicador "atualiza a cada
|
|
46
|
+
10s" visível nos blocos de gráficos.
|
|
47
|
+
- Polling de campanhas (Disparos) também via TanStack Query: sonda a cada
|
|
48
|
+
4s apenas enquanto existe campanha em andamento, sem `setInterval` manual.
|
|
49
|
+
- Verificado: nenhum outro endpoint é alvo de polling — `/api/config` e
|
|
50
|
+
demais chamadas são carregamentos pontuais no início da página.
|
|
51
|
+
|
|
52
|
+
### Alterado
|
|
53
|
+
|
|
54
|
+
- **O sistema nunca abre o navegador.** Removida a abertura automática de janela do
|
|
55
|
+
launcher — o LeadMaster apenas imprime a URL no terminal e quem abre é o usuário.
|
|
56
|
+
|
|
9
57
|
## [0.1.01] — 2026-10-23
|
|
10
58
|
|
|
11
59
|
### Removido
|
package/README.md
CHANGED
|
@@ -24,8 +24,9 @@ npx --yes @danhachuel/leadmaster@0.1.0
|
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
- `install` prepara a pasta de dados e instala as dependências Python.
|
|
27
|
-
- Sem argumentos, o launcher sobe o servidor local (FastAPI na porta **5055**) e
|
|
28
|
-
|
|
27
|
+
- Sem argumentos, o launcher sobe o servidor local (FastAPI na porta **5055**) e
|
|
28
|
+
**imprime a URL no terminal** — o LeadMaster **nunca abre janelas**: quem abre o
|
|
29
|
+
navegador é você. Se a porta 5055 estiver ocupada, o LeadMaster sobe
|
|
29
30
|
automaticamente na próxima livre (5056, 5057, ...). Pressione `Ctrl+C` para encerrar.
|
|
30
31
|
- Flags úteis: `--home=<caminho>` (pasta de dados), `--port=<numero>`,
|
|
31
32
|
`doctor` (diagnóstico), `help`.
|
|
@@ -65,7 +66,7 @@ para `http://127.0.0.1:8010` (backend de desenvolvimento).
|
|
|
65
66
|
|
|
66
67
|
```
|
|
67
68
|
npx @danhachuel/leadmaster
|
|
68
|
-
└─ scripts/cli.mjs # instala deps Python, sobe uvicorn, abre navegador
|
|
69
|
+
└─ scripts/cli.mjs # instala deps Python, sobe uvicorn, imprime a URL (nunca abre o navegador)
|
|
69
70
|
└─ backend/main.py # FastAPI: API + serving da UI construída (frontend/dist)
|
|
70
71
|
├─ services/storage.py # JSON local (leads, campanhas, config)
|
|
71
72
|
├─ services/extractors.py # Maps / Instagram / CNPJ
|
package/backend/main.py
CHANGED
|
@@ -5,6 +5,7 @@ modo `npx`, onde um único servidor entrega painel e API na mesma porta.
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
import json
|
|
8
|
+
import logging
|
|
8
9
|
import os
|
|
9
10
|
import platform
|
|
10
11
|
import sys
|
|
@@ -37,6 +38,26 @@ def _versao() -> str:
|
|
|
37
38
|
VERSION = _versao()
|
|
38
39
|
|
|
39
40
|
|
|
41
|
+
# ---------------------------------------------------------------------------
|
|
42
|
+
# Logs de acesso
|
|
43
|
+
#
|
|
44
|
+
# O endpoint /api/metrics é consultado por polling do Painel e inundava o
|
|
45
|
+
# terminal. O filtro abaixo silencia APENAS esse endpoint no access-log —
|
|
46
|
+
# erros, exceções e os demais endpoints continuam sendo logados normalmente.
|
|
47
|
+
# (O launcher e o "npm run dev" também passam --no-access-log ao uvicorn.)
|
|
48
|
+
# ---------------------------------------------------------------------------
|
|
49
|
+
|
|
50
|
+
class _FiltroAcessoPolling(logging.Filter):
|
|
51
|
+
def filter(self, record: logging.LogRecord) -> bool:
|
|
52
|
+
try:
|
|
53
|
+
return "/api/metrics" not in record.getMessage()
|
|
54
|
+
except Exception:
|
|
55
|
+
return True
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
logging.getLogger("uvicorn.access").addFilter(_FiltroAcessoPolling())
|
|
59
|
+
|
|
60
|
+
|
|
40
61
|
@asynccontextmanager
|
|
41
62
|
async def lifespan(_app: FastAPI):
|
|
42
63
|
storage.ensure_seeds()
|