
    0_]j                     ~   d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ  ee          	                                j
        d         Zedz  Zedz  Zedz  Zedz  Z ej        d	ej                  Z ej        d
          Z ej        d          Zd Zd Zd Zd Zedk    r ej         e                       dS dS )    N)datetimetimezone)Path   scriptstorychapterszpromotion-report.jsonu   [\wÀ-ỹĐđ]+uL   (?im)^\s*(?:chương|phần|cảnh)\s+(?:\d+|[ivxlcdm]+)\s*[:.\-–—]?\s*$u[   (?i)\b(?:scene_id|target_words|production note|ghi chú sản xuất|end state|reveal_id)\bc                 ^    t          j        t          | z                                            S N)jsonloadsSCRIPT	read_text)names    script/validate-story.pyloadr      s"    :v}//11222    c                 N    t          j        |                                           S r   )hashlibsha256	hexdigest)datas    r   	sha_bytesr      s    >$))+++r   c                 P    t          t                              |                     S r   )lenWORD_REfindall)texts    r   wordsr      s    wt$$%%%r   c            
        ' t          d          } t          d          }t          d          }t          d          }t          d          }g }t          t          dz                                            t          t          dz                                            t          t          dz                                            d}||                    d          k    r|                    d           |                    di           }||k    r|                    d	           t          |d
                   }d t          d|dz             D             }	d |	D             }
|
r+|                    dd                    |
          z              g g }}t          |	d          D ]E\  }}|
                                s|                                                                }|                    |           |s|                    d|dd           t                              |          r|                    d|dd           t                              |          r|                    d|dd           |                    |t!          |                    t$                              t'          |          t          |                                          d           Gt)          |          |k    r*d                    |                                          dz   nd}t*          dz  }|
                                r|                                nd}t-          |          o||k    }|s|                    d           t'          |          }|d         \  }}||cxk    r|k    s n |                    d| d| d|            g }g }|                    dg           D ]}|                    d g           |                    d!g           z   |                    d"g           z   D ]I}|s|                    d# t1          j        t1          j        |          |          D                        J|                    dg           D ]}|                    d$d%          d%k    r|                    d&g           D ]}t1          j        d't1          j        |           d(          }|                    |          D ]'t9          'fd)|D                       r|t;          d*'                                d+z
            '                                d+z            }|                    |d,         ||d-           |r%|                    d.t)          |                      g }d/ t          |          D             }d0d1gd2d3gd4d5gg d6d7} |                    d8g           D ]}!t          |!d9                   }"t          d|"          D ]~}#|                    |#d                                           }$|                     |!d:         g           D ]7}%|%                                 |$v r|                    |!d:         |#|%d;           8|r%|                    d<t)          |                      i d=dd>|sd?nd@dA| dB| dB         d
|dCt)          |          dD|dEt!          |                    t$                              dF|dG|dH||gdItC          |dJz  dK          dL|r!t          |"                                          nd dM|dN|dO|dP|dQtG          j$        tJ          j&                  '                                i}&tP          )                    tU          j+        |&dRdST          dz              tY          tU          j+        |&dA         ||dUdRV                     |&dA         rd*ndS )WNzoutline.jsonzidentity-registry.jsonzreveal-ledger.jsonzproduction-plan.jsonzproject-manifest.json)outline_sha256identity_registry_sha256reveal_ledger_sha256authority_hashesz8current authority bytes differ from production-plan lockz9current authority bytes differ from project-manifest lockexpected_chaptersc                 *    g | ]}t           |d dz  S )02dz.txt)CHAPTERS).0indexs     r   
<listcomp>zmain.<locals>.<listcomp>1   s)    OOOuX5*****OOOr   r   c                     g | ]=}|                                 t          |                    t                              >S  )existsstrrelative_toPROJECT)r)   paths     r   r+   zmain.<locals>.<listcomp>2   s;    UUU$t{{}}Us4##G,,--UUUr   zmissing chapters: z, zchapter r'   z emptyz contains spoken headingz contains production marker)chapterr2   r   r   z


 zspoken-narration.txtz-spoken narration is not exact sequential joinaccepted_rangezword count z	 outside -entitiesallowed_narrative_namesallowed_title_namesrole_addressc              3   f   K   | ],}|                                 |                                fV  -d S r   startend)r)   matchs     r   	<genexpr>zmain.<locals>.<genexpr>R   s7      $t$teekkmmUYY[[%A$t$t$t$t$t$tr   entity_type	characterforbidden_bare_namesu   (?<![\wÀ-ỹĐđ])u   (?![\wÀ-ỹĐđ])c              3   ~   K   | ]7\  }}|                                 k    o                                |k    V  8d S r   r=   )r)   r>   r?   r@   s      r   rA   zmain.<locals>.<genexpr>Y   sG      iiPSu-D%))++2Diiiiiir   r      	full_name)entitybarecontextzidentity gate hits: c                      i | ]\  }}|d z   |S )r   r-   )r)   ir   s      r   
