§
    Ïô¿j   ã                  ó  — d 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 G d„ de¦  «        Z G d„ de¦  «        ZdS )z¼
Domain Entities and Value Objects for Inverse-BIM Constraint Solver
and Tri-Source Truth Grounding (Reconciliation Engine).
Strict Hexagonal Architecture & Zero-Tolerance Synthetic Data.
é    )Úannotations)Údatetime)ÚDecimal)Ú	BaseModelÚFieldc                  óf  — e Zd ZU dZ e ed¦  «        d¬¦  «        Zded<    e ed¦  «        d¬¦  «        Zded<    e ed	¦  «        d
¬¦  «        Z	ded<    e ed¦  «        d¬¦  «        Z
ded<    e ed¦  «        d¬¦  «        Zded<    e ed¦  «        d¬¦  «        Zded<    e ed¦  «        d¬¦  «        Zded<    e ed¦  «        d¬¦  «        Zded<    e ed¦  «        d¬¦  «        Zded<    e ed¦  «        d¬¦  «        Zded<    e ed¦  «        d¬¦  «        Zded <   d!S )"ÚCulvertCrossSectionzJParametric cross-section constraints of a reinforced concrete box culvert.z2.5000u!   Kháº©u Ä‘á»™ thoÃ¡t nÆ°á»›c B (m)©ÚdefaultÚdescriptionr   Úclear_span_mu   Chiá»�u cao thÃ´ng thá»§y H (m)Úclear_height_mz0.3000u    Chiá»�u dÃ y thÃ nh cá»‘ng t (m)Úwall_thickness_mz0.2500u   Chiá»�u dÃ y báº£n Ä‘Ã¡y (m)Úbottom_slab_thickness_mu!   Chiá»�u dÃ y báº£n máº·t mÃ¡i (m)Útop_slab_thickness_mz3.4000u(   Bá»� rá»™ng Ä‘Ã¡y mÃ³ng cá»‘ng B_day (m)Úbottom_slab_width_mz0.1000u   Chiá»�u dÃ y bÃª tÃ´ng lÃ³t (m)Úlean_concrete_thickness_mu   Bá»� rá»™ng bÃª tÃ´ng lÃ³t (m)Úlean_concrete_width_mz25.0000u    Máº­t Ä‘á»™ cá»�c tre (cá»�c/m2)Úbamboo_pile_density_per_m2u   Chiá»�u dÃ i cá»�c tre (m)Úbamboo_pile_length_mz0.1500u$   KÃ­ch thÆ°á»›c vÃ¡t nÃ¡ch/haunch (m)Úhaunch_size_mN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Ú__annotations__r   r   r   r   r   r   r   r   r   r   © ó    úCC:\Projects\DSCons\app\modules\takeoff\domain\inverse_bim_models.pyr	   r	      sù  € € € € € € ØTÐTØ!˜E¨'¨'°(Ñ*;Ô*;ÐIlÐmÑmÔm€LÐmÐmÐmÑmØ#˜e¨G¨G°HÑ,=Ô,=ÐKlÐmÑmÔm€NÐmÐmÐmÑmØ % ¨g¨g°hÑ.?Ô.?ÐMoÐ pÑ pÔ pÐÐpÐpÐpÑpØ', u°W°W¸XÑ5FÔ5FÐTrÐ'sÑ'sÔ'sÐÐsÐsÐsÑsØ$) E°'°'¸(Ñ2CÔ2CÐQtÐ$uÑ$uÔ$uÐÐuÐuÐuÑuØ#( 5°°¸Ñ1BÔ1BÐPzÐ#{Ñ#{Ô#{ÐÐ{Ð{Ð{Ñ{Ø).¨°w°w¸xÑ7HÔ7HÐVwÐ)xÑ)xÔ)xÐÐxÐxÐxÑxØ%* U°7°7¸8Ñ3DÔ3DÐRrÐ%sÑ%sÔ%sÐÐsÐsÐsÑsØ*/¨%¸¸À	Ñ8JÔ8JÐXzÐ*{Ñ*{Ô*{ÐÐ{Ð{Ð{Ñ{Ø$) E°'°'¸(Ñ2CÔ2CÐQmÐ$nÑ$nÔ$nÐÐnÐnÐnÑnØ"˜U¨7¨7°8Ñ+<Ô+<ÐJpÐqÑqÔq€MÐqÐqÐqÑqÐqÐqr   r	   c                  ó<   — e Zd ZU dZded<   ded<   ded<   ded	<   d
S )ÚCulvertSegmentModelz8Parametric model for an individual construction segment.ÚintÚ
segment_idÚstrÚsegment_namer   Úlength_mr	   Úcross_sectionN)r   r   r   r   r   r   r   r   r!   r!      sE   € € € € € € ØBÐBØ€O€O�OØÐÐÑØÐÐÑØ&Ð&Ð&Ñ&Ð&Ð&r   r!   c                  ór  — e Zd ZU dZ edd¬¦  «        Zded<    edd¬	¦  «        Zded
<    edd¬	¦  «        Zded<    edd¬¦  «        Z	ded<    ee
¬¦  «        Zded<    ed¬¦  «        Zded<    ed¬¦  «        Zded<    e ed¦  «        ¬¦  «        Zded<    e ed¦  «        ¬¦  «        Zded<   dS ) ÚInverseBimParametricModelzKInverse-BIM Parametric Constraint Model for civil and hydraulic structures.Úbox_culvertu2   Loáº¡i káº¿t cáº¥u: box_culvert, revetment, bridger
   r$   Ústructure_type.u   TÃªn cÃ´ng trÃ¬nh/háº¡ng má»¥c©r   Ústructure_nameu$   Tá»•ng chiá»�u dÃ i cÃ´ng trÃ¬nh (m)r   Útotal_length_mé   u   Sá»‘ phÃ¢n Ä‘oáº¡n thi cÃ´ngr"   Únum_segments©Údefault_factoryzlist[CulvertSegmentModel]ÚsegmentsT©r   ÚboolÚhas_inlet_outlet_wingsé   Úinlet_outlet_wings_countz12.0000Úcofferdam_larsen_pile_length_mz96.0800Úcofferdam_sheet_perimeter_mN)r   r   r   r   r   r+   r   r-   r.   r0   Úlistr3   r6   r8   r   r9   r:   r   r   r   r)   r)   &   sJ  € € € € € € ØUÐUØ˜%¨ÐCwÐxÑxÔx€NÐxÐxÐxÑxØ˜% Ð1QÐRÑRÔR€NÐRÐRÐRÑRØ#˜e CÐ5[Ð\Ñ\Ô\€NÐ\Ð\Ð\Ñ\Ø˜ aÐ5SÐTÑTÔT€LÐTÐTÐTÑTØ*/¨%ÀÐ*EÑ*EÔ*E€HÐEÐEÐEÑEØ#( 5°Ð#6Ñ#6Ô#6ÐÐ6Ð6Ð6Ñ6Ø$) E°!Ð$4Ñ$4Ô$4ÐÐ4Ð4Ð4Ñ4Ø.3¨e¸G¸GÀIÑ<NÔ<NÐ.OÑ.OÔ.OÐ"ÐOÐOÐOÑOØ+0¨5¸¸ÀÑ9KÔ9KÐ+LÑ+LÔ+LÐÐLÐLÐLÑLÐLÐLr   r)   c                  ó²  — e Zd ZU dZ e ed¦  «        ¬¦  «        Zded<    e ed¦  «        ¬¦  «        Zded<    e ed¦  «        ¬¦  «        Z	ded<    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<    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<    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<    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<    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<    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!<    e ed¦  «        ¬¦  «        Z"ded"<   d#S )$ÚSolidTakeoffQuantitieszNDeterministic solid geometry quantities computed from Inverse-BIM constraints.ú0.0000r4   r   Úlean_concrete_volume_m3Úbottom_slab_concrete_volume_m3Úbamboo_piles_total_100mr   r"   Úbamboo_piles_countÚlean_concrete_formwork_100m2Úbottom_slab_formwork_100m2Úsand_cushion_volume_m3Úwall_concrete_volume_m3Úwall_formwork_100m2Útop_slab_concrete_volume_m3Útop_slab_formwork_100m2Úwaterstop_m2Úwing_bamboo_piles_100mÚwing_lean_concrete_m3Úwing_bottom_slab_concrete_m3Úwing_wall_concrete_m3Úwing_formwork_100m2Úslush_mud_suction_m3Úfoundation_excavation_100m3Úmass_excavation_100m3Úsoil_haul_100m3Úsoil_backfill_100m3Úmountain_soil_material_m3Úlarsen_pile_driving_100mÚlarsen_pile_rental_mÚwater_pumping_shiftsÚground_mat_segmentsÚgeotextile_100m2N)#r   r   r   r   r   r   r?   r   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r   r   r   r=   r=   3   sŽ  € € € € € € ØXÐXà', u°W°W¸XÑ5FÔ5FÐ'GÑ'GÔ'GÐÐGÐGÐGÑGØ.3¨e¸G¸GÀHÑ<MÔ<MÐ.NÑ.NÔ.NÐ"ÐNÐNÐNÑNØ', u°W°W¸XÑ5FÔ5FÐ'GÑ'GÔ'GÐÐGÐGÐGÑGØ#˜e¨AÐ.Ñ.Ô.ÐÐ.Ð.Ð.Ñ.Ø,1¨E¸'¸'À(Ñ:KÔ:KÐ,LÑ,LÔ,LÐ ÐLÐLÐLÑLØ*/¨%¸¸ÀÑ8IÔ8IÐ*JÑ*JÔ*JÐÐJÐJÐJÑJØ&+ e°G°G¸HÑ4EÔ4EÐ&FÑ&FÔ&FÐÐFÐFÐFÑFð (- u°W°W¸XÑ5FÔ5FÐ'GÑ'GÔ'GÐÐGÐGÐGÑGØ#( 5°°¸Ñ1BÔ1BÐ#CÑ#CÔ#CÐÐCÐCÐCÑCØ+0¨5¸¸ÀÑ9JÔ9JÐ+KÑ+KÔ+KÐÐKÐKÐKÑKØ', u°W°W¸XÑ5FÔ5FÐ'GÑ'GÔ'GÐÐGÐGÐGÑGØ!˜E¨'¨'°(Ñ*;Ô*;Ð<Ñ<Ô<€LÐ<Ð<Ð<Ñ<ð ', e°G°G¸HÑ4EÔ4EÐ&FÑ&FÔ&FÐÐFÐFÐFÑFØ%* U°7°7¸8Ñ3DÔ3DÐ%EÑ%EÔ%EÐÐEÐEÐEÑEØ,1¨E¸'¸'À(Ñ:KÔ:KÐ,LÑ,LÔ,LÐ ÐLÐLÐLÑLØ%* U°7°7¸8Ñ3DÔ3DÐ%EÑ%EÔ%EÐÐEÐEÐEÑEØ#( 5°°¸Ñ1BÔ1BÐ#CÑ#CÔ#CÐÐCÐCÐCÑCð %* E°'°'¸(Ñ2CÔ2CÐ$DÑ$DÔ$DÐÐDÐDÐDÑDØ+0¨5¸¸ÀÑ9JÔ9JÐ+KÑ+KÔ+KÐÐKÐKÐKÑKØ%* U°7°7¸8Ñ3DÔ3DÐ%EÑ%EÔ%EÐÐEÐEÐEÑEØ$˜u¨W¨W°XÑ->Ô->Ð?Ñ?Ô?€OÐ?Ð?Ð?Ñ?Ø#( 5°°¸Ñ1BÔ1BÐ#CÑ#CÔ#CÐÐCÐCÐCÑCØ).¨°w°w¸xÑ7HÔ7HÐ)IÑ)IÔ)IÐÐIÐIÐIÑIØ(-¨°g°g¸hÑ6GÔ6GÐ(HÑ(HÔ(HÐÐHÐHÐHÑHØ$) E°'°'¸(Ñ2CÔ2CÐ$DÑ$DÔ$DÐÐDÐDÐDÑDØ$) E°'°'¸(Ñ2CÔ2CÐ$DÑ$DÔ$DÐÐDÐDÐDÑDØ#( 5°°¸Ñ1BÔ1BÐ#CÑ#CÔ#CÐÐCÐCÐCÑCØ % ¨g¨g°hÑ.?Ô.?Ð @Ñ @Ô @ÐÐ@Ð@Ð@Ñ@Ð@Ð@r   r=   c                  ód  — e Zd ZU dZ edd¬¦  «        Zded<    edd¬¦  «        Zded<    edd	¬¦  «        Zd
