Ë
    _|ïi%  ã                   óæ   — d dl Z d dlmZ d dlmZmZmZmZ d dlmZm	Z	m
Z
 d dlmZmZ d dlmZ d dlmZ d dl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y)é    N)Údatetime)ÚAnyÚDictÚListÚOptional)Ú	BaseModelÚ
ConfigDictÚmodel_validator)ÚIrrigationMethodÚSeason)ÚGraftCombinationResponse)ÚPlantResponse)ÚSoilProfileResponsec                   óì   — e Zd ZU eed<   dZeej                     ed<   dZ	eej                     ed<   ej                  ed<   e
ed<   e
ed<   e
ed<   eed	<   eed
<   eed<   eed<    ed¬«      dd„«       Zy)ÚScenarioCreateÚnameNÚgraft_combination_idÚplant_idÚsoil_profile_idÚapplied_nitrogenÚapplied_phosphorusÚapplied_potassiumÚirrigation_methodÚirrigation_frequency_daysÚseasonÚduration_daysÚafter©Úmodec                 ó’   — | j                   €| j                  €t        d«      ‚| j                   �| j                  �t        d«      ‚| S ©Nz8Either graft_combination_id or plant_id must be providedz9Provide either graft_combination_id or plant_id, not both©r   r   Ú
ValueError©Úselfs    úI/var/www/acinvestment.org/public_html/aci/backend/app/schemas/scenario.pyÚcheck_plant_or_graftz#ScenarioCreate.check_plant_or_graft   óI   € à×$Ñ$Ð,°·±Ð1FÜÐWÓXÐXØ×$Ñ$Ð0°T·]±]Ð5NÜÐXÓYÐYØˆó    )Úreturnr   )Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r   r   ÚuuidÚUUIDr   Úfloatr   Úintr   r
   r'   © r)   r&   r   r      sx   … Ø
ƒIØ04Ð˜( 4§9¡9Ñ-Ó4Ø$(€Hˆh�t—y‘yÑ!Ó(Ø—Y‘YÓØÓØÓØÓØ'Ó'Ø"Ó"ØƒNØÓá˜'Ô"òó #ñr)   r   c                   óú   — e Zd ZU dZdZee   ed<   dZee	j                     ed<   dZee	j                     ed<   e	j                  ed<   eed<   eed<   eed	<   eed
<   eed<   eed<   eed<    ed¬«      dd„«       Zy)ÚAnalyzeRequestuL   Same as ScenarioCreate but name is optional â€” used for ephemeral analysis.Nr   r   r   r   r   r   r   r   r   r   r   r   r   c                 ó’   — | j                   €| j                  €t        d«      ‚| j                   �| j                  �t        d«      ‚| S r!   r"   r$   s    r&   r'   z#AnalyzeRequest.check_plant_or_graft1   r(   r)   )r*   r6   )r+   r,   r-   Ú__doc__r   r   r.   r/   r   r0   r1   r   r2   r   r3   r   r
   r'   r4   r)   r&   r6   r6   #   s„   … ÙVØ€Dˆ(�3‰-ÓØ04Ð˜( 4§9¡9Ñ-Ó4Ø$(€Hˆh�t—y‘yÑ!Ó(Ø—Y‘YÓØÓØÓØÓØ'Ó'Ø"Ó"ØƒNØÓá˜'Ô"òó #ñr)   r6   c                   óÚ   — e Zd ZU ej                  ed<   ej                  ed<   ee   ed<   ee   ed<   ee	   ed<   e
ee	f   ed<   ee	   ed<   ee   ed<   ee   ed	<   eed
<    ed¬«      Zy)ÚScenarioResultResponseÚidÚscenario_idÚpredicted_yieldÚsurvival_probabilityÚrisk_factorsÚrecommended_adjustmentsÚgrowth_timelineÚconfidence_scoreÚai_analysisÚ
created_atT©Úfrom_attributesN)r+   r,   r-   r0   r1   r/   r   r2   r   r   r   r.   r   r	   Úmodel_configr4   r)   r&   r:   r:   :   so   … Ø�	‰	ƒMØ—‘ÓØ˜e‘_Ó$Ø" 5™/Ó)Ø�s‘)ÓØ! # s (™^Ó+Ø˜#‘YÓØ˜u‘oÓ%Ø˜#‘ÓØÓá¨dÔ3�Lr)   r:   c                   óN  — e Zd ZU ej                  ed<   eed<   eej                     ed<   eej                     ed<   ej                  ed<   eed<   eed<   eed<   e	ed	<   e
ed
<   eed<   e
ed<   eed<   eed<   eed<   dZee   ed<   dZee   ed<   dZee   ed<    ed¬«      Zy)ÚScenarioResponser;   r   r   r   r   r   r   r   r   r   r   r   rD   Ú
updated_atÚsoil_profileNÚgraft_combinationÚplantÚresultsTrE   )r+   r,   r-   r0   r1   r/   r.   r   r2   r   r3   r   r   r   rL   r   rM   r   rN   r:   r	   rG   r4   r)   r&   rI   rI   I   s­   … Ø�	‰	ƒMØ
ƒIØ" 4§9¡9Ñ-Ó-Ø�t—y‘yÑ!Ó!Ø—Y‘YÓØÓØÓØÓØ'Ó'Ø"Ó"ØƒNØÓØÓØÓØ%Ó%Ø<@Ð�xÐ 8Ñ9Ó@Ø%)€Eˆ8�MÑ"Ó)Ø04€GˆXÐ,Ñ-Ó4á¨dÔ3�Lr)   rI   c                   ó¦   — e Zd ZU dZej
                  ed<   eed<   eed<   e	ed<   e
ed<   dZee   ed<   dZee   ed	<   dZee   ed
<    ed¬«      Zy)ÚScenarioSummaryu>   Lightweight version for list views â€” no full nested objects.r;   r   r   r   rD   Nr=   r>   rB   TrE   )r+   r,   r-   r8   r0   r1   r/   r.   r   r3   r   r=   r   r2   r>   rB   r	   rG   r4   r)   r&   rP   rP   `   sZ   … ÙHØ�	‰	ƒMØ
ƒIØƒNØÓØÓØ'+€O�X˜e‘_Ó+Ø,0Ð˜( 5™/Ó0Ø(,Ð�h˜u‘oÓ,á¨dÔ3�Lr)   rP   )r0   r   Útypingr   r   r   r   Úpydanticr   r	   r
   Úapp.models.scenarior   r   Úapp.schemas.graft_combinationr   Úapp.schemas.plantr   Úapp.schemas.soil_profiler   r   r6   r:   rI   rP   r4   r)   r&   ú<module>rW      s_   ðÛ Ý ß ,Ó ,ç ;Ñ ;ç 8Ý BÝ +Ý 8ô�Yô ô,�Yô ô.4˜Yô 4ô4�yô 4ô.4�iõ 4r)   