11# Certified Builder Py
22
3- Sistema de geração automática de certificados para eventos usando AWS Lambda e Docker. O projeto gera certificados personalizados para participantes de eventos, processando mensagens do SQS e utilizando templates predefinidos.
3+ Sistema de geração automática de certificados para eventos usando AWS Lambda e Docker. O projeto gera certificados personalizados para participantes de eventos, processando mensagens do SQS e utilizando templates predefinidos. Os certificados incluem QR code para validação com logo Tech Floripa no centro e são registrados na blockchain Solana para autenticação.
44
55[ ![ Continuos Integration -Testing - Certified Builder Py] ( https://github.com/maxsonferovante/certified_builder_py/actions/workflows/workflow_testing.yaml/badge.svg )] ( https://github.com/maxsonferovante/certified_builder_py/actions/workflows/workflow_testing.yaml )
66
@@ -13,28 +13,39 @@ Sistema de geração automática de certificados para eventos usando AWS Lambda
1313 - Código de validação único
1414 - Logo do evento
1515 - Detalhes do evento em três linhas centralizadas
16- - QR Code para validação
16+ - QR Code para validação com logo Tech Floripa no centro
17+ - Registro na blockchain Solana para autenticação
1718- Processamento de mensagens SQS
1819- Execução em container Docker
1920- Deploy automatizado para AWS Lambda
2021- Integração com AWS ECR
22+ - Envio de mensagens para fila de notificação com dados do certificado
2123
2224## Estrutura do Projeto
2325
2426``` plaintext
2527project_root/
2628├── certified_builder/
2729│ ├── certified_builder.py # Classe principal de geração de certificados
30+ │ ├── make_qrcode.py # Geração de QR codes com logo
31+ │ ├── certificates_on_solana.py # Integração com blockchain Solana
32+ │ ├── solana_explorer_url.py # Extração de URL do Solana Explorer
2833│ └── utils/
2934│ └── fetch_file_certificate.py # Utilitário para download de imagens
3035├── models/
3136│ ├── participant.py # Modelo de dados do participante
3237│ ├── certificate.py # Modelo de dados do certificado
3338│ └── event.py # Modelo de dados do evento
39+ ├── aws/
40+ │ ├── sqs_service.py # Serviço para envio de mensagens SQS
41+ │ ├── s3_service.py # Serviço para upload no S3
42+ │ └── boto_aws.py # Configuração do cliente AWS
3443├── fonts/
3544│ ├── PinyonScript/ # Fonte para o nome do participante
3645│ └── ChakraPetch/ # Fonte para detalhes e código de validação
46+ ├── tests/ # Testes automatizados
3747├── lambda_function.py # Handler da função Lambda
48+ ├── config.py # Configurações do projeto
3849├── Dockerfile # Configuração do container
3950└── requirements.txt # Dependências do projeto
4051```
@@ -45,12 +56,16 @@ project_root/
4556- Pillow (Processamento de imagens)
4657- httpx (Requisições HTTP)
4758- Pydantic (Validação de dados)
59+ - qrcode (Geração de QR codes)
4860- Docker
4961- AWS Lambda
5062- AWS ECR
5163- AWS SQS
64+ - Solana Blockchain (Registro de certificados)
5265
53- ## Formato da Mensagem SQS
66+ ## Formato da Mensagem SQS (Entrada)
67+
68+ A Lambda recebe mensagens do SQS com os dados dos participantes para gerar os certificados:
5469
5570``` json
5671{
@@ -76,6 +91,38 @@ project_root/
7691}
7792```
7893
94+ ## Formato da Mensagem SQS (Saída - Fila de Notificação)
95+
96+ Após a geração dos certificados, uma mensagem é enviada para outra fila SQS com os dados do certificado gerado:
97+
98+ ``` json
99+ [
100+ {
101+ "order_id" : 123 ,
102+ "validation_code" : " ABC-DEF-GHI" ,
103+ "authenticity_verification_url" : " https://explorer.solana.com/tx/...?cluster=devnet" ,
104+ "product_id" : 456 ,
105+ "product_name" : " Nome do Evento" ,
106+ 107+ "certificate_key" : " certificates/456/123/Nome_Sobrenome_Nome_do_Evento_ABC-DEF-GHI.png" ,
108+ "success" : true
109+ }
110+ ]
111+ ```
112+
113+ ### Campos da Mensagem de Saída
114+
115+ - ** ` order_id ` ** : ID do pedido/ordem
116+ - ** ` validation_code ` ** : Código de validação do certificado (formato: XXX-XXX-XXX)
117+ - ** ` authenticity_verification_url ` ** : URL do Solana Explorer para verificação na blockchain
118+ - ** ` product_id ` ** : ID do produto/evento
119+ - ** ` product_name ` ** : Nome do produto/evento
120+ - ** ` email ` ** : Email do participante
121+ - ** ` certificate_key ` ** : Chave do certificado no S3 (formato: ` certificates/{product_id}/{order_id}/{nome_certificado}.png ` )
122+ - ** ` success ` ** : Indica se a geração foi bem-sucedida (true/false)
123+
124+ ** Nota** : A mensagem é enviada como um array, podendo conter múltiplos certificados quando processados em lote.
125+
79126## Desenvolvimento Local
80127
81128### Pré-requisitos
@@ -118,11 +165,14 @@ O deploy é automatizado através do GitHub Actions:
118165
119166## Estrutura do Certificado Gerado
120167
121- - ** Logo** : Canto superior esquerdo (150x150 pixels)
168+ - ** Logo do Evento ** : Canto superior esquerdo (150x150 pixels máximo, redimensionado automaticamente )
122169- ** Nome** : Centro do certificado (fonte Pinyon Script)
123170- ** Detalhes** : Três linhas centralizadas abaixo do nome (fonte Chakra Petch)
171+ - ** QR Code** : Posicionado abaixo do logo (150x150 pixels) com logo Tech Floripa centralizado
172+ - Contém URL de validação com código único: ` https://tech.floripa.br/certificate-validate/?validate_code=XXX-XXX-XXX `
173+ - Usa correção de erros nível H (30% redundância) para garantir leitura mesmo com logo
174+ - ** Texto "Scan to Validate"** : Abaixo do QR code, centralizado
124175- ** Código de Validação** : Canto inferior direito (fonte Chakra Petch)
125- - ** QR Code** : Canto inferior direito para validação online
126176
127177## Contribuindo
128178
0 commit comments