§
    ¾ì¿j3  ã                  óÔ   — d Z ddlmZ ddlZddlmZ ddlmZmZ ddl	m
Z
 ddlmZ ddlmZmZmZ  ej        e¦  «        Z ed	¦  «        Zed
z  Zedz  Zedz  Z G d„ d¦  «        ZdS )z·
Inverse-BIM & Tri-Source Truth Grounding Mixin for DrawingTakeoffService.
Provides high-level orchestration methods for parametric constraint solving
and 3-way truth reconciliation.
é    )ÚannotationsN)ÚPath)ÚAnyÚOptional)ÚInverseBimConstraintSolver)ÚTriSourceTruthGrounding)ÚInverseBimParametricModelÚSolidTakeoffQuantitiesÚTriSourceAuditReportuQ   CongTrinh/HÄ�-2026/Kiáº¿n Minh-2026/Há»‡ thá»‘ng cá»‘ng há»™p kÃªnh báº¿n Kem. okz7BV + DT MUONG THOAT ben kem/02. Thiet ke dong khung.dxfu:   Ä�áº¥u Tháº§u/File_IB2600072041/Báº£n váº½/03. kc cong.pdfu9   Tháº©m Ä‘á»‹nh/cá»‘ng há»™p báº¿n kem.21.02.2026.TÄ�.xlsxc                  óD   ‡ — e Zd ZdZdˆ fd„Z	 ddd„Z	 	 	 	 	 ddd„Zˆ xZS )ÚDrawingInverseBimMixinzEMixin adding Inverse-BIM and Tri-Source Truth Grounding capabilities.Úargsr   ÚkwargsÚreturnÚNonec                ó†   •—  t          ¦   «         j        |i |¤Ž t          ¦   «         | _        t	          ¦   «         | _        d S ©N)ÚsuperÚ__init__r   Ú_inverse_bim_solverr   Ú_tri_source_engine)Úselfr   r   Ú	__class__s      €úGC:\Projects\DSCons\app\modules\takeoff\application\inverse_bim_mixin.pyr   zDrawingInverseBimMixin.__init__*   sA   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ý#=Ñ#?Ô#?ˆÔ Ý"9Ñ";Ô";ˆÔÐÐó    NÚ
cad_sourceústr | Path | Noneúdict[str, Any]c                ó@  — t          | dd¦  «        pt          ¦   «         }|rt          |¦  «        nt          }|                     ¦   «         st
          } |j        |fi |¤Ž}|                     |¦  «        }d|                     ¦   «         |                     ¦   «         dœS )zGExtract parametric constraints and compute deterministic solid volumes.r   NÚsuccess)ÚstatusÚparametric_modelÚsolids)	Úgetattrr   r   ÚDEFAULT_DXFÚexistsÚDEFAULT_KC_PDFÚextract_parametric_constraintsÚcompute_deterministic_solidsÚ
model_dump)r   r   r   ÚsolverÚsrcÚmodelr#   s          r   Úsolve_inverse_bim_constraintsz4DrawingInverseBimMixin.solve_inverse_bim_constraints/   s¯   € õ ˜Ð4°dÑ;Ô;Ð[Õ?YÑ?[Ô?[ˆØ",Ð=�d�:ÑÔÐµ+ˆØ�zŠz‰|Œ|ð 	!Ý ˆCà+P¨6Ô+PÐQTÐ+_Ð+_ÐX^Ð+_Ð+_ˆØ)/×)LÒ)LÈUÑ)SÔ)Sˆð  Ø %× 0Ò 0Ñ 2Ô 2Ø×'Ò'Ñ)Ô)ð
ð 
ð 	
r   õF   XÃ‚Y Dá»°NG Há»† THá»�NG Cá»�NG Há»˜P KÃŠNH Báº¾N KEM, XÃƒ KIáº¾N MINHõ*   GÃ³i tháº§u sá»‘ 6: GÃ³i tháº§u xÃ¢y láº¯pÚ
bbs_sourceÚhsmt_sourceÚproject_nameÚstrÚpackage_namer   c                ó$  — t          | dd¦  «        pt          ¦   «         }t          | dd¦  «        pt          ¦   «         }|rt          |¦  «        nt          }|                     ¦   «         st          }|rt          |¦  «        nt          }	|rt          |¦  «        nt          }
|                     |¦  «        }| 	                    |¦  «        }| 
                    |	¦  «        }|                     |
¦  «        }|                     |||||¬¦  «        }|S )z]Execute end-to-end 3-way cross-audit between CAD geometry, BBS schedule, and HSMT tender BoQ.r   Nr   )r#   Ú	bbs_itemsÚ
hsmt_itemsr3   r5   )r$   r   r   r   r%   r&   r'   ÚDEFAULT_HSMT_XLSXr(   r)   Úextract_bbs_scheduleÚextract_hsmt_tender_itemsÚreconcile_tri_source)r   r   r1   r2   r3   r5   r+   ÚengineÚcad_pathÚbbs_pathÚ	hsmt_pathr-   r#   r7   r8   Úreports                   r   Úrun_tri_source_reconciliationz4DrawingInverseBimMixin.run_tri_source_reconciliationC   s!  € õ ˜Ð4°dÑ;Ô;Ð[Õ?YÑ?[Ô?[ˆÝ˜Ð3°TÑ:Ô:ÐWÕ>UÑ>WÔ>Wˆà'1ÐB•4˜
Ñ#Ô#Ð#µ{ˆØ�ŠÑ Ô ð 	&Ý%ˆHà'1ÐE•4˜
Ñ#Ô#Ð#µ~ˆØ)4ÐK•D˜Ñ%Ô%Ð%Õ:Kˆ	ð ×5Ò5°hÑ?Ô?ˆØ×4Ò4°UÑ;Ô;ˆð ×/Ò/°Ñ9Ô9ˆ	ð ×5Ò5°iÑ@Ô@ˆ
ð ×,Ò,ØØØ!Ø%Ø%ð -ñ 
ô 
ˆð ˆr   )r   r   r   r   r   r   r   )r   r   r   r   r   r   )NNNr/   r0   )r   r   r1   r   r2   r   r3   r4   r5   r4   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r.   rB   Ú__classcell__)r   s   @r   r   r   '   s‹   ø€ € € € € ØOÐOð<ð <ð <ð <ð <ð <ð )-ð
ð 
ð 
ð 
ð 
ð, )-Ø(,Ø)-ØdØHð&ð &ð &ð &ð &ð &ð &ð &ð &r   r   )rF   Ú
__future__r   ÚloggingÚpathlibr   Útypingr   r   Ú=app.modules.takeoff.application.inverse_bim_constraint_solverr   Ú:app.modules.takeoff.application.tri_source_truth_groundingr   Ú-app.modules.takeoff.domain.inverse_bim_modelsr	   r
   r   Ú	getLoggerrC   ÚloggerÚBEN_KEM_BASE_DIRr%   r'   r9   r   © r   r   ú<module>rS      sT  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð 
ˆÔ	˜8Ñ	$Ô	$€à�4ØWñô Ð ð Ð!ZÑZ€àÐSÑSð ð ÐRÑRð ð
Bð Bð Bð Bð Bñ Bô Bð Bð Bð Br   