fix/forzar el procesamiento de un pedimento cargado por datastage
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
from pydantic import BaseModel, Field, field_validator
|
||||
from typing import Optional
|
||||
|
||||
from typing import Optional, List, Union
|
||||
|
||||
class ServiceBaseSchema(BaseModel):
|
||||
"""Esquema base para servicios con campos comunes"""
|
||||
@@ -43,4 +42,41 @@ class ServiceRemesaSchema(BaseModel):
|
||||
def validate_string_fields(cls, v):
|
||||
if not v or not v.strip():
|
||||
raise ValueError('Los campos de texto no pueden estar vacíos')
|
||||
return v.strip()
|
||||
return v.strip()
|
||||
|
||||
class MultiPedimentoCompletoSchema(BaseModel):
|
||||
"""Esquema para procesar múltiples pedimentos de forma asíncrona"""
|
||||
organizacion: str = Field(..., description="ID de la organización")
|
||||
pedimentos: List[str] = Field(
|
||||
...,
|
||||
description="Lista de IDs de pedimentos a procesar",
|
||||
min_length=1,
|
||||
max_length=200
|
||||
)
|
||||
|
||||
@field_validator('organizacion')
|
||||
def validate_organizacion(cls, v):
|
||||
if not v or not v.strip():
|
||||
raise ValueError('La organización no puede estar vacía')
|
||||
return v.strip()
|
||||
|
||||
@field_validator('pedimentos')
|
||||
def validate_pedimentos(cls, v):
|
||||
if not v:
|
||||
raise ValueError('Debe proporcionar al menos un pedimento')
|
||||
if len(v) > 200:
|
||||
raise ValueError(f'Máximo 200 pedimentos por solicitud. Recibidos: {len(v)}')
|
||||
# Eliminar duplicados y vacíos
|
||||
pedimentos_limpios = [p.strip() for p in v if p and p.strip()]
|
||||
if not pedimentos_limpios:
|
||||
raise ValueError('La lista de pedimentos no puede estar vacía')
|
||||
# Eliminar duplicados
|
||||
return list(set(pedimentos_limpios))
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
"example": {
|
||||
"organizacion": "1",
|
||||
"pedimentos": ["123", "456", "789"]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user