§
    ÔŸ’jm  ã                  óp   — d dl mZ 	 d dlZd dlmZ d dl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S )é    )ÚannotationsN)ÚPath)ÚAny)ÚDossierCoverageDocumentItemÚDossierCoverageProjectItemÚDossierCoverageResponseÚmanifest_pathr   Úreturnúdict[str, Any]c                óö   — |                       ¦   «         st          d| › d�¦  «        ‚	 t          j        |                      d¬¦  «        ¦  «        S # t          j        $ r}t          d|› �¦  «        |‚d}~ww xY w)u   Ä�á»�c coverage manifest.u+   KhÃ´ng tÃ¬m tháº¥y coverage manifest táº¡i u'   ; hÃ£y cháº¡y ingest coverage trÆ°á»›c.zutf-8)Úencodingu%   Coverage manifest khÃ´ng há»£p lá»‡: N)ÚexistsÚ
ValueErrorÚjsonÚloadsÚ	read_textÚJSONDecodeError)r	   Úexcs     ú@C:\Projects\DSCons\app\services\remediation_planning\coverage.pyÚload_coverage_manifestr      sœ   € à×ÒÑ!Ô!ð 
ÝØp¸-ÐpÐpÐpñ
ô 
ð 	
ðQÝŒz˜-×1Ò1¸7Ð1ÑCÔCÑDÔDÐDøÝÔð Qð Qð QÝÐFÀÐFÐFÑGÔGÈSÐPøøøøðQøøøs   ©'A ÁA8Á A3Á3A8Úensure_listr   ú2tuple[dict[str, dict[str, Any]], bool, str | None]c                ó,  — 	 t          | ¦  «        }n# t          $ r}i dd|› �fcY d}~S d}~ww xY wi } ||                     d¦  «        ¦  «        D ]?}t          |                     d¦  «        pd¦  «                             ¦   «         }|r|||<   Œ@|ddfS )u   Ä�á»�c index coverage an toÃ n.Tuf   KhÃ´ng thá»ƒ náº¡p coverage manifest; remediation planning Ä‘ang dÃ¹ng fallback an toÃ n. Chi tiáº¿t: NÚprojectsÚproject_codeÚ F)r   r   ÚgetÚstrÚstrip)r	   r   Úmanifestr   ÚindexÚitemr   s          r   Úload_coverage_index_with_statusr#      sà   € ð

Ý)¨-Ñ8Ô8ˆˆøÝð 
ð 
ð 
àØØzÐuxÐzÐzð
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
øøøøð
øøøð (*€EØ�˜HŸLšL¨Ñ4Ô4Ñ5Ô5ð 'ð 'ˆÝ˜4Ÿ8š8 NÑ3Ô3Ð9°rÑ:Ô:×@Ò@ÑBÔBˆØð 	'Ø"&ˆE�,ÑøØ�%˜ÐÐs   ‚ ’
.œ)£.©.r"   Ústring_int_dictr   c           
     ó:  — d„  ||                       d¦  «        ¦  «        D ¦   «         }t          di dt          |                       d¦  «        pd¦  «        “dt          |                       d¦  «        pd¦  «        “dt          |                       d¦  «        pd¦  «        pd“dt          |                       d¦  «        ¦  «        “d	t	          |                       d	¦  «        pd