<dictcomp>zmain.<locals>.<dictcomp>`   s"    @@@GAtAE4@@@r   u)   chín vết ép không cùng một nhịpu   nhiều lượt máy khác nhauu#   bộ đếm cơ khí sau nắp máyu!   bộ đếm cơ khí độc lậpu'   thẻ được sao từ bàn bảo trìu   sao qua thiết bị bảo trì)u'   Vĩnh Khang dàn dựng vụ lộ đều   chiếm quy trình in kínu!   chiếm hợp đồng khảo thí)rev_001rev_002rev_003rev_004revealsnot_before_part	reveal_id)rT   parttermzprotected reveal hits: versionstatuspassedfailedverifiedcanonical_titlechapters_presentchapter_rowsspoken_narrationexact_sequential_jointotal_wordstarget_rangeestimated_minutes_at_baselineg(\*m@   spoken_sha256authority_hashes_currentidentity_hitsprotected_reveal_hitsissues
checked_atF   )ensure_asciiindent)r[   r   ri   )rl   )-r   r   r   
read_bytesgetappendintrangejoin	enumerater.   r   strip
HEADING_REsearchPRODUCTION_REr/   r0   r1   r   r   STORYboolextendrefinditerescapecompileanymaxr>   r?   lowerroundencoder   nowr   utc	isoformatREPORT
write_textr   dumpsprint)(outlineregistryledgerplanmanifestri   	authorityexpected_manifestexpectedpathsmissingrowstextsr*   r2   r   joinedspoken_pathactual
exact_joinra   lowhighrg   all_allowed_spansrH   r   rI   patternrJ   reveal_hitschapter_textdetection_termsreveal	thresholdrU   r   rV   reportr@   s(                                          @r   mainr      s\	   >""G,--H&''F&''D+,,HF#Vn%<$H$H$J$JKK$-v8P/P.\.\.^.^$_$_ )64H+H*T*T*V*V W W I
 DHH/0000PQQQ %7<<%%%QRRR4+,--HOOaA8N8NOOOEUU%UUUG A*TYYw-?-??@@@b%D ** N Nt{{}} 	~~%%''T 	8MM6U6666777T"" 	JMMHUHHHHIII%% 	MMMKUKKKKLLLs43C3CG3L3L/M/MX]^bXcXcoxy}  zI  zI  zK  zK  pL  pL  M  M  	N  	N  	N  	N25e**2H2HV[[%%''$..bF00K(3(:(:(<(<D[""$$$"Ff2&F"2J GEFFF--K%&IC+%%%%%%%%FKFF#FFFFGGGM,,z2.. u uJJ8"==

K`bd@e@eehnhrhr  tB  DF  iG  iG  G 	u 	uD $$$t$tr{[][dei[j[jlrOsOs$t$t$ttttt	u ,,z2.. 	h 	h::m[11[@@JJ5r:: 	h 	hDj![	$![![![\\G ))&11 h hiiiiWhiiiii  Qb(8!9!9%))++b.!HI$${0CT^e%f%fgggg	h	h  CAS-?-?AABBBK@@y/?/?@@@L?Abc9;^_=?`a B  B  B	 O **Y++ g g0122	!Y'' 	g 	gD $$T2..4466E'++F;,?DD g g::<<5((&&VK5HRV`d'e'efffg	g
  DBK0@0@BBCCC1&6((h 	J 	7#45	
 	X 	CII 	 	C 7 7 @ @AA 	  	{ 	d 	({V/CQ)G)G 	vG6==??3334 	#I 	  	 !" 	&#$ 	hl8<00::<<% F( djeAFFFMNNN	$*&"4{V\]]lq
r
r
rsssz")11)r   __main__)r   r   r|   sysr   r   pathlibr   __file__resolveparentsr1   r   ry   r(   r   r   UNICODEr   rv   rx   r   r   r   r   __name__exitr-   r   r   <module>r      sJ     				 



 ' ' ' ' ' ' ' '      
$x..
 
 
"
"
*1
-	8	':	(	(
"*'
4
4RZghh

yzz3 3 3, , ,& & &g* g* g*R zCHTTVV r   