core/crm-core/CRM-CORE.md
Tiago Yamamoto a52bd4519d refactor: optimize Dockerfiles and documentation for core services
- Use Google Distroless images for all services (Go & Node.js).
- Standardize documentation with [PROJECT-NAME].md.
- Add .dockerignore and .gitignore to all projects.
- Remove docker-compose.yml in favor of docker run instructions.
- Fix Go version and dependency issues in observability, repo-integrations, and security-governance.
- Add Podman support (fully qualified image names).
- Update Dashboard to use Node.js static server for Distroless compatibility.
2025-12-30 13:22:34 -03:00

2.9 KiB

CRM-CORE

O crm-core é um microserviço especializado na gestão operacional de relacionamento com o cliente (CRM) para plataformas B2B SaaS. Ele é agnóstico a regras de faturamento e foca exclusivamente no ciclo de vida de vendas e gestão de contatos.

📋 Visão Geral

Este serviço foi desenhado para ser integrado via API e não possui interface própria. Ele delega a autenticação para o identity-gateway e opera em estrito isolamento multi-tenant.

O que ele faz:

  • Gestão de Contas (Accounts) e Contatos.
  • Pipelines de Vendas, Estágios e Oportunidades (Deals).
  • Registro de Atividades e Notas.

O que ele NÃO faz:

  • Faturamento ou ERP (ver billing-finance-core).
  • Deployment de infraestrutura (ver automation-jobs-core).
  • Autenticação de usuários.

Arquitetura

graph TD
    Client[Frontend / API Gateway] -->|HTTP REST| API[CRM Core API]
    API -->|Valida JWT| Identity[Identity Gateway]
    
    subgraph CRM Domain
        API --> Accounts
        API --> Contacts
        API --> Deals
        API --> Activities
    end

    API --> DB[(PostgreSQL)]

🚀 Estrutura do Projeto

O projeto é escrito em Go e segue a Clean Architecture simplificada:

Diretório Descrição
cmd/api Ponto de entrada da aplicação.
internal/domain Entidades e interfaces.
internal/usecase Regras de negócio.
internal/handler Controladores HTTP (Chi Router).
internal/repository Acesso a dados (pgx).

🛠️ Tecnologias e Otimizações

  • Linguagem: Go 1.23+
  • Router: Chi
  • Database Driver: Jackc/pgx
  • Containerização:
    • Baseada em gcr.io/distroless/static:nonroot.
    • Binário compilado estaticamente com -ldflags="-w -s".
    • Imagem final ultraleve (~20MB).

💻 Como Executar

Docker (Recomendado)

# Build
docker build -t crm-core .

# Run
docker run -p 8080:8080 --env-file .env crm-core

A API estará disponível na porta 8080.

Desenvolvimento

  1. Dependências: Go 1.23+, PostgreSQL.
  2. Setup:
    cp .env.example .env
    go mod tidy
    
  3. Executar:
    go run ./cmd/api/main.go
    

🔐 Segurança e Multi-tenancy

O serviço implementa Row-Level Security (RLS) lógico na aplicação:

  1. Trust: Confia em tokens JWT assinados pelo identity-gateway.
  2. Contexto: O tenantId é extraído do token em cada requisição.
  3. Isolamento: Todos os repositórios injetam automaticamente WHERE tenant_id = $1 em todas as queries.

🔧 Detalhes do Dockerfile

  • Builder: Imagem golang:1.23-alpine. Compila o binário estático.
  • Runtime (Distroless): Imagem static:nonroot do Google.
    • Sem shell (/bin/sh).
    • Sem gerenciador de pacotes (apk).
    • Executa como usuário não-privilegiado (UID 65532).