¦  «        “dt	          |                       d¦  «        pd
¦  «        “dt	          |                       d¦  «        pd
¦  «        “dt	          |                       d¦  «        pd
¦  «        “dt	          |                       d¦  «        pd
¦  «        “dt	          |                       d¦  «        pd
¦  «        “d ||                       d¦  «        ¦  «        “dd„ |                       dg ¦  «        D ¦   «         “dd„ |                       dg ¦  «        D ¦   «         “dd„ |                       dg ¦  «        D ¦   «         “dd„ |                       dg ¦  «        D ¦   «         “dd„ |                       dg ¦  «        D ¦   «         “dd„ |                       dg ¦  «        D ¦   «         “d|“dt          | ¦  «        “ŽS )u   Chuáº©n hÃ³a project coverage.c                óÐ  — g | ]ã}t          t          |                     d ¦  «        pd¦  «        t          |                     d¦  «        pd¦  «        t          |                     d¦  «        pd¦  «        t          |                     d¦  «        pd¦  «        t          |                     d¦  «        pd¦  «        t          |                     d¦  «        pd	¦  «        ¬
¦  «        ‘ŒäS )Úrelative_pathr   Úsource_filenameÚdocument_typeÚunknownÚ	doc_stageÚunclassifiedÚclassification_sourceÚclassification_confidenceg        )r'   r(   r)   r+   r-   r.   )r   r   r   Úfloat)Ú.0Údocuments     r   ú
<listcomp>z,coverage_project_payload.<locals>.<listcomp>6   sð   € ð ð ð ð õ 	$Ý˜hŸlšl¨?Ñ;Ô;ÐA¸rÑBÔBÝ §¢Ð->Ñ ?Ô ?Ð EÀ2ÑFÔFÝ˜hŸlšl¨?Ñ;Ô;ÐH¸yÑIÔIÝ˜(Ÿ,š, {Ñ3Ô3ÐE°~ÑFÔFÝ"%Ø—’Ð4Ñ5Ô5ÐB¸ñ#ô #õ ',Ø—’Ð8Ñ9Ô9Ð@¸Sñ'ô 'ð	
ñ 	
ô 	
ðð ð ó    Ú	documentsr   r   Úproject_nameÚproject_rootNÚproject_root_existsÚtotal_filesr   Úextractable_filesÚclassified_filesÚunknown_filesÚknowledge_files_ingestedÚknowledge_chunks_ingestedÚdocument_type_countsÚmissing_document_typesc                óJ   — g | ] }t          |¦  «        ¯t          |¦  «        ‘Œ!S © ©r   ©r0   Úxs     r   r2   z,coverage_project_payload.<locals>.<listcomp>Q   s9   € ð  
ð  
ð  
ØÅcÈ!ÁfÄfð 
Ý�‰FŒFð 
ð  
ð  
r3   Úsample_unknown_filesc                óJ   — g | ] }t          |¦  «        ¯t          |¦  «        ‘Œ!S rA   rB   rC   s     r   r2   z,coverage_project_payload.<locals>.<listcomp>T   ó9   € ð 
ð 
ð 
ØÅCÈÁFÄFð
Ý�‰FŒFð
ð 
ð 
r3   Úsample_skipped_filesc                óJ   — g | ] }t          |¦  «        ¯t          |¦  «        ‘Œ!S rA   rB   rC   s     r   r2   z,coverage_project_payload.<locals>.<listcomp>W   rG   r3   Úmissing_filesc                óJ   — g | ] }t          |¦  «        ¯t          |¦  «        ‘Œ!S rA   rB   rC   s     r   r2   z,coverage_project_payload.<locals>.<listcomp>Z   s)   € ÐOÐOÐO !ÍÈAÉÌÐO•s˜1‘v”vÐOÐOÐOr3   Úingested_document_typesc                óJ   — g | ] }t          |¦  «        ¯t          |¦  «        ‘Œ!S rA   rB   rC   s     r   r2   z,coverage_project_payload.<locals>.<listcomp>[   s9   € ð !
ð !
ð !
ØÅsÈ1ÁvÄvð!
Ý�‰FŒFð!
ð !
ð !
r3   Ústagesc                óJ   — g | ] }t          |¦  «        ¯t          |¦  «        ‘Œ!S rA   rB   rC   s     r   r2   z,coverage_project_payload.<locals>.<listcomp>^   s)   € ÐAÐAÐA˜1½#¸a¹&¼&ÐA•�A‘”ÐAÐAÐAr3   Úreadiness_gapsrA   )r   r   r   ÚboolÚintÚderive_manifest_readiness_gaps)r"   r   r$   r4   s       r   Úcoverage_project_payloadrT   2   s9  € ðð ð $˜ D§H¢H¨[Ñ$9Ô$9Ñ:Ô:ðñ ô €Iõ &ð ð ð Ý˜Ÿš .Ñ1Ô1Ð7°RÑ8Ô8Ð8ðå˜Ÿš .Ñ1Ô1Ð7°RÑ8Ô8Ð8ðõ ˜Ÿš .Ñ1Ô1Ð7°RÑ8Ô8Ð@¸Døðõ ! §¢Ð*?Ñ!@Ô!@ÑAÔAÐAð	õ
 ˜Ÿš Ñ/Ô/Ð4°1Ñ5Ô5Ð5ðõ ˜dŸhšhÐ':Ñ;Ô;Ð@¸qÑAÔAÐAðõ ˜TŸXšXÐ&8Ñ9Ô9Ð>¸QÑ?Ô?Ð?ðõ ˜$Ÿ(š( ?Ñ3Ô3Ð8°qÑ9Ô9Ð9ðõ "% T§X¢XÐ.HÑ%IÔ%IÐ%NÈQÑ!OÔ!OÐ!Oðõ #& d§h¢hÐ/JÑ&KÔ&KÐ&PÈqÑ"QÔ"QÐ"Qðð -˜_¨T¯XªXÐ6LÑ-MÔ-MÑNÔNÐNðð 
