
    Și                     ^   d dl mZmZ d dlmZmZ d dlmZmZmZ  G d de      Z	 G d de      Z
 G d d	e	      Z G d
 de      Z G d de	      Z G d de      Z G d de	      Z G d de      Z G d de	      Z G d de      Z G d de	      Z G d de	      Z G d de      Z G d de	      Z G d  d!e      Z G d" d#e	      Z G d$ d%e      Z G d& d'e	      Z G d( d)e	      Z G d* d+e      Z G d, d-e	      Z G d. d/e	      Z G d0 d1e	      Z G d2 d3e      Z  G d4 d5e	      Z!y6)7    )	BaseModelField)ListOptional)datedatetimetimec                   $    e Zd ZdZ G d d      Zy)
ConfigReaduG   Configuración compartida para todos los esquemas de lectura/respuesta.c                   &    e Zd ZdZed ed ed iZy)ConfigRead.ConfigTc                 *    | r| j                         S d S N	isoformatvs    4/opt/tws/multiagentes-mcp/api_restaurante/schemas.py<lambda>zConfigRead.Config.<lambda>       QAKKM D     c                 *    | r| j                         S d S r   r   r   s    r   r   zConfigRead.Config.<lambda>   s      r   c                 *    | r| j                         S d S r   r   r   s    r   r   zConfigRead.Config.<lambda>   r   r   N)__name__
__module____qualname__from_attributesr   r   r	   json_encoders r   r   Configr      s     8<8
r   r    N)r   r   r   __doc__r    r   r   r   r   r      s    Q
 
r   r   c                       e Zd ZU dZ eddd      Zeed<   eed<   eed<    edd	
      Zeed<    edd
      Z	eed<   y)RestauranteCreatez&DTO para crear un Restaurante (Input)..   u   RUC único del restaurante.)
max_lengthdescriptionrucnombrerazon_socialu   Email único de contacto.r&   emailu   WhatsApp único de contacto.whatsappN)
r   r   r   r!   r   r'   str__annotations__r+   r,   r   r   r   r#   r#      sH    0SR5RSCSKs(CDE3D#+IJHcJr   r#   c                   N    e Zd ZU dZeed<   eed<   eed<   eed<   eed<   eed<   y)	RestauranteReadz&DTO para leer un Restaurante (Output).idr'   r(   r)   r+   r,   Nr   r   r   r!   intr.   r-   r   r   r   r0   r0      s$    0G	HKJMr   r0   c                   D    e Zd ZU dZ edd      Zeed<   eed<   eed<   y)	SucursalCreatez$DTO para crear una Sucursal (Input)..z$ID del restaurante al que pertenece.r*   id_restaurante	direccionciudadN)	r   r   r   r!   r   r6   r3   r.   r-   r   r   r   r5   r5   *   s!    .1WXNCXNKr   r5   c                   :    e Zd ZU dZeed<   eed<   eed<   eed<   y)SucursalReadz$DTO para leer una Sucursal (Output).r1   r6   r7   r8   Nr2   r   r   r   r:   r:   0   s    .GNKr   r:   c                       e Zd ZU dZeed<    eddd      Zeed<    eddd      Zeed	<    edd
      Z	e
ed<   dZeed<   y)
MesaCreatez DTO para crear una Mesa (Input).id_sucursal.   u&   Número de mesa dentro de la sucursal.ger&   identificador_mesau   Número máximo de personas.	capacidadu/   Ubicación (ej: 'Terraza', 'Salón principal').r*   	ubicacionT
disponibleN)r   r   r   r!   r3   r.   r   rA   rB   rC   r-   rD   boolr   r   r   r<   r<   <   sP    *#CA;cdd312PQIsQ3,]^Is^Jr   r<   c                   N    e Zd ZU dZeed<   eed<   eed<   eed<   eed<   eed<   y)	MesaReadz DTO para leer una Mesa (Output).r1   r=   rA   rB   rC   rD   N)r   r   r   r!   r3   r.   r-   rE   r   r   r   rG   rG   D   s&    *GNNr   rG   c                   :    e Zd ZU dZ edd      Zeed<   eed<   y)ClienteCreatez"DTO para crear un Cliente (Input)..u'   Número de WhatsApp único del cliente.r*   r,   r(   N)r   r   r   r!   r   r,   r-   r.   r   r   r   rI   rI   R   s    ,#+TUHcUKr   rI   c                   B    e Zd ZU dZeed<   eed<   eed<   eed<   ddiZy)	ClienteReadz"DTO para leer un Cliente (Output).r1   r,   r(   fecha_registror   TN)	r   r   r   r!   r3   r.   r-   r   model_configr   r   r   rK   rK   W   s(    ,GMK 	4Lr   rK   c                   X    e Zd ZU dZeed<   eed<   eed<   eed<    edd      Ze	ed	<   y
)ReservaCreatez#DTO para crear una Reserva (Input).r=   
id_clienteid_mesafecha_reserva.z1Estado de la reserva (ej: CONFIRMADA, PENDIENTE).r*   estadoN)
r   r   r   r!   r3   r.   r   r   rS   r-   r   r   r   rO   rO   f   s-    -OL)\]FC]r   rO   c                   T    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   y)	ReservaReadr1   r=   rP   rQ   rR   rS   rL   N)r   r   r   r3   r.   r   r-   r   r   r   rU   rU   n   s(    GOLKr   rU   c                   J    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   y)ReservaResponser1   mesarC   rR   rS   rL   N)r   r   r   r3   r.   r-   r   r   r   r   rW   rW   w   s"    G
INKr   rW   c                   t    e Zd ZU dZ edd      Zee   ed<   eed<   eed<   eed<    ed	d
d      Z	eed<   y)ConversacionCreateu)   DTO para crear una Conversación (Input).Nu6   ID único del mensaje de WhatsApp (opcional en input).r*   wamidmensajer,   username.z^(USUARIO|BOT)$z"Origen del mensaje: USUARIO o BOT.)patternr&   origen)
r   r   r   r!   r   r[   r   r-   r.   r_   r   r   r   rZ   rZ      s?    3 3klE8C=lLMM%6DhiFCir   rZ   c                   ^    e Zd ZU dZeed<   ee   ed<   eed<   eed<   eed<   eed<   eed<   y	)
ConversacionReadu)   DTO para leer una Conversación (Output).r1   r[   r\   r,   r]   r_   fechaN)	r   r   r   r!   r3   r.   r   r-   r   r   r   r   ra   ra      s-    3GC=LMMKOr   ra   c                   <    e Zd ZU dZeed<    eddd      Zeed<   y)	CategoriaCreateu&   DTO para crear una Categoría (Input).r(   .r>   u$   Orden de visualización en el menú.r?   posicionN)	r   r   r   r!   r-   r.   r   re   r3   r   r   r   rd   rd      s    0K#!1WXHcXr   rd   c                   0    e Zd ZU dZeed<   eed<   eed<   y)CategoriaReadu&   DTO para leer una Categoría (Output).r1   r(   re   Nr2   r   r   r   rg   rg      s    0GKMr   rg   c                   v    e Zd ZU dZeed<   eed<    edd      Ze	e   ed<    edd	
      Z
