@danhachuel/leadmaster 0.1.1 → 0.1.2
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 +24 -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/package.json +2 -2
- package/scripts/cli.mjs +7 -16
- package/frontend/dist/assets/index-CPq53JWx.js +0 -90
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,30 @@ 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.02] — 2026-10-24
|
|
10
|
+
|
|
11
|
+
### Corrigido
|
|
12
|
+
|
|
13
|
+
- **Poluição do terminal por logs de polling** (`GET /api/metrics`):
|
|
14
|
+
- Launcher (`scripts/cli.mjs`) e `npm run dev` iniciam o uvicorn com
|
|
15
|
+
`--no-access-log`.
|
|
16
|
+
- Filtro granular de logging no backend silencia o access-log **apenas** de
|
|
17
|
+
`/api/metrics` — erros, exceções e os demais endpoints continuam logados
|
|
18
|
+
normalmente (vale também para execuções manuais do uvicorn).
|
|
19
|
+
- Painel migrado para **TanStack Query** (`@tanstack/react-query`,
|
|
20
|
+
`refetchInterval` de 10s): ciclo de vida e cleanup automáticos, pausa
|
|
21
|
+
quando a aba fica ociosa e retoma ao focar; indicador "atualiza a cada
|
|
22
|
+
10s" visível nos blocos de gráficos.
|
|
23
|
+
- Polling de campanhas (Disparos) também via TanStack Query: sonda a cada
|
|
24
|
+
4s apenas enquanto existe campanha em andamento, sem `setInterval` manual.
|
|
25
|
+
- Verificado: nenhum outro endpoint é alvo de polling — `/api/config` e
|
|
26
|
+
demais chamadas são carregamentos pontuais no início da página.
|
|
27
|
+
|
|
28
|
+
### Alterado
|
|
29
|
+
|
|
30
|
+
- **O sistema nunca abre o navegador.** Removida a abertura automática de janela do
|
|
31
|
+
launcher — o LeadMaster apenas imprime a URL no terminal e quem abre é o usuário.
|
|
32
|
+
|
|
9
33
|
## [0.1.01] — 2026-10-23
|
|
10
34
|
|
|
11
35
|
### 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()
|