ed<    edd¬¦  «        Z	ded<    ed¦  «        Z
d
ed<    ed¦  «        Zd
ed<    ed¦  «        Zded<    ed¦  «        Zded<    ed¦  «        Zded<    ed¦  «        Zded<   dS )ÚBbsRebarScheduleItemz;Bar Bending Schedule (BBS) structural rebar schedule entry..uD   Cáº¥u kiá»‡n: Ä�Ã¡y cá»‘ng, ThÃ nh cá»‘ng, Báº£n máº·t, Cá»­a cá»‘ngr,   r$   Úcomponent_nameu#   Sá»‘ hiá»‡u thanh thÃ©p: 1, 2, 3...Úbar_marku   Ä�Æ°á»�ng kÃ­nh (mm)r"   Údiameter_mmu   Chiá»�u dÃ i 1 thanh (mm)r   Úlength_per_bar_mmÚcount_per_componentÚtotal_bars_countr.   Úunit_weight_kg_per_mÚtotal_weight_kgÚtotal_weight_tonN)r   r   r   r   r   r]   r   r^   r_   r`   ra   rb   r.   rc   rd   re   r   r   r   r\   r\   Z   s7  € € € € € € ØEÐEØ˜% Ð1wÐxÑxÔx€NÐxÐxÐxÑxØ�E˜#Ð+PÐQÑQÔQ€HÐQÐQÐQÑQØ�u˜SÐ.DÐEÑEÔE€KÐEÐEÐEÑEØ!&  sÐ8SÐ!TÑ!TÔ!TÐÐTÐTÐTÑTØ$˜u S™zœzÐÐ)Ð)Ð)Ñ)Ø!˜E #™JœJÐÐ&Ð&Ð&Ñ&Ø#˜e C™jœj€NÐ(Ð(Ð(Ñ(Ø$) E¨#¡J¤JÐÐ.Ð.Ð.Ñ.Ø$˜u S™zœz€OÐ)Ð)Ð)Ñ)Ø %  c¡
¤
ÐÐ*Ð*Ð*Ñ*Ð*Ð*r   r\   c                  ón  — 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	Zd
ed<   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<    edd¬¦  «        Zded<   dZded<   d	S )ÚReconciliationItemz=Single work item cross-audit entry across 3 sources of truth.r"   Ú
item_orderr$   Úwbs_codeÚ	norm_codeÚ	item_nameÚunitNzDecimal | NoneÚsource_cad_geometry_qtyÚsource_bbs_rebar_qtyr   Úsource_hsmt_tender_qtyr>   r4   Úunit_price_vndÚtotal_amount_vndÚvariance_deltaÚvariance_percentagezMATCHED_100%z1MATCHED_100%, DISCREPANCY_FLAGGED, REFERENCE_ONLYr
   ÚstatusÚ Úreconciliation_note)r   r   r   r   r   rm   rn   r   r   rp   rq   rr   rs   rt   rv   r   r   r   rg   rg   h   sJ  € € € € € € ØGÐGØ€O€O�OØ€M€M�MØ€N€N�NØ€N€N�NØ€I€I�IØ.2ÐÐ2Ð2Ð2Ñ2Ø+/ÐÐ/Ð/Ð/Ñ/Ø#Ð#Ð#Ñ#Ø#˜e¨G¨G°HÑ,=Ô,=Ð>Ñ>Ô>€NÐ>Ð>Ð>Ñ>Ø % ¨g¨g°hÑ.?Ô.?Ð @Ñ @Ô @ÐÐ@Ð@Ð@Ñ@Ø#˜e¨G¨G°HÑ,=Ô,=Ð>Ñ>Ô>€NÐ>Ð>Ð>Ñ>Ø#( 5°°¸Ñ1BÔ1BÐ#CÑ#CÔ#CÐÐCÐCÐCÑCØ�% Ð<oÐpÑpÔp€FÐpÐpÐpÑpØ!ÐÐ!Ð!Ð!Ñ!Ð!Ð!r   rg   c                  ó  — e Zd ZU dZded<   ded<   dZded<   dZded<   d	Zded
