
    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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)zEBuild a compact dialogue review summary from candidate browser smoke.    )annotationsN)Path)Any   outz.candidate_dialogue_progress_browser_smoke.jsonc                p    | j                         r%t        j                  | j                  d            S i S )Nutf-8encoding)existsjsonloads	read_text)paths    @/home/exedev/hwanse/tools/summarize_dialogue_candidate_review.py	load_jsonr      s)    ;?;;=4::dnngn67PbP    c           	        | dz  }|t         z  }t        |      }|j                         D ci c]  \  }}|dk7  s|| }}}dt          |d<   t        t	        j
                  |dd      j                  d            }d	d
ddt          d|j                         r|j                         j                  nd||dS c c}}w )Nr   	snapshotszout/
sourceFileF),:)ensure_ascii
separatorsr	   z(hwanse-dialogue-candidate-review-summaryz,tools/summarize_dialogue_candidate_review.pyreadya$  Compact browser dialogue review contract. It keeps the top-level dialogue smoke strings and small state objects used by web/dialogue_review.html, while dropping large raw snapshot payloads. Raw dialogue smoke remains a domain-summary and verifier input until those consumers are consolidated.r   )kindsourcestatusr   boundarysourceSizeBytescompactSizeBytesdialogue)
SOURCE_FILEr   itemslenr   dumpsencoder   statst_size)rootout_dirr   payloadkeyvaluer"   compact_sizes           r   build_summaryr0      s    UlG[ DoG-4]]_SzsE{@RU
SHS#K=1H\tzz(:V]]^efgL:@[M*E
 37++-499;..Q(  Ts
   B;B;c                   | d   }dj                  d |j                         D              }dt        j                  | d          dt        j                  | d          dt	        | d	         d
dt	        | d         d
d| dS )Nr"   
c           	   3     K   | ]B  \  }}d t        j                  |       dt        j                  t        |            dd  d D yw)z<tr><td><code>z</code></td><td>Ni  z
</td></tr>)htmlescapestr).0r-   r.   s      r   	<genexpr>zhtml_page.<locals>.<genexpr>/   sV      
 C		[[%& '{{3u:&u-. /	s   AA
a-  <!doctype html>
<html lang="ko">
<head>
  <meta charset="utf-8">
  <title>Dialogue 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>Dialogue Candidate Review Summary</h1>
  <p>r   z</p>
  <p><code>r   z	</code>: r    r   z bytes raw, r!   zb bytes compact.</p>
  <table>
    <thead><tr><th>field</th><th>value</th></tr></thead>
    <tbody>z$</tbody>
  </table>
</body>
</html>
)joinr$   r4   r5   int)summaryr"   rowss      r   	html_pager=   -   s    z"H99 
 #..* D kk'*%&' (KK-./yWEV=W9XYZ8[[ghkls  uG  mH  iI  JK  hL L 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&dialogue_candidate_review_summary.jsonF   )r   indentr2   r	   r
   z&dialogue_candidate_review_summary.html)mkdir
write_textr   r&   r=   )r;   r+   s     r   write_outputsrE   P   se    MM$M.77CC

7q9D@ D  77CCIgDVahCir   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_argsr*   resolverE   r0   )parserargsr*   s      r   mainrQ   Y   sX    $$&F
tT:D99D-%te|4r   __main__)r   r   returndict[str, Any])r*   r   rS   rT   )r;   rT   rS   r6   )r;   rT   r+   r   rS   None)rS   rU   )__doc__
__future__r   rI   r4   r   pathlibr   typingr   __file__rN   r?   rL   OUTr#   r   r0   r=   rE   rQ   __name__ r   r   <module>r^      s    K "      H~''*
Ul>Q  $ 0 F <? j5 zF r   