JedIN Utilities (IS-U) — Stack Tecnológica Completa
O iPaaS Verticalizado para Utilities
O JedIN Utilities (IS-U) é o produto white-label que substitui o SAP IS-U em distribuidoras de energia brasileiras. Roda sobre o core iPaaS do JedIN e entrega portal do cliente, backoffice operacional, admin, integração SAP (4 sistemas), marketing automation e marketplace P2P de energia solar.
Este post documenta a stack técnica completa — frameworks, versões, bibliotecas, integrações e modelos de dados.
Linguagens
| Camada | Linguagem | Versão |
|---|---|---|
| Frontend | TypeScript | 5.3 |
| Backend | TypeScript | 5.3 |
| MCP Server | JavaScript ES2022 | Node 20 |
| Banco | SQL (Postgres + RLS) | 16 |
Frontend
Framework
| Tecnologia | Versão | Uso |
|---|---|---|
| Next.js | 14.1 | App Router, SSR |
| React | 18.2 | UI library |
| Tailwind CSS | 3.4.1 | Styling |
| Radix UI | latest | Dialog, dropdown, select, toast |
| Lucide React | 0.309 | Ícones (Zap, Receipt, etc.) |
State e Dados
- Zustand 4.4.7 — store de carrinho persistido em localStorage (
stores/isu-shop.store.ts) - TanStack React Query 5.17 — cache de dados do portal
- react-hook-form 7.49 + Zod 3.22.4 — forms
- next-intl 3.4 — i18n (pt-BR / en-US / es)
- Socket.io-client 4.8 — notificações em tempo real
Visualização
- Leaflet 1.9.4 + react-leaflet 4.2.1 — mapa de outages com clustering
- Monaco Editor (integrado do Flow Designer core)
Rotas
apps/web/app/[locale]/utilities/
| Seção | Páginas |
|---|---|
| Portal | dashboard, bills, consumption, tickets, services, outages, installations, shop, campaigns, notifications, tariffs, account |
| Backoffice | atendimentos, despacho, billing ops, anexos |
| Admin | tenants, users, branding, feature flags |
Hooks customizados
useUtilityCustomer()— session management, logoutuseUtilityTenantConfig()— branding dinâmico (cores, menus, catálogo)
Backend
Framework
| Tecnologia | Versão | Uso |
|---|---|---|
| Node.js | 20 LTS | Runtime |
| NestJS | 10.3 | Framework modular |
| Express | 5.2.1 | HTTP adapter |
| Prisma | 5.8 | ORM |
Módulos (17 submódulos · ~23.3K LOC)
Localização: apps/api/src/modules/utilities/
| Submódulo | Função |
|---|---|
| customer | JWT customer auth (token type utility-customer), rate-limit, password reset |
| billing | PaymentGatewayService (PIX/boleto/cartão/débito auto), ConsumptionService |
| service-request | 13 tipos (2ª via, religamento, nova ligação, transferência de titularidade…) com SLA |
| outage | GPS auto-clustering (raio 500m) + impacto DEC/FEC |
| integration | SAP S/4HANA + C4C V1 + Sales Cloud V2 + Service Cloud V2 + BTP + JedIN Flow |
| marketing | Segments, campaigns, automations, templates (estilo Emarsys) |
| marketplace | P2P solar trading (ANEEL REN 482/2012) + PIX mock |
| portal | Endpoints públicos consolidados |
| field-crew | Despacho com tracking GPS + WhatsApp/SMS |
| regulatory | DEC/FEC ANEEL + export CSV |
| notification | Multi-canal (Email / SMS / WhatsApp / Push) |
| tenant | Branding, domínio, feature flags, catálogo de serviços |
| common | UtilityS3Service, UtilityPdfService, InMemoryRateLimitGuard |
Async e Jobs
- BullMQ 5.1 + @nestjs/bullmq 10 — bill generation, notification dispatch, outage grouping
- @nestjs/schedule 4.x — SAP V2 pull scheduler (bidirectional sync)
- ioredis 5.3.2 — cliente Redis
Libs do Backend
| Lib | Versão | Uso |
|---|---|---|
| pdfkit | 0.15.1 | Boleto 2ª via (barcode, linha digitável) |
| pdf-parse | 2.4.5 | Leitura de faturas legadas |
| xlsx | 0.18.5 | Export ANEEL, relatórios |
| qrcode | 1.5.4 | PIX QR Code |
| nodemailer | 8.0.1 | Emails via AWS SES |
| date-fns | 3.3 | Manipulação de datas de faturamento |
Database (PostgreSQL 16)
Modelos Prisma (IS-U)
| Modelo | Descrição |
|---|---|
| UtilityCustomer | CPF/CNPJ unique por tenant, social login |
| UtilityInstallation | Instalação/medidor, tarifa, tensão |
| UtilityBill | Mês de referência (YYYY-MM), decomposição de consumo, status pagamento |
| UtilityServiceRequest | 13 tipos, SLA deadline, timeline de eventos |
| UtilityOutage | Coordenadas GPS, clientes afetados, equipe despachada |
| UtilityConsumption | Leituras históricas (automática/manual/estimada) |
| UtilityPayment | Registros de pagamento (PIX/boleto/cartão) |
| UtilityNotification | Logs de Email/SMS/WhatsApp/Push |
| UtilityTenantConfig | Branding, cores primária/secundária, feature menus |
| utility_marketing_{segments,campaigns,automations,templates} | Marketing automation |
RLS
Isolamento tenant via tenant_id + políticas FOR ALL USING (tenant_id = current_setting('app.tenant_id')::uuid).
Integrações SAP
| Sistema | Protocolo | Service |
|---|---|---|
| SAP S/4HANA | OData REST | SapS4IntegrationService — leituras, billing docs, master data |
| SAP C4C V1 | OData + Basic Auth | SapC4cIntegrationService — service tickets bidirecional |
| SAP Sales Cloud V2 | REST + Bearer token | SapSalesCloudV2Service — oportunidades, promoções |
| SAP Service Cloud V2 | REST + sap-c4c-rawagent header | SapServiceCloudV2Service — requests, crew assignment |
| SAP BTP | Connection pooling | BTP Adapter |
| JedIN Flow Engine | Internal HTTP | jedin-flow-executor.util |
Integração bidirecional: ticket criado no portal → flow JedIN → SAP V2 Case POST (caseType ZISU).
Storage & Email
| Serviço | Lib | Uso |
|---|---|---|
| AWS S3 | @aws-sdk/client-s3 3.1001 | PDFs boleto, documentos, anexos de tickets |
| AWS SES | @aws-sdk/client-ses 3.1027 | Emails transacionais |
Auth
| Camada | Tecnologia |
|---|---|
| Customer JWT | Token type utility-customer (via @nestjs/jwt 10.2) |
| Strategy | Passport-JWT + Local + OAuth (reset password) |
| Password | bcrypt 5.1.1 |
| Rate limit | InMemoryRateLimitGuard (3 req/min/IP) |
| Role guard | UtilityAdminRoleGuard |
MCP Server
Package: packages/mcp-isu/ · Porta: 3360 · Tools: 28
Categorias de Tools
| Categoria | Tools |
|---|---|
| Customer | 4 (list, get, search, create) |
| Billing | 4 (list, get, generate, process_payment) |
| Service Requests | 4 (create, list, update, get) |
| Outages | 3 (report, list, resolve) |
| Analytics | 3 (consumption, dashboard, DEC/FEC) |
| Solar Prosumer | 3 (dashboard, marketplace, listing) |
| Shop | 1 (list products — público) |
| Campaigns | 1 (list active — público) |
| Notifications | 1 (list com filtros) |
| Config | 2 (get/update tenant settings) |
Auth flow: auto-login via credenciais de teste, session cache por x-session-id header, Express 4.21 como framework (JS puro, sem transpile).
Regulatório
ANEEL Compliance
- DEC (Duração Equivalente de Interrupção por Consumidor) =
Σ(Ca_i × t_i) / Ct - FEC (Frequência Equivalente de Interrupção por Consumidor) =
Σ(Ca_i) / Ct - Métricas:
withinTarget,percentOfTarget,eventCount - Service:
AneelComplianceService - Export: CSV via
xlsx
REN 482/2012 (P2P Solar)
Modalidades suportadas: autoconsumo_local, autoconsumo_remoto, geracao_compartilhada, EMUC. PIX gateway via DistribuidoraMockService para validação de créditos SCEE.
Observability
- OpenTelemetry — tracing distribuído
- @sentry/nestjs 10.40 — error tracking
- Jaeger — visualização
- Prometheus + Grafana — métricas
Resumo
Stack enxuta e alinhada ao core JedIN:
- FE: Next.js 14 + React 18 + Zustand + Leaflet (mapas de outage)
- BE: NestJS 10 + Prisma 5 + BullMQ + 17 submódulos
- DB: PostgreSQL 16 com RLS multi-tenant
- Storage: AWS S3 + SES
- Integrações: 5 sistemas SAP + JedIN Flow Engine
- MCP: 28 tools na porta 3360
Diferenciais técnicos: mapa de outages com auto-clustering GPS, motor DEC/FEC nativo, marketplace P2P com modalidades ANEEL REN 482/2012, portal white-label com branding dinâmico por tenant.
Próximos posts:
Related Articles
JedIN SRE — Stack Tecnológica Completa (Supplier Relationship)
Deep dive no JedIN SRE: 15 submódulos NestJS, integração SAP S/4HANA + ECC + Ariba + SharePoint, IA jurídica OpenAI GPT-4o para análise de contratos, e-signature SHA-256 compliance MP 2.200-2/2001, AWS Textract OCR e 44 tools MCP role-based.
JedIN IS-U — Guia Completo da Plataforma de Utilities
Documentacao completa do modulo IS-U do JedIN: portal do cliente, backoffice operacional, marketing, marketplace de energia solar, integracao SAP V2, e analises preditivas.
R2-CX — Stack Tecnológica Completa do Consultor Autônomo
Deep dive no R2-CX: consultor autônomo multi-produto com 14+ MCP targets, Playwright browser automation, LLM multi-provider (Groq Llama 3.3 70B + Gemini Flash + Ollama), Live View em tempo real, session persistence PostgreSQL e skill improvement loop.