chore/organize-project #1

Merged
joelson merged 4 commits from chore/organize-project into main 2026-01-26 21:32:37 +00:00
1 changed files with 14 additions and 7 deletions
Showing only changes of commit 258b97eb15 - Show all commits

View File

@ -37,33 +37,35 @@ Retorna a lista de impressoras instaladas no servidor onde a API está rodando.
### 2. Imprimir HTML (Etiquetas/Layouts) ### 2. Imprimir HTML (Etiquetas/Layouts)
Converte um código HTML (com suporte a Tailwind CSS) para PDF e imprime na impressora selecionada. Ideal para etiquetas. Converte um código HTML (com suporte a Tailwind CSS) para PDF e imprime na impressora selecionada via Fila de Processamento (BullMQ).
- **Método:** `POST` - **Método:** `POST`
- **Rota:** `/printer/print-html` - **Rota:** `/printer/print-html` ou `/printer/:printerName/print-html`
- **Corpo da Requisição (JSON):** - **Corpo da Requisição (JSON):**
```json ```json
{ {
"html": "<div class='text-xl font-bold'>Minha Etiqueta</div>...", "html": "<div class='text-xl font-bold'>Minha Etiqueta</div>...",
"printerName": "POS-80", // Nome exato da impressora (conforme retornado na listagem) "printerName": "POS-80", // Opcional se passado na URL
"width": "60mm", // Opcional. Largura do papel/etiqueta. Default: 80mm "width": "60mm", // Opcional. Largura do papel/etiqueta. Default: 80mm
"height": "40mm" // Opcional. Altura da etiqueta. Default: auto "height": "40mm", // Opcional. Altura da etiqueta. Default: auto
"jobId": "meu-id-unico-123" // Opcional. ID para idempotência na fila.
} }
``` ```
- **Detalhes:** - **Detalhes:**
- O backend injeta automaticamente o script do Tailwind CSS. - O backend injeta automaticamente o script do Tailwind CSS.
- O HTML é renderizado via Puppeteer (Chrome headless). - O HTML é renderizado via Puppeteer (Chrome headless).
- Tarefas são processadas de forma assíncrona via Redis/BullMQ.
--- ---
### 3. Imprimir Texto Simples (ESC/POS) ### 3. Imprimir Texto Simples (ESC/POS)
Envia comandos de texto diretamente para a impressora. Ideal para cupons simples e rápidos, sem formatação complexa. Envia comandos de texto diretamente para a impressora. Ideal para cupons simples e rápidos.
- **Método:** `POST` - **Método:** `POST`
- **Rota:** `/printer/print` - **Rota:** `/printer/print` ou `/printer/:printerName/print`
- **Corpo da Requisição (JSON):** - **Corpo da Requisição (JSON):**
```json ```json
@ -76,7 +78,7 @@ Envia comandos de texto diretamente para a impressora. Ideal para cupons simples
], ],
"alignment": "center", // "left", "center", "right". Default: left "alignment": "center", // "left", "center", "right". Default: left
"upsideDown": false, // Se true, imprime de cabeça para baixo "upsideDown": false, // Se true, imprime de cabeça para baixo
"printerInterface": "POS-80" // Pode ser nome da impressora (USB) ou "tcp://192.168.1.100" (Rede) "printerInterface": "POS-80" // Opcional se passado na URL. Suporta "tcp://192.168.1.100" ou nome da impressora.
} }
``` ```
@ -98,6 +100,7 @@ export interface PrintHtmlPayload {
printerName: string; printerName: string;
width?: string; width?: string;
height?: string; height?: string;
jobId?: string;
} }
export interface PrintTextPayload { export interface PrintTextPayload {
@ -107,3 +110,7 @@ export interface PrintTextPayload {
printerInterface?: string; printerInterface?: string;
} }
``` ```
## Swagger
A documentação interativa completa (OpenAPI) está disponível em `/api`. Lá você pode testar todos os endpoints e ver os esquemas detalhados de cada DTO.