Independent dashboard for CambioReal agents with local SQLite auth and read-only RDS connection. Features login, per-agent transaction filtering, KPIs, charts (Chart.js), and detailed transaction table. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
110 lines
3.4 KiB
Markdown
110 lines
3.4 KiB
Markdown
# BI Agentes — CambioReal
|
|
|
|
Dashboard de transações para agentes CambioReal com autenticação local e dados ao vivo do RDS.
|
|
|
|
## Arquitetura
|
|
|
|
```
|
|
┌─────────────────────────────────┐
|
|
│ BI Agentes (Express) │
|
|
│ │
|
|
│ SQLite (auth) Express/HTTP │
|
|
│ agentes.db :3080 │
|
|
│ email/senha /login │
|
|
│ agente_id /dashboard │
|
|
└───────────────────────┬─────────┘
|
|
│ READ-ONLY
|
|
┌──────▼──────┐
|
|
│ cambio_db │
|
|
│ (AWS RDS) │
|
|
└─────────────┘
|
|
```
|
|
|
|
- **SQLite local** — controle de agentes (email, senha bcrypt, agente_id). Sem dependência do RDS para autenticação.
|
|
- **MySQL RDS** — somente leitura. Consulta `br_transaction_to_usa` (BRL→USD) e `pagamento_br` (USD→BRL) filtradas pelo `agente_id` da sessão.
|
|
|
|
## Estrutura
|
|
|
|
```
|
|
bi-agentes/
|
|
├── server.js ← Entry point (Express + sessions)
|
|
├── src/
|
|
│ ├── auth.js ← Login/logout, bcrypt, middleware requireAuth
|
|
│ ├── db-local.js ← SQLite (better-sqlite3) — tabela agentes
|
|
│ ├── db-rds.js ← MySQL pool read-only (mysql2)
|
|
│ ├── queries.js ← SQL parametrizado por agente_id
|
|
│ └── dashboard.js ← Gerador HTML (KPIs, Chart.js, tabela)
|
|
├── public/
|
|
│ └── login.html ← Tela de login
|
|
├── scripts/
|
|
│ └── seed-agente.js ← CLI para cadastrar/listar agentes
|
|
├── data/
|
|
│ └── agentes.db ← SQLite database (gerado automaticamente)
|
|
├── .env ← Credenciais RDS + SESSION_SECRET
|
|
└── .gitignore
|
|
```
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
npm install
|
|
cp .env.example .env # editar com credenciais do RDS
|
|
```
|
|
|
|
## Configuração (.env)
|
|
|
|
```
|
|
MYSQL_URL=<host-rds>
|
|
USER_MYSQL=<usuario-readonly>
|
|
PW_MYSQL=<senha>
|
|
SESSION_SECRET=<chave-secreta-sessao>
|
|
PORT=3080
|
|
```
|
|
|
|
## Gerenciar Agentes
|
|
|
|
Cadastrar:
|
|
|
|
```bash
|
|
node scripts/seed-agente.js --email agente@email.com --senha 123456 --agente 76 --nome "ValorFx"
|
|
```
|
|
|
|
Listar:
|
|
|
|
```bash
|
|
node scripts/seed-agente.js --list
|
|
```
|
|
|
|
## Rodar
|
|
|
|
```bash
|
|
node server.js
|
|
# BI Agentes rodando: http://localhost:3080
|
|
```
|
|
|
|
Para produção (intranet):
|
|
|
|
```bash
|
|
pm2 start server.js --name bi-agentes
|
|
```
|
|
|
|
## Funcionalidades do Dashboard
|
|
|
|
- **Autenticação** — cada agente loga com email/senha e vê apenas suas transações
|
|
- **KPIs** — transações, volume BRL/USD, taxa média, spread, IOF, ticket médio, clientes ativos
|
|
- **Gráficos** — volume por período (BRL+USD dual axis), volume por cliente (top 10), taxa cobrada vs PTAX
|
|
- **Tabela** — todas as transações com data/hora, cliente, valores, IOF, taxas, spread, status
|
|
- **Filtros** — período (de/até), granulação (dia/mês/ano), fluxo (BRL→USD / USD→BRL), cliente
|
|
- **Dados ao vivo** — cada refresh consulta o RDS em tempo real
|
|
- **Dois fluxos** — BRL→USD (`br_transaction_to_usa`) e USD→BRL (`pagamento_br`)
|
|
|
|
## Stack
|
|
|
|
- Node.js + Express
|
|
- express-session (sessões em memória)
|
|
- better-sqlite3 (auth local)
|
|
- mysql2 (RDS read-only)
|
|
- bcrypt (hash de senhas)
|
|
- Chart.js 4.x (gráficos client-side via CDN)
|
|
- Google Fonts Inter (tipografia via CDN)
|