§
    y�’j§  ã                  óš   — 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	m
Z
 ddlmZmZmZ d$d„Zd%d„Zd&d„Zd'd„Zd(d„Zd)d„Zd*d!„Zd+d#„ZdS ),é    )ÚannotationsN)ÚPathé   )ÚROOT_DIRÚTOP_LEVEL_CATEGORY_RULES)Únormalize_keyÚnormalize_relative_path)ÚDocumentTypeRuleÚProjectCandidateÚProjectDocumentÚnameÚstrÚreturnc                ó„   — t          | ¦  «        }t          j        ¦   «         D ]\  }}t          |¦  «        |k    r|c S ŒdS )NÚunknown_mixed)r   r   Úitems)r   Ú
normalizedÚrawÚcategorys       ú;C:\Projects\DSCons\tools\hd2026_ingest_support\discovery.pyÚclassify_top_level_entryr      sQ   € Ý˜tÑ$Ô$€JÝ1Ô7Ñ9Ô9ð ð ‰ˆˆXÝ˜ÑÔ Ò+Ð+ØˆOˆOˆOð ,àˆ?ó    Úroot_dirr   úlist[dict[str, object]]c                ó  — g }t          |                      ¦   «         d„ ¬¦  «        D ]c}|j                             d¦  «        rŒ|                     |j        |                     ¦   «         rdndt          |j        ¦  «        dœ¦  «         Œd|S )Nc                ó   — | j         S )N)r   )Úitems    r   ú<lambda>z+collect_top_level_summary.<locals>.<lambda>   s   € ¸T¼Y€ r   )Úkeyú.Ú	directoryÚfile)Ú
entry_nameÚ
entry_typer   )ÚsortedÚiterdirr   Ú
startswithÚappendÚis_dirr   )r   ÚrowsÚentrys      r   Úcollect_top_level_summaryr,      s    € Ø$&€DÝ˜×(Ò(Ñ*Ô*Ð0FÐ0FÐGÑGÔGð 	
ð 	
ˆØŒ:× Ò  Ñ%Ô%ð 	ØØ�Šà#œjØ-2¯\ª\©^¬^ÐG˜k˜kÀÝ4°U´ZÑ@Ô@ðð ñ	
ô 	
ð 	
ð 	
ð €Kr   Ú
candidatesúlist[ProjectCandidate]ÚNonec                ó*  — t          ¦   «         }t          ¦   «         }| D ]?}|j        |v r|                     |j        ¦  «         |                     |j        ¦  «         Œ@|r2t          dd                     t          |¦  «        ¦  «        › �¦  «        ‚d S )Nz%Duplicate project_code values found: z, )ÚsetÚproject_codeÚaddÚ
ValueErrorÚjoinr%   )r-   Ú
seen_codesÚduplicate_codesÚ	candidates       r   Úvalidate_project_candidatesr9   "   s£   € Ý™5œ5€JÝ #¡¤€OØð /ð /ˆ	ØÔ! ZÐ/Ð/Ø×Ò 	Ô 6Ñ7Ô7Ð7Ø�Š�yÔ-Ñ.Ô.Ð.Ð.Øð 
ÝØX°D·I²I½fÀ_Ñ>UÔ>UÑ4VÔ4VÐXÐXñ
ô 
ð 	
ð
ð 
r   r8   r   úPath | Nonec                óÚ   — t          j        d| j        ¦  «        }|sd S |                     d¦  «                             ¦   «         }t          |¦  «        }|                     ¦   «         r|nd S )Nu   Nguá»“n:\s*(.+)$r   )ÚreÚsearchÚnotesÚgroupÚstripr   Úexists)r8   ÚmatchÚsource_pathÚpaths       r   Úextract_project_rootrE   /   sb   € ÝŒIÐ)¨9¬?Ñ;Ô;€EØð ØˆtØ—+’+˜a‘.”.×&Ò&Ñ(Ô(€KÝ�ÑÔ€DØ—;’;‘=”=Ð*ˆ4ˆ4 dÐ*r   Úproject_rootú
list[Path]c                óR  — h d£}g }t          |                      d¦  «        ¦  «        D ]}}|                     ¦   «         sŒ|j                             d¦  «        s|j                             d¦  «        rŒL|j                             ¦   «         |vrŒh|                     |¦  «         Œ~|S )N>   ú.mdú.docú.txtú.xlsú.docxú.xlsmú.xlsxú.pdfÚ*r    z~$)r%   ÚrglobÚis_filer   r'   ÚsuffixÚlowerr(   )rF   Ú	supportedÚfilesrD   s       r   Úiter_project_filesrX   8   s²   € ØRÐRÐR€IØ€EÝ�|×)Ò)¨#Ñ.Ô.Ñ/Ô/ð ð ˆØ�|Š|‰~Œ~ð 	ØØŒ9×Ò Ñ$Ô$ð 	¨¬	×(<Ò(<¸TÑ(BÔ(Bð 	ØØŒ;×ÒÑÔ iÐ/Ð/ØØ�Š�TÑÔÐÐØ€Lr   rD   Úrulesúlist[DocumentTypeRule]ú6tuple[str, str | None, float, DocumentTypeRule | None]c                ó²  — |                       |¦  «        }t          |¦  «        }t          | j        ¦  «        }t          |j        ¦  «        }|D ]I}|}|j        dk    r|}n|j        dk    r|}|j        |v r!|j        dk    rdnd}	|j        |j        |	|fc S ŒJ| j                             ¦   «         dk    r!d|v r|D ]}|j        dk    r|j        d	d
|fc S ŒdS )NÚfilenameÚfolderÚanygffffffî?g)\�Âõ(ì?rP   ÚbdÚban_ve_thi_congzfallback:bdg
×£p=
ç?)ÚunknownNç        N)	Úrelative_tor	   r   ÚparentÚmatch_scopeÚpatternÚdocument_typerT   rU   )
rD   rF   rY   Úrelative_pathÚnormalized_pathÚnormalized_nameÚnormalized_parentÚruleÚtargetÚ
confidences
             r   Úclassify_project_filerp   F   s,  € ð ×$Ò$ \Ñ2Ô2€MÝ-¨mÑ<Ô<€OÝ-¨d¬iÑ8Ô8€OÝ/°Ô0DÑEÔEÐàð Fð FˆØ ˆØÔ˜zÒ)Ð)Ø$ˆFˆFØÔ Ò)Ð)Ø&ˆFØŒ<˜6Ð!Ð!Ø!%Ô!1°UÒ!:Ð!:˜˜ÀˆJØÔ% t¤|°ZÀÐEÐEÐEÐEð "ð „{×ÒÑÔ˜fÒ$Ð$¨°Ð)@Ð)@Øð 	Eð 	EˆDØÔ!Ð%6Ò6Ð6ØÔ)¨=¸$ÀÐDÐDÐDÐDð 7à%Ð%r   r   c           
     óZ  — t          |||¦  «        \  }}}}|                     t          ¦  «        }|j        }	|€Ìt	          di d| j        “d| j        “dt          |¦  «        “d|“dt          |¦  «        “d|j        “d|j	         
                    ¦   «                              d¦  «        “d	t          |j                             t          ¦  «        ¦  «        “d