ð  
Ø ŸHšHÐ%=¸rÑBÔBð 
ñ  
ô  
ð  
ðð
ð 
Ø ŸHšHÐ%;¸RÑ@Ô@ð
ñ 
ô 
ð 
ðð$
ð 
Ø ŸHšHÐ%;¸RÑ@Ô@ð
ñ 
ô 
ð 
ð%ð* PÐO t§x¢x°ÀÑ'DÔ'DÐOÑOÔOÐOð+ð,!
ð !
Ø ŸHšHÐ%>ÀÑCÔCð!
ñ !
ô !
ð !
ð-ð2 BÐA §¢¨°2Ñ 6Ô 6ÐAÑAÔAÐAð3ð4 �)ð5õ6 6°dÑ;Ô;Ð;ð7ð r3   ú	list[str]c                óÜ  — g }d„ |                       dg ¦  «        D ¦   «         }t          |                       d¦  «        pd¦  «        }d„ |                       dg ¦  «        D ¦   «         }|r@|                     dd                     t	          |¦  «        d	d
…         ¦  «        z   ¦  «         |r|                     d|› d�¦  «         |r&|                     dt          |¦  «        › d�¦  «         |S )zSuy ra readiness gaps.c                óJ   — g | ] }t          |¦  «        ¯t          |¦  «        ‘Œ!S rA   rB   rC   s     r   r2   z2derive_manifest_readiness_gaps.<locals>.<listcomp>g   s9   € ð ð ð ØÅ#ÀaÁ&Ä&ðÝˆA‰Œðð ð r3   r?   r;   r   c                óJ   — g | ] }t          |¦  «        ¯t          |¦  «        ‘Œ!S rA   rB   rC   s     r   r2   z2derive_manifest_readiness_gaps.<locals>.<listcomp>k   s)   € ÐMÐMÐM ÅcÈ!ÁfÄfÐM•S˜‘V”VÐMÐMÐMr3   rJ   u&   Thiáº¿u document types trá»�ng yáº¿u: z, Né   u   CÃ²n u,    file chÆ°a phÃ¢n loáº¡i trong kho há»“ sÆ¡.u   CÃ³ uF    file Ä‘Æ°á»£c cáº¥u hÃ¬nh nhÆ°ng khÃ´ng cÃ²n tá»“n táº¡i trÃªn Ä‘Ä©a.)r   rR   ÚappendÚjoinÚsortedÚlen)r"   Úgapsr?   r;   rJ   s        r   rS   rS   d   s!  € à€Dðð ØŸšÐ!9¸2Ñ>Ô>ðñ ô Ðõ ˜Ÿš Ñ1Ô1Ð6°QÑ7Ô7€MØMÐM T§X¢X¨o¸rÑ%BÔ%BÐMÑMÔM€MØð 
Ø�ŠØ4Ø�iŠi�Ð5Ñ6Ô6°r¸°rÔ:Ñ;Ô;ñ<ñ	
ô 	
ð 	
ð ð YØ�ŠÐW˜MÐWÐWÐWÑXÔXÐXØð 
Ø�ŠØm•3�}Ñ%Ô%ÐmÐmÐmñ	
ô 	
ð 	
ð €Kr3   r   r   Úmessager   c           
     ó  — t          i d| “dd“dd“dd“dd	“d
d	“dd	“dd	“dd	“dd	“di “dg “dg “dg “dg “dg “dg “dg i¥||¦  «        }|j                             d¦  «         t          | dt	          |¦  «        d|dd|¬¦  «        S )u   Táº¡o coverage fallback.r   r5   r   r6   Nr7   Fr8   r   r9   r:   r;   r<   r=   r>   r?   rE   rH   rJ   rL   rN   r4   uT   Coverage manifest chÆ°a kháº£ dá»¥ng; Ä‘ang dÃ¹ng fallback coverage rá»—ng an toÃ n.ÚfallbackT)r   Úingest_batchr	   Úgenerated_atÚprojectÚsourceÚused_fallbackr_   )rT   rP   rZ   r   r   )r   r	   r_   r   r$   Úpayloads         r   Ú(build_fallback_project_coverage_responserh   z   sR  € õ 'ð	
Ø˜Lð	
à˜Bð	
ð ˜Dð	
ð " 5ð		
ð
 ˜1ð	
ð   ð	
ð  ð	
ð ˜Qð	
ð '¨ð	
ð (¨ð	
ð # Bð	
ð % bð	
ð # Bð	
ð # Bð	
ð ˜Rð	
ð  & rð!	
ð" �bð#	
ð$ ˜ð%	
ð 	
ð( 	Øñ-ô €Gð0 Ô×!Ò!Ø^ñô ð õ #Ø!ØÝ˜-Ñ(Ô(ØØØØØð	ñ 	ô 	ð 	r3   )r	   r   r
   r   )r	   r   r   r   r
   r   )r"   r   r   r   r$   r   r
   r   )r"   r   r
   rU   )r   r   r	   r   r_   r   r   r   r$   r   r
   r   )Ú
__future__r   r   Úpathlibr   Útypingr   Úapp.models.schemasr   r   r   r   r#   rT   rS   rh   rA   r3   r   ú<module>rm      sî   ðØ "Ð "Ð "Ð "Ð "Ð "à /ð €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð	Qð 	Qð 	Qð 	Qðð ð ð ð*/ð /ð /ð /ðdð ð ð ð,-ð -ð -ð -ð -ð -r3   