# 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= USER_MYSQL= PW_MYSQL= SESSION_SECRET= 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)