|“dd“d|“d|“dd“dd“dd“dd“dd“d|	“dd“dd“dd“dd “d!d"“ŽS t	          di d| j        “d| j        “dt          |¦  «        “d|“dt          |¦  «        “d|j        “d|j	         
                    ¦   «                              d¦  «        “d	t          |j                             t          ¦  «        ¦  «        “d
|j        “dd#“d|“d|“d|j        “d|j        “d|j        “d|j        “d|j        “d|j        “d|j        “d|j        “d|j        |j        |j        f“d|j        r|j        fnd“d!|j        d$k    rd%nd&“ŽS )'Nr2   Úproject_namerF   Úabsolute_pathri   Úsource_filenameÚsource_formatr    Úfolder_scoperh   Úclassification_sourceÚrule_based_fallbackÚmatched_rulero   Ú	task_typeÚdossier_inventoryÚknowledge_typeÚunclassified_documentÚ	doc_stageÚunclassifiedÚ
doc_familyrb   Úrequired_for© Úsection_titleÚissuerÚ ÚsignerÚtags)rb   Úneeds_reviewÚcompliance_refs)u7   Cáº§n rÃ  soÃ¡t vÃ  phÃ¢n loáº¡i thá»§ cÃ´ng bá»• sung.Úreadiness_weightrc   Ú
rule_basedÚcontractinggš™™™™™é?gffffffæ?)rp   rd   r   Ústemr   r2   rr   r   r   rT   rU   Úlstripre   rh   rz   r|   r~   r€   r�   rƒ   r„   r†   Údescription)
r8   rF   rD   rY   rh   ry   ro   rm   ri   Údefault_section_titles
             r   Úbuild_project_documentr‘   _   s‹  € õ 5JØˆl˜Eñ5ô 5Ñ1€M�< ¨Tð ×$Ò$¥XÑ.Ô.€MØ œIÐà€|Ýð 