eed<   dZeed<   y)PlatoCreatez DTO para crear un Plato (Input).id_categoriar(   Nz"URL o ruta de la imagen del plato.r*   imagen.r   )gtprecio_baseTrD   )r   r   r   r!   r3   r.   r-   r   rk   r   rm   floatrD   rE   r   r   r   ri   ri      sA    *K!$4XYFHSMYsq)K)Jr   ri   c                   T    e Zd ZU dZeed<   eed<   eed<   ee   ed<   eed<   e	ed<   y)		PlatoReadz DTO para leer un Plato (Output).r1   rj   r(   rk   rm   rD   N)
r   r   r   r!   r3   r.   r-   r   rn   rE   r   r   r   rp   rp      s+    *GKSMr   rp   c                   6    e Zd ZU eed<   eed<   eed<   eed<   y)PlatoResponser1   r(   	categoriarm   N)r   r   r   r3   r.   r-   rn   r   r   r   rr   rr      s    GKNr   rr   c                   X    e Zd ZU dZeed<    edd      Zeed<    edd      Z	eed<   y	)

MenuCreateu    DTO para crear un Menú (Input).r(   .z#Fecha y hora de inicio de vigencia.r*   inicioz Fecha y hora de fin de vigencia.finN)
r   r   r   r!   r-   r.   r   rv   r   rw   r   r   r   ru   ru      s.    *KS.STFHT#+MNCNr   ru   c                   :    e Zd ZU dZeed<   eed<   eed<   eed<   y)MenuReadu    DTO para leer un Menú (Output).r1   r(   rv   rw   N)r   r   r   r!   r3   r.   r-   r   r   r   r   ry   ry      s    *GK	Mr   ry   c                   6    e Zd ZU eed<   eed<   eed<   eed<   y)ItemMenuResponsenombre_plators   rm   precio_especialN)r   r   r   r-   r.   rn   r   r   r   r{   r{      s    Nr   r{   c                   <    e Zd ZU eed<   eed<   eed<   ee   ed<   y)MenuResponser(   rv   rw   itemsN)r   r   r   r-   r.   r   r   r{   r   r   r   r   r      s    K	M !!r   r   c                   V    e Zd ZU dZeed<   eed<   eed<    eddd      Zee	   ed	<   y)
ItemMenuCreatez#DTO para crear un ItemMenu (Input).id_menuid_platore   Nr   u,   Precio opcional para este ítem en el menú.)rl   r&   r}   )
r   r   r   r!   r3   r.   r   r}   r   rn   r   r   r   r   r      s,    -LMM',TaEs'tOXe_tr   r   c                   J    e Zd ZU dZeed<   eed<   eed<   eed<   ee   ed<   y)ItemMenuReadz#DTO para leer un ItemMenu (Output).r1   r   r   re   r}   N)r   r   r   r!   r3   r.   r   rn   r   r   r   r   r      s#    -GLMMe_$r   r   N)"pydanticr   r   typingr   r   r   r   r	   r   r#   r0   r5   r:   r<   rG   rI   rK   rO   rU   rW   rZ   ra   rd   rg   ri   rp   rr   ru   ry   r{   r   r   r   r   r   r   <module>r      sI   % ! ) )
 
K	 Kj Y :  z I 
	* 	^I ^* j j jz Yi Y
J ) 
 J O Oz z ": "uY u%: %r   