<    ee	j
        ¬¦  «        Zded<   ded<   ded<   ded<   dZded<   dZded<   ded<   ded<    ee¬¦  «        Zded<   dZded<    ee¬¦  «        Zded<   dS ) ÚTriSourceAuditReportzETri-Source Truth Grounding Comprehensive Reconciliation Audit Report.r$   Úproject_nameÚpackage_nameÚ
0202111150Úcontractor_tax_idu&   CÃ´ng ty TNHH XÃ¢y Dá»±ng Ä�á»‹nh SÆ¡nÚcontractor_nameu;   Luáº­t XÃ¢y dá»±ng 2025, Ä�á»‹nh má»©c 2026, TT38/TT11/TT14Úlegal_basisr1   r   Úaudit_timestampr"   Útotal_items_auditedÚmatched_items_countÚdiscrepancy_items_countéd   Úoverall_confidence_scoreÚtri_source_grounded_100Úconfidence_levelr   Útotal_direct_cost_vndÚtotal_construction_bid_vndzlist[ReconciliationItem]Úreconciliation_itemsru   Úexecutive_summaryz	list[str]Úaudit_notesN)r   r   r   r   r   r|   r}   r~   r   r   Úutcnowr   r„   r†   r;   r‰   rŠ   r‹   r   r   r   rx   rx   z   s3  € € € € € € ØOÐOØÐÐÑØÐÐÑØ)ÐÐ)Ð)Ð)Ñ)ØC€OÐCÐCÐCÑCØT€KÐTÐTÐTÑTØ % °h´oÐ FÑ FÔ F€OÐFÐFÐFÑFØÐÐÑØÐÐÑØ Ð Ð Ñ Ø$'ÐÐ'Ð'Ð'Ñ'Ø5ÐÐ5Ð5Ð5Ñ5Ø"Ð"Ð"Ñ"Ø'Ð'Ð'Ñ'Ø5:°UÈ4Ð5PÑ5PÔ5PÐÐPÐPÐPÑPØÐÐÐÐÑØ"˜U°4Ð8Ñ8Ô8€KÐ8Ð8Ð8Ñ8Ð8Ð8r   rx   N)r   Ú
__future__r   r   Údecimalr   Úpydanticr   r   r	   r!   r)   r=   r\   rg   rx   r   r   r   ú<module>r�      s¨  ððð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ð %Ð %ðrð rð rð rð r˜)ñ rô rð rð'ð 'ð 'ð 'ð '˜)ñ 'ô 'ð 'ð
Mð 
Mð 
Mð 
Mð 
M 	ñ 
Mô 
Mð 
Mð$Að $Að $Að $Að $A˜Yñ $Aô $Að $AðN+ð +ð +ð +ð +˜9ñ +ô +ð +ð"ð "ð "ð "ð "˜ñ "ô "ð "ð$9ð 9ð 9ð 9ð 9˜9ñ 9ô 9ð 9ð 9ð 9r   