From fb2ea45c46694002837c9299154aaaea90c2abc1 Mon Sep 17 00:00:00 2001 From: Kenio de Souza Date: Tue, 4 Nov 2025 15:37:47 -0300 Subject: [PATCH] fix(): Ajuste na listagem de ato_principal - Aplicando descriptografia nos dados --- Orius Mirror.postman_collection.json | 57 ++++++++++++++++++- .../ato_principal_index_repository.py | 26 ++++++++- 2 files changed, 78 insertions(+), 5 deletions(-) diff --git a/Orius Mirror.postman_collection.json b/Orius Mirror.postman_collection.json index 3856050..ebae79c 100644 --- a/Orius Mirror.postman_collection.json +++ b/Orius Mirror.postman_collection.json @@ -1308,13 +1308,66 @@ } }, "url": { - "raw": "{{url}}/ato/3", + "raw": "{{url}}/ato/58", "host": [ "{{url}}" ], "path": [ "ato", - "3" + "58" + ] + } + }, + "response": [] + }, + { + "name": "Localizar Código Ato", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {}, + "requests": {} + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{BearerToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{url}}/atos/yellowu88", + "host": [ + "{{url}}" + ], + "path": [ + "atos", + "yellowu88" ] } }, diff --git a/packages/v1/administrativo/repositories/ato_principal/ato_principal_index_repository.py b/packages/v1/administrativo/repositories/ato_principal/ato_principal_index_repository.py index 9472b66..f296c76 100644 --- a/packages/v1/administrativo/repositories/ato_principal/ato_principal_index_repository.py +++ b/packages/v1/administrativo/repositories/ato_principal/ato_principal_index_repository.py @@ -15,7 +15,7 @@ class IndexRepository: # Cria a sessão dentro do repositório db = SessionLocal() try: - # Executa a query + # Executa a query com descriptografia de campos sensíveis result = db.query( AtoPrincipal.ato_principal_id, AtoPrincipal.origem_ato_principal_id, @@ -44,8 +44,28 @@ class IndexRepository: AtoPrincipal.updated_at, ).all() - # Converte os models SQLAlchemy em schemas Pydantic - data = [AtoPrincipalSchema.model_validate(obj) for obj in result] + # Lista final com conversão segura + data = [] + for obj in result: + # Transforma a Row em dicionário mutável + row = dict(obj._mapping) + + # Decodifica os campos criptografados (se não forem None) + for field in [ + "nome_civil_ato", + "nome_serventuario_praticou_ato", + "inteiro_teor", + ]: + value = row.get(field) + if isinstance(value, (bytes, bytearray)): + try: + row[field] = value.decode("utf-8") + except UnicodeDecodeError: + # Evita quebrar se o conteúdo não for UTF-8 válido + row[field] = None + + # Valida via schema Pydantic + data.append(AtoPrincipalSchema.model_validate(row)) return data