|
| 1 | +# DocGenius | Motor de Geração de Documentos |
| 2 | + |
| 3 | + |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | + |
| 8 | +<div align="center"> |
| 9 | + <a href="README.md"><strong>Read in English</strong></a> |
| 10 | +</div> |
| 11 | + |
| 12 | +> **Automatize a criação de documentos Word, PowerPoint e PDF a partir de dados do Excel.** |
| 13 | +
|
| 14 | +--- |
| 15 | + |
| 16 | +## 📖 Visão Geral |
| 17 | + |
| 18 | +**DocGenius** é uma ferramenta projetada para automatizar fluxos de trabalho de criação de documentos. Ele recebe dados estruturados de arquivos Excel e preenche templates do Microsoft Office (`.docx`, `.pptx`) usando um sistema de templates customizado baseado em Jinja2. |
| 19 | + |
| 20 | +Desenvolvido com **FastAPI** e **Docker**, ele fornece um painel web para gerenciar trabalhos em lote e inclui integração com LibreOffice (headless) para converter documentos gerados em formato PDF. É adequado para gerar contratos, relatórios, certificados e apresentações em escala. |
| 21 | + |
| 22 | +### 🌟 Principais Recursos |
| 23 | + |
| 24 | +* **Processamento em Lote:** Processa eficientemente múltiplas linhas de dados de arquivos Excel. |
| 25 | +* **Suporte a Formatos:** Compatível com templates padrão de Word (`.docx`) e PowerPoint (`.pptx`). |
| 26 | +* **Lógica de Templates:** Inclui filtros para manipulação de texto, aritmética de datas, formatação de moedas e lógica condicional diretamente dentro do template. |
| 27 | +* **Gestão de Assets:** Suporta inserção dinâmica e redimensionamento de imagens (ex: fotos, assinaturas) a partir de um arquivo ZIP. |
| 28 | +* **Conversão PDF:** LibreOffice integrado para conversão confiável de arquivos Office para PDF. |
| 29 | +* **Painel Web:** Uma interface de usuário limpa para enviar arquivos, monitorar o progresso e baixar resultados. |
| 30 | + |
| 31 | +--- |
| 32 | + |
| 33 | +## 🖼️ Prévia do Sistema |
| 34 | + |
| 35 | +### Interface do Painel |
| 36 | + |
| 37 | +*Interface Drag & Drop com logs de processo em tempo real.* |
| 38 | + |
| 39 | +### Documentação & Ajuda |
| 40 | + |
| 41 | +*Guia integrado para sintaxe de templates.* |
| 42 | + |
| 43 | +--- |
| 44 | + |
| 45 | +## 🔄 Como Funciona |
| 46 | + |
| 47 | +```mermaid |
| 48 | +graph LR |
| 49 | + A[Dados Excel] --> B(Motor DocGenius) |
| 50 | + C[Templates Word/PPT] --> B |
| 51 | + D[ZIP de Assets] --> B |
| 52 | + B --> E{Núcleo de Processamento} |
| 53 | + E --> F[Lógica Jinja2] |
| 54 | + E --> G[Redimensionamento de Imagens] |
| 55 | + E --> H[Conversão PDF] |
| 56 | + F --> I[Documentos Finais] |
| 57 | + G --> I |
| 58 | + H --> I |
| 59 | + I --> J[ZIP para Download] |
| 60 | +``` |
| 61 | + |
| 62 | +--- |
| 63 | + |
| 64 | +## 🚀 Início Rápido |
| 65 | + |
| 66 | +### Pré-requisitos |
| 67 | + |
| 68 | +* **Docker Desktop** (versão 20.10+) |
| 69 | +* **Docker Compose** |
| 70 | + |
| 71 | +### Instalação |
| 72 | + |
| 73 | +1. **Clonar o Repositório** |
| 74 | + ```bash |
| 75 | + git clone [https://github.com/rubensbraz/DocGenius.git](https://github.com/rubensbraz/DocGenius.git) |
| 76 | + cd DocGenius |
| 77 | + ``` |
| 78 | + |
| 79 | +2. **Iniciar o Motor** |
| 80 | + ```bash |
| 81 | + docker-compose up --build |
| 82 | + ``` |
| 83 | + |
| 84 | +3. **Acessar a Aplicação** |
| 85 | + Abra seu navegador e navegue para: |
| 86 | + `http://localhost:8000` |
| 87 | + |
| 88 | +--- |
| 89 | + |
| 90 | +## 🛠️ Estrutura do Projeto |
| 91 | + |
| 92 | +O projeto separa a lógica de processamento (backend) da interface do usuário (frontend). |
| 93 | + |
| 94 | +```text |
| 95 | +DocGenius/ |
| 96 | +├── app/ |
| 97 | +│ ├── core/ |
| 98 | +│ │ ├── engine.py # Processamento de Documentos (Docx/Pptx/Pdf) |
| 99 | +│ │ ├── formatter.py # Despachante de Filtros |
| 100 | +│ │ ├── validator.py # Verificador de Templates |
| 101 | +│ │ └── strategies/ # Módulos de Lógica de Formatação |
| 102 | +│ │ ├── base.py |
| 103 | +│ │ ├── date_std.py # Formatação de Datas |
| 104 | +│ │ ├── logic_std.py # Lógica Condicional |
| 105 | +│ │ └── ... |
| 106 | +│ ├── main.py # Aplicação FastAPI |
| 107 | +│ └── utils.py # Utilitários |
| 108 | +├── static/ # Assets do Frontend (HTML/CSS/JS) |
| 109 | +├── data/ # Volume Docker para Dados |
| 110 | +├── Dockerfile # Definição da Imagem |
| 111 | +└── docker-compose.yml # Orquestração de Containers |
| 112 | +``` |
| 113 | + |
| 114 | +--- |
| 115 | + |
| 116 | +## 📘 Sintaxe de Templates |
| 117 | + |
| 118 | +DocGenius usa o caractere pipe (`|`) para aplicar filtros de formatação às variáveis. |
| 119 | +*Para a lista completa de filtros, consulte a seção "How to Use" na aplicação ([Documentação no Github Pages](https://rubensbraz.github.io/DocGenius/help.html)).* |
| 120 | + |
| 121 | +### 1. Formatação de Texto |
| 122 | +```jinja2 |
| 123 | +{{ client_name | format_string('upper') }} -> "ACME CORP" |
| 124 | +{{ client_id | format_string('prefix', 'ID: ') }} -> "ID: 12345" |
| 125 | +``` |
| 126 | + |
| 127 | +### 2. Números & Moeda |
| 128 | +```jinja2 |
| 129 | +{{ contract_value | format_currency('USD') }} -> "$ 1,500.00" |
| 130 | +{{ tax_rate | format_number('percent', '2') }} -> "12.50%" |
| 131 | +{{ total | format_number('spell_out', 'en') }} -> "one thousand five hundred" |
| 132 | +``` |
| 133 | + |
| 134 | +### 3. Operações com Datas |
| 135 | +```jinja2 |
| 136 | +{{ start_date | format_date('long') }} -> "January 12, 2024" |
| 137 | +{{ start_date | format_date('add_days', '30') }} -> "2024-02-11" |
| 138 | +``` |
| 139 | + |
| 140 | +### 4. Lógica Condicional |
| 141 | +Mapeie códigos de status ou valores diretamente no documento: |
| 142 | +```jinja2 |
| 143 | +{{ status_code | format_logic( |
| 144 | + '10=Approved', |
| 145 | + '20=Pending', |
| 146 | + 'default', 'Unknown' |
| 147 | +) }} |
| 148 | +``` |
| 149 | + |
| 150 | +### 5. Mascaramento de Dados |
| 151 | +```jinja2 |
| 152 | +{{ email | format_mask('email') }} -> "j***@domain.com" |
| 153 | +``` |
| 154 | + |
| 155 | +### 6. Imagens |
| 156 | +```jinja2 |
| 157 | +{{ photo_filename | format_image('3', '4') }} -> (Redimensiona imagem para 3x4cm) |
| 158 | +``` |
| 159 | + |
| 160 | +--- |
| 161 | + |
| 162 | +## 🧪 Testes |
| 163 | + |
| 164 | +Um script utilitário está incluído para gerar dados de exemplo para fins de teste. |
| 165 | + |
| 166 | +1. **Gerar Dados de Exemplo (Dentro do Container):** |
| 167 | + ```bash |
| 168 | + docker exec -it docgenius python /data/mock_data/generate_seeds.py |
| 169 | + ``` |
| 170 | + *Isso cria `mock_data.xlsx`, `assets.zip`, e templates de exemplo na pasta de dados.* |
| 171 | + |
| 172 | +2. **Executar Teste:** |
| 173 | + Faça o upload dos arquivos gerados no painel para verificar a saída. |
| 174 | + |
| 175 | +--- |
| 176 | + |
| 177 | +## ⚖️ Licença (CC BY-NC 4.0) |
| 178 | + |
| 179 | +Este projeto está licenciado sob a **Licença Creative Commons Atribuição-NãoComercial 4.0 Internacional**. |
| 180 | + |
| 181 | +[](http://creativecommons.org/licenses/by-nc/4.0/) |
| 182 | + |
| 183 | +### Você tem o direito de: |
| 184 | +* **Compartilhar:** Copiar e redistribuir o material em qualquer suporte ou formato. |
| 185 | +* **Adaptar:** Remixar, transformar, e criar a partir do material. |
| 186 | + |
| 187 | +### De acordo com os seguintes termos: |
| 188 | +1. **Atribuição:** Você deve dar o crédito apropriado a **Rubens Braz**, fornecer um link para a licença e indicar se mudanças foram feitas. |
| 189 | +2. **NãoComercial:** Você **NÃO** pode usar o material para fins comerciais (vender o software, usá-lo para serviços pagos ou integrá-lo em produtos comerciais). |
| 190 | + |
| 191 | +*Para ver uma cópia desta licença, visite [http://creativecommons.org/licenses/by-nc/4.0/](http://creativecommons.org/licenses/by-nc/4.0/)* |
| 192 | + |
| 193 | +--- |
| 194 | + |
| 195 | +## 👨💻 Autor |
| 196 | + |
| 197 | +**Rubens Braz** |
| 198 | + |
| 199 | +--- |
| 200 | + |
| 201 | +> *"Automação não é sobre preguiça; é sobre precisão."* |
0 commit comments