Primera version estable de microservicios
This commit is contained in:
112
schemas/pedimentoSchema.py
Normal file
112
schemas/pedimentoSchema.py
Normal file
@@ -0,0 +1,112 @@
|
||||
from pydantic import BaseModel, Field, field_validator
|
||||
from typing import Optional
|
||||
from uuid import UUID
|
||||
|
||||
|
||||
class PedimentoBaseSchema(BaseModel):
|
||||
"""Esquema base para pedimentos con campos comunes"""
|
||||
aduana: str = Field(..., min_length=3, max_length=3, description="Código de aduana (3 dígitos)", pattern="^[0-9]{3}$")
|
||||
patente: str = Field(..., min_length=4, max_length=4, description="Número de patente (4 dígitos)", pattern="^[0-9]{4}$")
|
||||
pedimento: str = Field(..., min_length=7, max_length=7, description="Número de pedimento (7 dígitos)", pattern="^[0-9]{7}$")
|
||||
|
||||
@field_validator('aduana')
|
||||
def validate_aduana(cls, v):
|
||||
if not v.isdigit():
|
||||
raise ValueError('Aduana debe contener solo dígitos')
|
||||
return v
|
||||
|
||||
@field_validator('patente')
|
||||
def validate_patente(cls, v):
|
||||
if not v.isdigit():
|
||||
raise ValueError('Patente debe contener solo dígitos')
|
||||
return v
|
||||
|
||||
@field_validator('pedimento')
|
||||
def validate_pedimento(cls, v):
|
||||
if not v.isdigit():
|
||||
raise ValueError('Pedimento debe contener solo dígitos')
|
||||
return v
|
||||
|
||||
|
||||
class PedimentoRequest(PedimentoBaseSchema):
|
||||
"""Esquema para solicitudes de pedimento"""
|
||||
pedimento_id: str = Field(..., description="ID único del pedimento")
|
||||
organizacion_id: str = Field(..., description="ID de la organización")
|
||||
|
||||
@field_validator('pedimento_id', 'organizacion_id')
|
||||
def validate_ids(cls, v):
|
||||
if not v or not v.strip():
|
||||
raise ValueError('Los IDs no pueden estar vacíos')
|
||||
return v.strip()
|
||||
|
||||
|
||||
class PedimentoCompletoRequest(PedimentoBaseSchema):
|
||||
"""Esquema para solicitar pedimento completo"""
|
||||
username: str = Field(..., min_length=3, max_length=50, description="Usuario para autenticación")
|
||||
password: str = Field(..., min_length=1, description="Contraseña para autenticación")
|
||||
|
||||
@field_validator('username')
|
||||
def validate_username(cls, v):
|
||||
if not v or not v.strip():
|
||||
raise ValueError('Username no puede estar vacío')
|
||||
return v.strip()
|
||||
|
||||
|
||||
class EstadoPedimentoRequest(PedimentoBaseSchema):
|
||||
"""Esquema para consultar estado de pedimento"""
|
||||
username: str = Field(..., min_length=3, max_length=50, description="Usuario para autenticación")
|
||||
password: str = Field(..., min_length=1, description="Contraseña para autenticación")
|
||||
numero_operacion: str = Field(..., min_length=1, max_length=20, description="Número de operación del pedimento")
|
||||
|
||||
@field_validator('username')
|
||||
def validate_username(cls, v):
|
||||
if not v or not v.strip():
|
||||
raise ValueError('Username no puede estar vacío')
|
||||
return v.strip()
|
||||
|
||||
@field_validator('numero_operacion')
|
||||
def validate_numero_operacion(cls, v):
|
||||
if not v or not v.strip():
|
||||
raise ValueError('Número de operación no puede estar vacío')
|
||||
return v.strip()
|
||||
|
||||
|
||||
class RemesasRequest(PedimentoBaseSchema):
|
||||
"""Esquema para consultar remesas"""
|
||||
username: str = Field(..., min_length=3, max_length=50, description="Usuario para autenticación")
|
||||
password: str = Field(..., min_length=1, description="Contraseña para autenticación")
|
||||
numero_operacion: str = Field(..., min_length=1, max_length=20, description="Número de operación del pedimento")
|
||||
|
||||
@field_validator('username')
|
||||
def validate_username(cls, v):
|
||||
if not v or not v.strip():
|
||||
raise ValueError('Username no puede estar vacío')
|
||||
return v.strip()
|
||||
|
||||
@field_validator('numero_operacion')
|
||||
def validate_numero_operacion(cls, v):
|
||||
if not v or not v.strip():
|
||||
raise ValueError('Número de operación no puede estar vacío')
|
||||
return v.strip()
|
||||
|
||||
|
||||
class PedimentoResponse(BaseModel):
|
||||
"""Esquema para respuestas de pedimento"""
|
||||
success: bool = Field(..., description="Indica si la operación fue exitosa")
|
||||
message: str = Field(..., description="Mensaje descriptivo de la operación")
|
||||
pedimento_id: Optional[str] = Field(None, description="ID del pedimento procesado")
|
||||
organizacion_id: Optional[str] = Field(None, description="ID de la organización")
|
||||
task_id: Optional[str] = Field(None, description="ID de la tarea en segundo plano")
|
||||
data: Optional[dict] = Field(None, description="Datos adicionales de la respuesta")
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
"example": {
|
||||
"success": True,
|
||||
"message": "Pedimento procesado exitosamente",
|
||||
"pedimento_id": "12345",
|
||||
"organizacion_id": "org-123",
|
||||
"task_id": "task-abc-123",
|
||||
"data": {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user