ð 
ð 
Ø"Ô/Ð/ð
à"Ô/Ð/ð
õ ˜\Ñ*Ô*Ð*ð
ð ˜$ð	
õ
 ˜mÑ,Ô,Ð,ð
ð !œI˜Ið
ð œ+×+Ò+Ñ-Ô-×4Ò4°SÑ9Ô9Ð9ð
õ ˜Tœ[×4Ò4µXÑ>Ô>Ñ?Ô?Ð?ð
ð (˜-ð
ð #8Ð"7ð
ð &˜ð
ð "�zð
ð *Ð)ð
ð 3Ð2ð
ð %�nð
ð  !�yð!
ð" ˜ð#
ð$ 0Ð/ð%
ð& �2ð'
ð( �2ð)
ð* -Ð,ð+
ð, YÐXð-
ð. !˜Sð/
ð 	
õ4 ð ð ð ØÔ+Ð+ðàÔ+Ð+ðõ ˜Ñ&Ô&Ð&ðð �dð	õ
 ˜-Ñ(Ô(Ð(ðð œ	˜	ðð ”k×'Ò'Ñ)Ô)×0Ò0°Ñ5Ô5Ð5ðõ ˜œ×0Ò0µÑ:Ô:Ñ;Ô;Ð;ðð Ô(Ð(ðð +˜lðð "�\ðð �:ðð ”.�.ðð Ô*Ð*ðð ”.�.ðð  ”?�?ð!ð" Ô&Ð&ð#ð$ Ô(Ð(ð%ð& Œ{ˆ{ð'ð( Œ{ˆ{ð)ð* Ô  $¤.°$´/ÐBÐBð+ð, 04Ô/?ÐG˜Ô)Ð+Ð+ÀRøð-ð. !%¤°-Ò ?Ð ?˜˜ÀSøð/ð r   úlist[ProjectDocument]c                óh   ‡ ‡‡— t          ‰ ¦  «        Š‰€g S ˆ ˆˆfd„t          ‰¦  «        D ¦   «         S )Nc                ó4   •— g | ]}t          ‰‰|‰¦  «        ‘ŒS r‚   )r‘   )Ú.0rD   r8   rF   rY   s     €€€r   ú
<listcomp>z.discover_project_documents.<locals>.<listcomp>§   s7   ø€ ð ð ð àõ 	˜y¨,¸¸eÑDÔDðð ð r   )rE   rX   )r8   rY   rF   s   ``@r   Údiscover_project_documentsr—   ¡   s\   øøø€ õ (¨	Ñ2Ô2€LØÐØˆ	ðð ð ð ð ð å& |Ñ4Ô4ðñ ô ð r   )r   r   r   r   )r   r   r   r   )r-   r.   r   r/   )r8   r   r   r:   )rF   r   r   rG   )rD   r   rF   r   rY   rZ   r   r[   )
r8   r   rF   r   rD   r   rY   rZ   r   r   )r8   r   rY   rZ   r   r’   )Ú
__future__r   r<   Úpathlibr   Ú	constantsr   r   Úhelpersr   r	   Úmodelsr
   r   r   r   r,   r9   rE   rX   rp   r‘   r—   r‚   r   r   ú<module>r�      s+  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø Ð Ð Ð Ð Ð à 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gðð ð ð ðð ð ð ð

ð 

ð 

ð 

ð+ð +ð +ð +ðð ð ð ð&ð &ð &ð &ð2?ð ?ð ?ð ?ðD	ð 	ð 	ð 	ð 	ð 	r   