§
    ÔŸ’jè	  ã                  óÒ   — d dl mZ d dlmZ d dlmZ d dlmZ d dl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dS )é    )Úannotations)Údatetime)ÚDecimal)ÚAny)Ú	BaseModelÚFieldc                  óx   — e Zd ZU dZdZded<   dZded<   dZded<   ded	<   ded
<   ded<   dZded<   dZ	ded<   dS )ÚGroundTruthRowuN   Báº£n ghi Ä‘á»‘i chá»©ng chuáº©n tá»« file dá»± toÃ¡n Ká»¹ sÆ° (Ground Truth).Ú ÚstrÚsttNú
str | NoneÚdrawing_symbolÚ	norm_codeÚ	task_nameÚunitr   ÚquantityÚformula_breakdownÚnotes)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r   r   r   r   © ó    úMC:\Projects\DSCons\app\modules\takeoff\application\takeoff_training\models.pyr
   r
   
   sˆ   € € € € € € ØXÐXà€C€M€M€M�MØ!%€NÐ%Ð%Ð%Ñ%Ø €IÐ Ð Ð Ñ Ø€N€N�NØ€I€I�IØÐÐÑØ$(ÐÐ(Ð(Ð(Ñ(Ø€EÐÐÐÑÐÐr   r
   c                  óŒ   — e Zd ZU dZded<   dZded<   ded<   ded	<   ded
<   ded<   dZded<   dZded<   dZded<   dZ	ded<   dS )ÚTakeoffItemEvaluationuO   Ä�Ã¡nh giÃ¡ chi tiáº¿t tá»«ng dÃ²ng bÃ³c tÃ¡ch so vá»›i chuáº©n Ä‘á»‘i chá»©ng.r   r   Nr   r   r   r   Úexpected_quantityÚactual_quantityÚdeviation_pctFÚboolÚformula_presentr   ÚEXACT_MATCHÚmatch_statusÚerror_cause)
r   r   r   r   r   r   r$   r   r&   r'   r   r   r   r   r      s±   € € € € € € ØYÐYà€N€N�NØ €IÐ Ð Ð Ñ Ø€I€I�IØÐÐÑØÐÐÑØÐÐÑØ!€OÐ!Ð!Ð!Ñ!Ø$(ÐÐ(Ð(Ð(Ñ(àð ð ð ð ñ ð #€KÐ"Ð"Ð"Ñ"Ð"Ð"r   r   c                  ó€  — e Zd ZU dZded<   ded<   ded<   dZded<   dZded	<    e ed
¦  «        ¬¦  «        Z	ded<    e ed
¦  «        ¬¦  «        Z
ded<    e ed
¦  «        ¬¦  «        Zded<    e ed
¦  «        ¬¦  «        Zded<   dZded<   dZded<    ee¬¦  «        Zded<    ed„ ¬¦  «        Zded<   dS )ÚQSDrillScorecarduP   Báº£ng Ä‘iá»ƒm nÄƒng lá»±c bÃ³c tÃ¡ch BoQ cá»§a AI Quá»³nh cho má»™t bÃ i táº­p.r   Údrill_idÚproject_nameÚproject_coder   ÚintÚtotal_ground_truth_itemsÚmatched_itemsz0.0©Údefaultr   Úrecall_rate_pctÚprecision_rate_pctÚvolume_mae_pctÚformula_coverage_pctÚAÚoverall_gradeFr#   Úis_production_ready©Údefault_factoryzlist[TakeoffItemEvaluation]Úevaluated_itemsc                 óL   — t          j        ¦   «                              ¦   «         S )N)r   ÚnowÚ	isoformatr   r   r   ú<lambda>zQSDrillScorecard.<lambda>7   s   € µh´l±n´n×6NÒ6NÑ6PÔ6P€ r   Úevaluated_atN)r   r   r   r   r   r.   r/   r   r   r2   r3   r4   r5   r7   r8   Úlistr;   r@   r   r   r   r)   r)   (   sY  € € € € € € ØZÐZà€M€M�MØÐÐÑØÐÐÑØ$%ÐÐ%Ð%Ð%Ñ%Ø€MÐÐÐÑØ$˜u¨W¨W°U©^¬^Ð<Ñ<Ô<€OÐ<Ð<Ð<Ñ<Ø"' %°°¸±´Ð"?Ñ"?Ô"?ÐÐ?Ð?Ð?Ñ?Ø#˜e¨G¨G°E©N¬NÐ;Ñ;Ô;€NÐ;Ð;Ð;Ñ;Ø$) E°'°'¸%±.´.Ð$AÑ$AÔ$AÐÐAÐAÐAÑAØ€MÐÐÐÑØ %ÐÐ%Ð%Ð%Ñ%Ø38°5ÈÐ3NÑ3NÔ3N€OÐNÐNÐNÑNØ˜Ð.PÐ.PÐQÑQÔQ€LÐQÐQÐQÑQÐQÐQr   r)   c                  ób   — e Zd ZU dZded<   ded<   ded<    ee¬¦  «        Zd	ed
<   dZded<   dS )ÚTrainingEpochResultu8   Káº¿t quáº£ má»™t vÃ²ng láº·p huáº¥n luyá»‡n tá»± trá»‹.r-   Úepochr   r*   r)   Ú	scorecardr9   zlist[dict[str, Any]]Úsynthesized_rulesr   Úimprovement_notesN)	r   r   r   r   r   r   rA   rF   rG   r   r   r   rC   rC   :   sg   € € € € € € ØBÐBà€J€J�JØ€M€M�MØÐÐÑØ.3¨eÀDÐ.IÑ.IÔ.IÐÐIÐIÐIÑIØÐÐÐÐÑÐÐr   rC   c                  ó’   — e Zd ZU dZded<   ded<   ded<   ded<   ded<   dZded	<   ded
<    e ed¦  «        ¬¦  «        Zded<   dS )ÚQSDrillDefinitionu;   Ä�á»‹nh nghÄ©a bÃ i táº­p kiá»ƒm chuáº©n tá»« kho HÄ�-2026.r   r*   r+   r,   Údrawing_pathÚground_truth_excel_pathÚCIVIL_BUILDINGÚdomain_typeÚdescriptionz95.0r0   r   Útarget_accuracy_pctN)	r   r   r   r   r   rM   r   r   rO   r   r   r   rI   rI   D   s¢   € € € € € € ØEÐEà€M€M�MØÐÐÑØÐÐÑØÐÐÑØ Ð Ð Ñ àð ð ð ð ñ ð ÐÐÑØ#( 5°°¸±´Ð#AÑ#AÔ#AÐÐAÐAÐAÑAÐAÐAr   rI   N)Ú
__future__r   r   Údecimalr   Útypingr   Úpydanticr   r   r
   r   r)   rC   rI   r   r   r   ú<module>rT      sS  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ð %Ð %ð
ð 
ð 
ð 
ð 
�Yñ 
ô 
ð 
ð#ð #ð #ð #ð #˜Iñ #ô #ð #ð"Rð Rð Rð Rð R�yñ Rô Rð Rð$ ð  ð  ð  ð  ˜)ñ  ô  ð  ðBð Bð Bð Bð B˜	ñ Bô Bð Bð Bð Br   