
    Ij                       d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	  ee
      j                         j                  d   Zedz  Zdd	d
Zg dZg dZddZddZddZefddZddZefddZddZedk(  r e        yy)zHBuild a compact completion review summary from candidate browser smokes.    )annotationsN)Path)Any   outz+candidate_route_progress_browser_smoke.jsonz'candidate_deep_route_browser_smoke.jsonroutedeep)statusrouteCompletionNoticerouteClearGateTitleRestoretitleRouteCompletionGatetitleRouteClearGate)r   targethopCountpathactionCountcandidateEntryCountfinaltitleContinuefieldEncountercompletionTitleContinuerouteClearTitleContinueexpectedCandidateCountactivationCountcandidateEdgescandidateEdgeCountsvisitedMapscompletionNoticerouteClearGatec                p    | j                         r%t        j                  | j                  d            S i S )Nutf-8encoding)existsjsonloads	read_text)r   s    B/home/exedev/hwanse/tools/summarize_completion_candidate_review.py	load_jsonr*   2   s)    ;?;;=4::dnngn67PbP    c                b    |D ci c]  }|| v s|| j                  |       }}||d<   |S c c}w )N
sourceFile)get)payloadfieldssource_filefieldrows        r)   compactr4   6   s?    28
MEW<L5'++e$$
MC
M#CJ Ns   	,,c           	         d| j                    | j                         r| j                         j                  ndt	        t        j                  |dd      j                  d            |j                  dd      d	S )
Nout/r   F),:)ensure_ascii
separatorsr"   r   missing)r-   sourceSizeBytescompactSizeBytesr   )	namer%   statst_sizelenr&   dumpsencoder.   )r   r3   s     r)   source_inforD   <   sb    TYYK(26++-499;..Q

3Uz Z a abi jk''(I.	 r+   c           
     $   | dz  }|t         d   z  }|t         d   z  }t        t        |      t        d|j                         }t        t        |      t
        d|j                         }dddt         dt        ||      t        ||      d	||d
S )Nr   r	   r
   r6   z*hwanse-completion-candidate-review-summaryz.tools/summarize_completion_candidate_review.pyreadyzCompact browser completion review contract. It keeps only fields used by web/completion_review.html and tools/summarize_completion_audit.py; raw route/deep browser smoke payloads remain verifier outputs until their remaining active consumers are replaced.r   )kindsourcer   sourceFilesboundarysourcesr	   r
   )SOURCE_FILESr4   r*   ROUTE_FIELDSr>   DEEP_FIELDSrD   )rootout_dir
route_path	deep_pathr	   r
   s         r)   build_summaryrS   E   s    UlG<00J,v..IIj)<4
?P9QRE9Y'Y^^<L6MND<B#7 !U3	40
 ! r+   c                    dj                  d | d   j                         D              }dt        j                  | d          d| dS )N
c              3    K   | ]  \  }}d t        j                  |       dt        j                  |       dt        j                  t        |j                  dd                   dt        j                  t        |j                  dd                   dt	        |j                  d      xs d      d	d
t	        |j                  d      xs d      d	d  yw)z<tr><td id="z"><code>z</code></td><td>r   -z</td><td><code>r-   r<   r   r7   z	</td><td>r=   z
</td></tr>N)htmlescapestrr.   int).0keyinfos      r)   	<genexpr>zhtml_page.<locals>.<genexpr>`   s      	 C	KK$%Yt{{3/?.@ A{{3txx#6789 :[[TXXlC%@!ABC D488-.3!4Q7 8488./415a8 9		s   CCrK   a1  <!doctype html>
<html lang="ko">
<head>
  <meta charset="utf-8">
  <title>Completion Candidate Review Summary</title>
  <style>
    body { margin: 24px; color: #202124; font-family: system-ui, sans-serif; line-height: 1.5; }
    table { width: 100%; border-collapse: collapse; margin: 14px 0 28px; }
    th, td { border: 1px solid #d7dce2; padding: 6px 8px; text-align: left; vertical-align: top; }
    th { background: #f4f6f8; }
    code { background: #f4f6f8; padding: 1px 4px; }
  </style>
</head>
<body>
  <h1>Completion Candidate Review Summary</h1>
  <p>rJ   z</p>
  <table>
    <thead><tr><th>scope</th><th>status</th><th>raw source</th><th>raw bytes</th><th>compact bytes</th></tr></thead>
    <tbody>z$</tbody>
  </table>
</body>
</html>
)joinitemsrX   rY   )summaryrowss     r)   	html_pagerd   _   sc    99 	 !+113	 	D kk'*%&' ( 6 % r+   c                    |j                  dd       |dz  j                  t        j                  | dd      dz   d	       |d
z  j                  t	        |       d	       y )NT)parentsexist_okz(completion_candidate_review_summary.jsonF   )r9   indentrU   r"   r#   z(completion_candidate_review_summary.html)mkdir
write_textr&   rB   rd   )rb   rP   s     r)   write_outputsrl      sf    MM$M.99EE

7q9D@ F  99EEiPWFXcjEkr+   c                     t        j                         } | j                  dt        t               | j                         }|j                  j                         }t        t        |      |dz         y )Nz--root)typedefaultr   )
argparseArgumentParseradd_argumentr   ROOT
parse_argsrO   resolverl   rS   )parserargsrO   s      r)   mainrx      sX    $$&F
tT:D99D-%te|4r+   __main__)r   r   returndict[str, Any])r/   r{   r0   z	list[str]r1   rZ   rz   r{   )r   r   r3   r{   rz   r{   )rO   r   rz   r{   )rb   r{   rz   rZ   )rb   r{   rP   r   rz   None)rz   r|   )__doc__
__future__r   rp   rX   r&   pathlibr   typingr   __file__ru   rf   rs   OUTrL   rM   rN   r*   r4   rD   rS   rd   rl   rx   __name__ r+   r)   <module>r      s    N "      H~''*
Ul ;5
,Q  $ 4!H <? l5 zF r+   