o
    ·mji  ã                   @  sx   d Z ddlmZ ddlmZmZ ddlmZ eG dd„ dƒƒZeG dd„ dƒƒZ	eG d	d
„ d
ƒƒZ
eG dd„ dƒƒZdS )zAModelos ligeros de la API CRM (campos conocidos + payload crudo).é    )Úannotations)Ú	dataclassÚfield)ÚAnyc                   @  sZ   e Zd ZU dZded< dZded< dZded	< dZded
< eddd„ƒZ	eddd„ƒZ
dS )ÚResourceResultu'   Respuesta genÃ©rica de un recurso REST.r   ÚdataéÈ   ÚintÚstatus_codeÚ ÚstrÚresourceÚpathÚreturnÚboolc                 C  s   d| j   ko
dk S   S )Nr   i,  )r
   ©Úself© r   ú4/var/www/html/bot-asterisk-ari/backend/crm/models.pyÚok   s   zResourceResult.okc                 C  s.   | j d u rdS t| j tttfƒr| j sdS dS )NTF)r   Ú
isinstanceÚlistÚdictr   r   r   r   r   Úis_empty   s
   
zResourceResult.is_emptyN)r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r
   r   r   Úpropertyr   r   r   r   r   r   r   	   s   
 r   c                   @  s\   e Zd ZU ded< dZded< dZded< eedZded< e	ddd„ƒZ
eddd„ƒZdS )ÚClienter   Úidr   ÚnombreÚapellido©Údefault_factoryúdict[str, Any]ÚrawÚpayloadr   c                 C  s^   | t | d¡pdƒ ¡ t | d¡p| d¡pdƒ ¡ t | d¡p&| d¡p&dƒ ¡ t|ƒdS )Nr!   r   r"   Únamer#   Úlastname)r!   r"   r#   r'   ©r   ÚgetÚstripr   ©Úclsr(   r   r   r   Úfrom_api&   s   ÿúzCliente.from_apic                 C  ó    d  dd„ | j| jfD ƒ¡ ¡ S )Nú c                 s  ó    | ]}|r|V  qd S ©Nr   ©Ú.0Úpr   r   r   Ú	<genexpr>3   ó   € z*Cliente.nombre_completo.<locals>.<genexpr>©Újoinr"   r#   r-   r   r   r   r   Únombre_completo1   ó    zCliente.nombre_completoN)r(   r&   r   r    ©r   r   )r   r   r   r   r"   r#   r   r   r'   Úclassmethodr0   r   r<   r   r   r   r   r       s   
 
r    c                   @  sB   e Zd ZU ded< dZded< eedZded< edd
d„ƒZ	dS )ÚProductor   r!   r   r"   r$   r&   r'   r(   r   c                 C  sJ   | t | d¡pdƒ ¡ t | d¡p| d¡p| d¡pdƒ ¡ t|ƒdS )Nr!   r   r"   r)   Údescripcion)r!   r"   r'   r+   r.   r   r   r   r0   <   s   
ÿþüøzProducto.from_apiN)r(   r&   r   r@   )
r   r   r   r   r"   r   r   r'   r?   r0   r   r   r   r   r@   6   s   
 r@   c                   @  sè   e Zd ZU ded< dZded< dZded< dZded< dZded< dZded< d	Z	d
ed< dZ
ded< d	Zd
ed< dZded< d	Zd
ed< dZded< dZded< eedZded< ed dd„ƒZed!dd„ƒZd"dd„Zd!dd„ZdS )#ÚPolizasr   r!   r   r"   r#   ÚpolizaÚproductoÚplan_actualç        ÚfloatÚprecio_actualÚplan_ofrecidoÚprecio_ofrecidoÚplan_retencionÚmonto_aseguradoÚmonedaÚcreador$   r&   r'   r(   r   c                 C  s@  zt | d¡pdƒ}W n ttfy   d}Y nw | t| d¡p!dƒ ¡ t| d¡p+dƒ ¡ t| d¡p5dƒ ¡ t| d¡p?dƒ ¡ t| d¡pIdƒ ¡ t| d	¡pSdƒ ¡ t| d
¡p]dƒ ¡ t| d¡pgdƒ ¡ t| d¡pqdƒ ¡ t| d¡p{dƒ ¡ t| d¡p…dƒ ¡ t| d¡pdƒ ¡ t | d¡p™dƒt|ƒdS )NÚpreciorF   r!   r   r"   r#   rC   rD   rE   rH   rM   rN   rI   rJ   rK   rL   )r!   r"   r#   rC   rD   rE   rH   rM   rN   rI   rJ   rK   rL   r'   )rG   r,   Ú	TypeErrorÚ
ValueErrorr   r-   r   )r/   r(   rO   r   r   r   r0   [   s*   ÿòzPolizas.from_apic                 C  r1   )Nr2   c                 s  r3   r4   r   r5   r   r   r   r8   t   r9   z*Polizas.nombre_completo.<locals>.<genexpr>r:   r   r   r   r   r<   r   r=   zPolizas.nombre_completoc                 C  sB   | j | j| j| j| j| j| j| j| j| j	| j
| j| j| j| jdœS )N©r!   r"   r#   r<   rC   rD   rE   rH   rM   rN   rI   rJ   rK   rL   r'   rR   r   r   r   r   Ú	to_publicv   s    ñzPolizas.to_publicc                 C  s¤   dd| j › d| jpd› d| jpd› d| jpd› d| jp d› d| j› d	| j› d
| jp1d› d| jp8d› d| j	› d| j
pDd› d| j› g}d |¡S )z(Texto para inyectar en el agente OpenAI.uL   DATOS PRECARGADOS DE LA PÃ“LIZA DEL CLIENTE (fuente CRM, no inventes otros):z- Documento/ID: z
- Nombre: z(no informado)u   - NÃºmero de pÃ³liza: z- Producto: z- Plan_actual: z- Precio_actual: z
- Moneda: u   - Fecha de creaciÃ³n: z(no informada)z- Plan_ofrecido: z- Precio_ofrecido: z- Plan_retencion: z- Monto_asegurado: Ú
)r!   r<   rC   rD   rE   rH   rM   rN   rI   rJ   rK   rL   r;   )r   Úlinesr   r   r   Úto_prompt_block‰   s   




ó
zPolizas.to_prompt_blockN)r(   r&   r   rB   r>   )r   r&   )r   r   r   r   r"   r#   rC   rD   rE   rH   rI   rJ   rK   rL   rM   rN   r   r   r'   r?   r0   r   r<   rS   rV   r   r   r   r   rB   J   s*   
 
rB   N)r   Ú
__future__r   Údataclassesr   r   Útypingr   r   r    r@   rB   r   r   r   r   Ú<module>   s    