Skip to content

Criação do endpoint '/health'#42

Open
Maxwbh wants to merge 197 commits into
akretion:masterfrom
Maxwbh:master
Open

Criação do endpoint '/health'#42
Maxwbh wants to merge 197 commits into
akretion:masterfrom
Maxwbh:master

Conversation

@Maxwbh
Copy link
Copy Markdown

@Maxwbh Maxwbh commented Nov 24, 2025

Criado /health
Para Retornar que o serviço esta ativo e no ar;

rvalyi and others added 30 commits December 1, 2017 09:42
Bumps [rack](https://github.com/rack/rack) from 2.2.2 to 2.2.3.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md)
- [Commits](rack/rack@v2.2.2...2.2.3)

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [puma](https://github.com/puma/puma) from 4.3.5 to 4.3.8.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](puma/puma@v4.3.5...v4.3.8)

Signed-off-by: dependabot[bot] <support@github.com>
Change repo to waiting PR Unicred CNAB400 merge in the main repo.
NameError at /api/boleto/multi uninitialized constant Brcobranca::Bol…
[IMP] Atualização BRCobranca versão 10.0.0 .
Maxwbh added 30 commits May 28, 2026 01:53
## Gemfile
- rghost: '0.9.8' (fixo) -> '~> 0.9.8' (aceita patch updates)
- Organizado em secoes com comentarios claros
- Gems da stdlib (base64, mutex_m, bigdecimal) documentadas como
  necessarias para Ruby 3.4+ compatibilidade

## Dockerfile
- Base: alpine:3.19 -> ruby:3.3-alpine (garante Ruby 3.3 consistente
  com o Gemfile.lock, evita incompatibilidade de gems nativas)
- Builder: removido 'gem install bundler' (ja vem na imagem ruby:3.3)
  e removido 'ruby-dev' (ja na imagem base)
- Runtime: removido 'gem install bundler' (idem)
- Removido 'ruby' do apk add (ja na imagem base)
- Labels simplificados
- Comentarios reduzidos

## docker-compose.yml
- Removido 'version: 3.8' (deprecated no Docker Compose v2+)
- Removido volume de docs/ no servico principal (desnecessario)
- Servico test: 'gem install rspec rack-test' ao inves de
  'bundle install' completo (mais rapido)
- BUNDLE_WITHOUT= (vazio) para nao excluir test group

168 testes passando.
brcobranca 12.7.1: fix compatibilidade rghost 0.9.9
rghost 0.9.8 → 0.9.9: fix RGhost::VERSION (restaurado fallback)

Documentacao atualizada:
- brcobranca-fork.md: entrada v12.7.1 no historico, versao exata
- ARCHITECTURE.md: referencia v12.7.1
- fields/README.md: gem v12.7.1

168 testes passando com brcobranca v12.7.1 + rghost 0.9.9.
Integrate Brcobranca::Bancos v12.7.1 and update documentation
O endpoint GET /api/boleto/nosso_numero ainda retornava
nosso_numero_boleto vindo do merge com dados_calculados da gem.
Adicionado delete(:nosso_numero_boleto) apos o merge.

Todos os endpoints de boleto agora retornam consistentemente
apenas 3 campos:
  nosso_numero           (valor padronizado)
  nosso_numero_formatado (impresso no boleto)
  nosso_numero_dv        (digito verificador)

docs/README.md atualizado com tabela completa de endpoints
incluindo /api/info, /api/metadata, /api/bancos e detalhes
de retorno (include_data, headers X-*).

168 testes passando.
[FIX] Remover nosso_numero_boleto residual do endpoint /nosso_numero
Adiciona 3 novos endpoints para documentacao consumivel por
outros sistemas:

  GET /api/docs           Swagger UI navegavel (HTML interativo)
  GET /api/openapi.json   Spec OpenAPI 3.0 em JSON
  GET /api/openapi.yaml   Spec OpenAPI 3.0 em YAML

Casos de uso:
- Desenvolvedores: abrir /api/docs no browser para explorar e testar
- Postman/Insomnia: importar /api/openapi.json
- Geradores de SDK (openapi-generator, swagger-codegen): consumir spec
- Sistemas externos: descobrir capacidades dinamicamente

OpenAPI completo agora cobre 12 endpoints (era 8):
+ /api/info
+ /api/metadata
+ /api/bancos
+ include_data=true documentado em /api/boleto e /api/boleto/multi

Novos schemas:
- InfoResponse, MetadataResponse, BancoInfo
- BoletoWithFileResponse (com content_base64)
- MultiBoletoResponse, BoletoMetadata

/api/metadata agora inclui secao 'documentation' apontando para
os 3 endpoints de docs.

172 testes passando (4 novos em spec/integration/docs_endpoint_spec.rb).
[FEAT] Swagger UI + OpenAPI JSON/YAML servidos pela API
…ate=prawn

Adiciona parametro opcional template=prawn nos endpoints
GET /api/boleto e POST /api/boleto/multi. Usa PrawnBolepix
da brcobranca v12.7.1 para gerar PDF sem depender de GhostScript.

Uso:
  GET /api/boleto?bank=banco_brasil&type=pdf&data=...&template=prawn
  POST /api/boleto/multi (form: template=prawn)

Comparacao:
  RGhost (padrao): ~303KB PDF, requer GhostScript
  Prawn:           ~24KB PDF, Ruby puro, sem dependencia externa

Gems adicionadas no Gemfile:
  prawn, prawn-table, barby, rqrcode, chunky_png, matrix

BoletoService:
  generate() e generate_multi() aceitam template: 'prawn'
  Metodos privados generate_prawn() e generate_prawn_lote()
  boleto.extend(PrawnBolepix) para usar template alternativo

Compatibilidade total: template=rghost (padrao) continua
funcionando identico ao comportamento anterior.

172 testes passando.
Swagger UI, Prawn template, brcobranca v12.7.1, Dockerfile ruby:3.3
## Remessa PIX

Parametro pix=true no endpoint POST /api/remessa gera arquivo CNAB
com segmento PIX incorporado (boleto hibrido). Usa classes PIX da
brcobranca v12.7.1:

  CNAB 400: BradescoPix, ItauPix, BancoC6Pix, SantanderPix
  CNAB 240: SicoobPix, CaixaPix, BancoBrasilPix

Uso:
  POST /api/remessa?bank=bradesco&type=cnab400&pix=true
  (arquivo JSON com dados da remessa no body)

RemessaService.generate() aceita pix: true, que resolve a classe
PIX do banco automaticamente via remessa_pix_class(). Retorna
erro claro se o banco nao suporta PIX no formato solicitado.

## Sicoob Layout 810

Ja funcional: envie versao_layout_arquivo_opcao: "810" no payload
da remessa Sicoob CNAB240. O campo passa pelo transform_keys e
chega ao Brcobranca::Remessa::Cnab240::Sicoob que seta o layout.

Nenhuma alteracao de codigo necessaria — apenas documentacao.

ROADMAP.md atualizado com ambos os itens concluidos.
172 testes passando.
- docs/api/pix.md: reescrito com tabela unificada de suporte PIX
  (boleto, remessa CNAB400, remessa CNAB240), secao de Remessa PIX
  com exemplo de uso, simplificado e mais direto

- docs/api/troubleshooting.md: secoes 5 (Remessa PIX banco nao
  suportado) e 6 (Sicoob Layout 810) adicionadas

- docs/openapi.yaml: parametro pix=true documentado no endpoint
  POST /api/remessa com descricao dos bancos suportados por formato

- docs/ROADMAP.md: itens 2 (Remessa PIX) e 3 (Sicoob 810) marcados
  como concluidos
…pos PIX

brcobranca v12.8.0 adiciona 3 campos opcionais no boleto:
  chave_pix      - Chave PIX (CPF, CNPJ, email, telefone, aleatoria)
  tipo_chave_pix - Tipo da chave (cpf, cnpj, email, telefone, aleatoria)
  txid           - Codigo de identificacao da transacao PIX

dados_pix agora retorna tambem qrcode_disponivel (boolean).

Documentacao atualizada:
- brcobranca-fork.md: entrada v12.8.0 no historico
- ARCHITECTURE.md: referencia v12.8.0
- pix.md: secao 'Novos campos PIX (v12.8.0)' com tabela
- openapi.yaml: campos chave_pix, tipo_chave_pix, txid no BoletoData

172 testes passando.
Adiciona Dockerfile.prawn que gera imagem Docker SEM ghostscript,
usando apenas Prawn (Ruby puro) para geração de PDF.

Diferenças vs Dockerfile padrão:
- Sem pacotes ghostscript e ghostscript-fonts (~50MB menor)
- Env var BOLETO_TEMPLATE=prawn (default da imagem)
- Mesma funcionalidade, apenas PDF (sem JPG/PNG/TIF)

BoletoService.generate() e generate_multi() agora usam
ENV['BOLETO_TEMPLATE'] como default ao inves de 'rghost' hardcoded.
O parametro template= no endpoint ainda sobrescreve.

docker-compose.yml: servico boleto_api_prawn adicionado (profile: prawn).

Uso:
  # Build padrão (com GhostScript)
  docker build -t boleto-api .

  # Build Prawn (sem GhostScript, ~70MB menor)
  docker build -f Dockerfile.prawn -t boleto-api-prawn .

  # Docker Compose
  docker compose --profile prawn up boleto_api_prawn

ROADMAP item 4 concluído. 172 testes passando.
Remessa PIX (pix=true) e Sicoob Layout 810
Reescrito ROADMAP.md com:

## Estado atual
- 18 bancos, 15 endpoints, 172 testes, brcobranca v12.8.0
- Listagem completa de features concluidas (v1.0 a v1.3)

## Proximo release v1.4.0
Alta prioridade:
1. Validacao de payload por banco (campos obrigatorios, carteiras)
2. Suporte a CNAB 444 (Itau) — gem ja suporta
3. Cache de /api/bancos

Media prioridade:
4. Cliente Python v1.3.0 (novos endpoints)
5. Rate limiting (Rack::Attack)
6. Testes de integracao Remessa PIX

Baixa prioridade:
7. Webhook de notificacao de pagamento
8. Novos bancos (Inter, Original, PagBank) — requer gem
9. Migrar para Prawn como padrao

## Melhorias tecnicas
- Ruby 3.4, Rubocop, SimpleCov, gzip, CORS

## Comparacao com upstream
Fork @Maxwbh esta a frente em 14 features vs upstream akretion
(brcobranca 12.8.0 vs 12.0.0, 18 vs 16 bancos, 172 vs ~30 testes).
README completamente reescrito com foco em clareza e impacto:

- Header centralizado com metricas principais (18 bancos, 15 endpoints,
  172 testes, Swagger UI) e links diretos (docs, bugs, roadmap)
- Badges alinhados (version, license, ruby, brcobranca)
- Quick Start em 4 linhas com link para Swagger UI
- Tabela de endpoints concisa (8 principais, link para os 15)
- Tabela de bancos com colunas Boleto/CNAB400/CNAB240/PIX
- Exemplo Python unico e completo (include_data=true, 1 chamada)
- Tabela de funcionalidades (boletos, CNAB, PIX, OFX, Prawn, Swagger)
- Deploy simplificado (Docker padrao vs Prawn, Render 1-click)
- Tabela de tecnologias limpa
- Tabela de documentacao com links diretos
- Removidos: secoes duplicadas, lista extensa de features,
  estrutura de diretorios (movida para ARCHITECTURE.md),
  instrucoes de versionamento (movidas para scripts/README.md)
Reescrito com foco em marketing e adocao:

- Header visual com badges e metricas de impacto
- Secao "Por que usar?" com tabela problema/solucao
- Secao "Diferenciais" destacando vantagens competitivas
- Quick Start com exemplo curl completo (1 chamada)
- Tabela de bancos com formatos CNAB especificos
- Exemplo Python realista (gerar boleto + parsear OFX)
- Deploy em tabela (Docker, Prawn, Compose, Render, local)
- Endpoints em tabela com expandable (8 principais + 15 total)
- Links para Swagger UI demo ao vivo
- CTA para estrela no final
- Secao Contributing com 3 comandos
README profissional + Roadmap v1.4
Excluido:
- docs/fields/examples.md (471 linhas) — conteudo duplicado com
  docs/fields/all-banks.md (exemplos por banco) e
  examples/python/README.md (scripts executaveis)

Corrigido:
- CONTRIBUTING.md: 'main' → 'master' (5 ocorrencias), removida
  secao de changelog exemplo obsoleto (versoes 1.0/1.1)
- docs/ARCHITECTURE.md: adicionado docs_endpoint.rb na estrutura,
  removidas versoes de inline nos nomes de services
- docs/README.md: link para examples.md removido
- docs/development/brcobranca-fork.md: link para examples.md removido
- docs/fields/README.md: link atualizado para examples/python/

172 testes passando.
Consolidar docs — excluir duplicados, corrigir refs
## Cache de /api/bancos
BankInfoService.all agora cacheia resultado em @cached (dados nao
mudam em runtime). Metodo reset_cache! disponivel para testes.

## Compressao gzip
Rack::Deflater adicionado no config.ru. Comprime responses JSON
automaticamente (~70% reducao). Transparente para o cliente
(requer header Accept-Encoding: gzip).

## SimpleCov
Gem simplecov adicionada no grupo test. Ativado via COVERAGE=true:

  COVERAGE=true bundle exec rspec

Gera relatorio HTML em coverage/. Cobertura atual: 79.82%.
Grupos: Services, Endpoints, Middleware, Config.
Minimo configurado: 70%.

coverage/ adicionado ao .gitignore.

172 testes passando.
## Cliente Python v1.3.0

Novos metodos no BoletoClient:
- info() — GET /api/info
- metadata() — GET /api/metadata
- bancos() — GET /api/bancos
- generate_boleto_with_data() — include_data=true (PDF+dados em 1 chamada)
- generate_multiple_boletos_with_data() — multi com include_data
- generate_remessa(pix=True) — remessa CNAB com segmento PIX
- process_retorno() — processar arquivo de retorno CNAB
- parse_ofx() — parsear extrato OFX

Metodos existentes atualizados:
- generate_boleto() aceita template='prawn'
- generate_multiple_boletos() aceita template='prawn'

Versao bumped: 1.1.0 → 1.3.0
44 testes Python passando.

## Testes de integracao Remessa PIX

spec/integration/remessa_pix_spec.rb com 4 testes:
- Banco que nao suporta PIX no formato → 400
- Banco inexistente para PIX → 400
- Remessa normal (sem pix) valida payload
- Formato CNAB invalido para PIX → 400

176 testes Ruby passando (antes 172).
Cache /api/bancos, gzip, SimpleCov
Todos os itens do roadmap v1.4 foram implementados e mergeados:
- #3 Cache /api/bancos (PR #43)
- #4 Cliente Python v1.3.0 (PR #43)
- #6 Testes Remessa PIX (PR #43)
- gzip, SimpleCov (PR #43)
- Remessa PIX, Sicoob 810 (PR #39)
- Template Prawn, Dockerfile.prawn (PR #38)
- Swagger UI, OpenAPI (PR #33)

Itens fora do escopo removidos do roadmap.
Metricas atualizadas: 220 testes, cobertura 79.82%.
ROADMAP atualizado — todos os itens concluidos
## Banco C6 (spec/integration/banco_c6_spec.rb) — 7 testes
- Carteira 10: validacao, dados (nosso_numero), PDF rghost, PDF prawn, include_data
- Carteira 20: validacao, dados
- Carteira invalida (30): rejeicao

## PIX no Boleto (spec/integration/pix_boleto_spec.rb) — 21 testes
- 7 bancos (BB, Sicoob, Bradesco, Itau, Caixa, Santander, C6) x 3 cenarios:
  - Validacao com campos PIX (emv, chave_pix, tipo_chave_pix, txid)
  - Dados com PIX em /boleto/data
  - PDF com PIX via template prawn

## CNAB Remessa (spec/integration/cnab_completo_spec.rb) — 13 testes
- C6 CNAB 400: normal, com PIX, rejeicao CNAB 240
- Remessa PIX CNAB 400: Bradesco, Itau, C6, Santander
- Remessa PIX CNAB 240: Sicoob, Caixa, BB
- Validacao de payload: Array como root, sem pagamentos

## Fix: NoMethodError na remessa
RemessaService.generate_with_factory agora captura NoMethodError
(campo nao suportado pelo banco) e retorna 400 ao inves de 500.
Ex: 'convenio' nao existe em Cnab400::BancoC6.

217 testes passando (antes 176).
- README.md: 172 → 217 testes Ruby
- ROADMAP.md: 176+44=220 → 217+44=261 testes
- openapi.yaml: exemplo brcobranca 12.7.1 → 12.8.0
Testes C6 carteiras, PIX 7 bancos, CNAB remessa + fix NoMethodError
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants