Skip to content

Commit 579f809

Browse files
feat: update README to include new features in certificate generation, such as QR code with Tech Floripa logo and blockchain registration on Solana; enhance SQS message format for output
1 parent 3eb673d commit 579f809

File tree

1 file changed

+55
-5
lines changed

1 file changed

+55
-5
lines changed

readme.md

Lines changed: 55 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
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
2527
project_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+
"email": "[email protected]",
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

Comments
 (0)