fix(): Ajuste na listagem de ato_principal - Aplicando descriptografia nos dados

This commit is contained in:
Kenio 2025-11-04 15:37:47 -03:00
parent 682cb61ab9
commit fb2ea45c46
2 changed files with 78 additions and 5 deletions

View file

@ -1308,13 +1308,66 @@
} }
}, },
"url": { "url": {
"raw": "{{url}}/ato/3", "raw": "{{url}}/ato/58",
"host": [ "host": [
"{{url}}" "{{url}}"
], ],
"path": [ "path": [
"ato", "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"
] ]
} }
}, },

View file

@ -15,7 +15,7 @@ class IndexRepository:
# Cria a sessão dentro do repositório # Cria a sessão dentro do repositório
db = SessionLocal() db = SessionLocal()
try: try:
# Executa a query # Executa a query com descriptografia de campos sensíveis
result = db.query( result = db.query(
AtoPrincipal.ato_principal_id, AtoPrincipal.ato_principal_id,
AtoPrincipal.origem_ato_principal_id, AtoPrincipal.origem_ato_principal_id,
@ -44,8 +44,28 @@ class IndexRepository:
AtoPrincipal.updated_at, AtoPrincipal.updated_at,
).all() ).all()
# Converte os models SQLAlchemy em schemas Pydantic # Lista final com conversão segura
data = [AtoPrincipalSchema.model_validate(obj) for obj in result] 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 return data