Go to file
Joelbrit0 4c5e5bdf5a refactor: centralize infrastructure and organize printer modules 2026-01-26 18:31:32 -03:00
src refactor: centralize infrastructure and organize printer modules 2026-01-26 18:31:32 -03:00
test fix: import in supertest for e2e tests 2025-09-15 14:55:08 +02:00
.gitignore chore: ignore zed workspace files 2026-01-26 18:31:11 -03:00
.prettierrc fix: format all files 2022-10-05 12:10:39 +02:00
API_CONTRACTS.md refactor: remove comments and improve printer service 2026-01-22 12:15:23 -03:00
README.md docs: Shorten the README title from "Especificação Técnica: Microserviço de Impressão" to "Serviço de Impressão". 2026-01-22 19:08:36 -03:00
eslint.config.mjs fix: configure prettier endOfLine to 'auto' for cross-platform compatibility 2025-09-26 14:10:22 +03:00
nest-cli.json refactor: remove comments and improve printer service 2026-01-22 12:15:23 -03:00
package-lock.json feat: implement bullmq for print queue and bull-board integration 2026-01-22 18:02:42 -03:00
package.json feat: implement bullmq for print queue and bull-board integration 2026-01-22 18:02:42 -03:00
teste.pdf fix: resolve unknown error type in printer service and update dependencies 2026-01-21 12:56:01 -03:00
tsconfig.build.json Enable incremental builds, ignore "dist" 2019-04-08 22:41:55 +01:00
tsconfig.json fix: resolve unknown error type in printer service and update dependencies 2026-01-21 12:56:01 -03:00

README.md

Serviço de Impressão

Este documento descreve as especificações técnicas, endpoints e padrões de arquitetura do Microserviço de Impressão. O sistema é projetado para o processamento assíncrono de documentos e integração com hardware de impressão local.

Arquitetura e Fluxo de Dados

A solução utiliza uma arquitetura baseada em filas para assegurar a resiliência e a escalabilidade do processamento de impressão.

Componentes Principais

  1. API REST: Interface para recepção de requisições de impressão.
  2. BullMQ (Redis): Engine de mensageria para gestão de filas e persistência temporária de tarefas (jobs).
  3. Queue Worker (PrinterProcessor): Componente responsável por consumir a fila, realizar a renderização de documentos via Puppeteer e comunicar-se com os drivers do sistema operacional.
  4. Persistência (Oracle): Integração via TypeORM para registro de dados operacionais em base de dados corporativa.

Fluxo de Operação

  1. A API recebe uma solicitação de impressão via HTTP.
  2. A tarefa é registrada na fila printer gerenciada pelo BullMQ.
  3. O PrinterProcessor (WorkerHost) processa a tarefa, converte o conteúdo HTML em PDF e envia para o spooler de impressão.

Configurações do Sistema

Variáveis de Ambiente

O serviço utiliza as seguintes definições no arquivo .env:

Variável Descrição Exemplo
REDIS_HOST Endereço do servidor Redis localhost
REDIS_PORT Porta do servidor Redis 6379
DB_USERNAME Usuário do Banco de Dados Oracle admin
DB_PASSWORD Senha do Banco de Dados Oracle 1234
DB_CONNECT_STRING String de conexão Oracle (DESCRIPTION=...)
ORACLE_CLIENT_PATH Caminho do Oracle Instant Client C:\oracle\instantclient

Pré-requisitos

  • Node.js >= 20.0.0
  • Redis Server
  • Oracle Instant Client (Thick Mode habilitado)

Endpoints da API

1. Sistema e Inventário

Listar Impressoras Disponíveis

Retorna a lista de periféricos de impressão configurados no host.

  • Método: GET
  • Endpoint: /printer/list
  • Resposta: PrinterDto[]

2. Operações de Impressão

Impressão de Conteúdo HTML

Enfileira a conversão de HTML para PDF seguido da impressão física.

  • Método: POST
  • Endpoint: /printer/:printerName/print-html
  • Payload:
{
  "html": "string",
  "width": "string (ex: 80mm)",
  "height": "string (ex: 40mm)",
  "jobId": "string (opcional)"
}

Impressão Direta (ESC/POS)

Envio de comandos diretamente para impressoras térmicas.

  • Método: POST
  • Endpoint: /printer/:printerName/print
  • Payload:
{
  "lines": ["string"],
  "alignment": "left | center | right",
  "upsideDown": "boolean"
}

Observabilidade e Gestão

Bull Board

A interface de monitoramento em tempo real das filas está disponível no endpoint: http://localhost:3000/queues

Permite a visualização de tarefas ativas, concluídas e falhas, além da reinjeção manual de jobs.

Telemetria

O serviço está instrumentado com OpenTelemetry, exportando traces via protocolo OTLP para análise de performance e rastreabilidade distribuída.


Estrutura Técnica

O projeto é construído sobre o framework NestJS, utilizando @nestjs/bullmq para a gestão de filas. O processador de impressão é injetado como um provider global no AppModule para garantir a execução contínua do worker dentro do contexto da aplicação.