
    ^j~                         d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZ ed          Z ed          Z	dZ
ej        ZdZedz  e
z  dz  Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zedk    r e e                      dS )    )PathNzF/data/video-pipeline/HaTramAudio/project/017-Tam-Ve-Khong-Ghi-Diem-Denz(/data/video-pipeline/HaTramAudio/projectzrun-20260721T030911Z-51bf7fe4Levyz
work/storyzcandidate.txtc                      t           j                             t           j        j                                                                      dd          S )Nz+00:00Z)datetimenowtimezoneutc	isoformatreplace     :work/story/run-20260721T030911Z-51bf7fe4/qa_and_promote.pyr   r   	   s<    (#''(9(=>>HHJJRRS[\_```r   c                 N    t          j        |                                           S N)hashlibsha256	hexdigest)bs    r   	sha_bytesr   
   s    **44666r   c                 f    t          j        d|                                 t           j                  S )Nu   \b[\wÀ-ỹĐđ]+\b)refindalllowerUNICODE)texts    r   wordsr      s     
#9$**,,rzRRRr   c                     t                       | j                            dd           |                     d| j        z   dz             }|                    |           t          j        ||            d S )NT)parentsexist_ok.z.tmp)guardparentmkdir	with_namenamewrite_bytesosr   )pathdatatmps      r   atomic_bytesr,      s    $+

D$

7
7
7DNN3ty=Y_K_<`<`adapapquavavavwy  xB  CF  GK  xL  xL  xL  xL  xLr   c                 z    t          | t          j        |dd          dz                                              d S )NF   )ensure_asciiindent
)r,   jsondumpsencode)r)   r*   s     r   atomic_jsonr5      s;    Ltz$EYZ/[/[/[\`/`.h.h.j.jkkkkkr   c                     t          j        t          dz                                            } t          t
          t          d                                D ]0\  }}|                     |          |k    rt          d|z             1d S )Nz.ownership-lock.json)
project_idrun_idownerzownership mismatch: )
r2   loadsROOT	read_textPIDRUNOWNERitemsgetRuntimeError)dkvs      r   r"   r"      s~    :t**557788s599??AA ? ?SQqUU1XXq[[%;A%=>>>[? ?r   c           	            fdt          t          dt                     z
  dz                       D             S )Nc                 D    h | ]}t          ||z                      S r   )tuple).0inwss     r   	<setcomp>zngrams.<locals>.<setcomp>   s-    NNNq%1QqS5	**NNNr   r      )rangemaxlen)rL   rK   s   ``r   ngramsrR      sA    NNNNNE#aB	!:L:L4M4MNNNNr   c                    $% t                       t                                          } |                     dd          %i }d|d<   t	          j        d%          %k    |d<   |                     d          |d<   t          j        d	%t          j	                   |d
<   t          t          %                    }d|cxk    odk    nc |d<   t          j        d%t          j        t          j	        z             |d<   g d}t          %fd|D                        |d<   t          d t          j        d%          D                       dk    |d<   d                    t          %          d d                   $dgddgddgdgg dg}t!          $fd |D                       |d!<   t          j        d"%t          j                   |d#<   %}d$D ]0}t          j        d%t          j        |          z   d&z   d'|          }1g }t          j        d(|          D ]r}|                    |t+          d)|                                d*z
            t/          t          |          |                                d*z                                 s| |d+<   g }	t          j        d,%          D ]5}
t          t          |
                    }|r|	                    |           6t3          d- |	D                       t+          d.t          |	          d/z            k    |d0<   d1D ]'}t4          d2z  |z                                  |d3|z   <   (|d4         r.t9          j        t4          d5z                                            ni }|                    d6          p)|                    d7          p|                    d8          }tA          |tB          tD          f          sk|                    d9          p|                    d:          pi }tA          |tF                    r*|                    d8          p|                    d;          }tA          |tB          tD          f          o|d<k    |d=<   t          %          }tI          |d>          }tI          |d?          }g }g }tK          tL          '                    d@                    D ]Y}t4          |j(        v r|                    dA          }t          |          }n# tR          $ r Y Dw xY wtI          |d>          }tI          |d?          }||z  }t          ||z            t+          dBt          ||z                      z  }|                    |j(        dB         j*        tW          |          t          |          t          |          tY          |dC          dD           |rWt          |          dEk     rD|-                    dF t]          |          d dEt          |          z
           D                        [|/                    dG dH           t          |          d>k    |dI<   | |dJ<   t+          dK |D             d)L          dMk     |dN<   t!          |0                                          }tc                      }te          |           }dBtf          th          |rdOndP|||dQ||dR
}dBtf          th          |rdOndP||dSdTdUd|dI         |dJ         |dN         |d=         ddV|||dW} tk          t4          dXz  |           tk          t4          dYz  |            |sEtm          t9          j7        dP|dZ |8                                D             d[dU\                     dBS ts          t4          d]z  |            ts          t4          d^z  |            t4          d]z                                  | k    s t4          d^z                                  | k    rtu          d_          dBtf          th          d`d|||||t          |           dadd|db}!tk          t4          dcz  |!           t4          ddz  }"t9          j        |"                                          }#||#de<   ||#df<   dg|#dh<   ||#di<   tk          |"|#           tm          t9          j7        d`d||t          |          t+          dj |D             d)L          dkdU\                     d)S )lNzutf-8strictTutf8_strictNFCnfc   
final_newlinez^\d+\|no_line_number_contaminationi%  i$,  
word_rangeuA   ^\s*#{1,6}\s|^\s*(?:phần|chương|teaser|mở đầu)\s+\d*\s*$no_markdown_heading)u   \[âm nhạc\]u   like\s+và\s+subscribeu   đăng\s+ký\s+kênhu   nhấn\s+likehashtagu(   ^Tấm Vé Không Ghi Điểm Đến\s*$c              3   r   K   | ]1}t          j        |t           j        t           j        z            V  2d S r   )r   searchIM)rI   xr   s     r   	<genexpr>zmain.<locals>.<genexpr>   s9      &V&Vqry4RT	'B'B&V&V&V&V&V&Vr   no_cta_marker_titlec                 :    g | ]}|                                 |S r   )striprI   rb   s     r   
<listcomp>zmain.<locals>.<listcomp>   s%    "U"U"U17799"U1"U"U"Ur   z\n\s*\n<   paragraphs_present i^  u   tôigau   tàuvaliu	   hành lýu   vé)u   mấtu   thất lạcu   biến mấtc              3   N   K   | ]}t          fd |D                       V   dS )c              3       K   | ]}|v V  	d S r   r   )rI   rb   firsts     r   rc   z!main.<locals>.<genexpr>.<genexpr>    s'      /F/FqU
/F/F/F/F/F/Fr   N)any)rI   grp   s     r   rc   zmain.<locals>.<genexpr>    s@      +`+`1C/F/F/F/FA/F/F/F,F,F+`+`+`+`+`+`r   opener_comprehension_lexicalz1\b(?:api|usb|email|deadline|ceo|server|startup)\bjargon_budget)u   Tạ Minh Ýu   Minh Ýu   Giang Tự Hànhu
   Tự Hànhu   (?<![\wÀ-ỹ])u   (?![\wÀ-ỹ])z<TEN_HOP_LE>u4   (?<![\wÀ-ỹ])(?:Ý|Hành|Tạ|Giang)(?![\wÀ-ỹ])r   2   no_one_syllable_aliasesu	   [.!?…]+c              3   "   K   | ]
}|d k    V  dS )(   Nr   )rI   rK   s     r   rc   zmain.<locals>.<genexpr>-   s&      !A!A1!B$!A!A!A!A!A!Ar         sentence_breathing)zcreative-options.jsonzstory-brief.jsonzoutline.jsonzledger.jsonscript	artifact_zartifact_creative-options.jsonzscript/creative-options.jsonselected_scorewinning_scorescoreselectedwinnertotal_score]   premise_score_at_least_93      z*/story/story-canon.txt)encodingrN      )projectr)   r   exact_12gram_matchesfivegram_jaccard
   c                 8    g | ]}d                      |          S )rk   )joinrg   s     r   rh   zmain.<locals>.<listcomp>?   s"    <w<w<wQSXXa[[<w<w<wr   c                 "    | d         | d         fS )Nr   r   r   )rb   s    r   <lambda>zmain.<locals>.<lambda>@   s    "8 9!<N:OP r   )keyreverselocal_corpus_scanned!no_exact_12gram_with_other_canonsc                     g | ]
}|d          S r   r   rg   s     r   rh   zmain.<locals>.<listcomp>C   s    .Z.Z.Zq1C/D.Z.Z.Zr   )defaultgMb`?max_fivegram_jaccard_below_002passedfailedzqstory, dialogue, TTS text, continuity, reveal and local originality; no Voice/Listening Test by current authority)
schema_versionr7   r8   statusverifiedcandidate_sha256
word_countscopechecks
created_atzaraw local canon scan; exact normalized 12-gram plus fivegram Jaccard and locked eight-axis reviewzHall readable story/story-canon.txt under shared HaTramAudio project rootF)candidate_hash_stabler   r   r   eight_axis_distinctoriginality_scope_honest)r   r7   r8   r   r   r   methodr   external_corpus_scannedr   comparisonsexact_match_examplesr   zscript/story-qa.jsonzscript/originality-report.jsonc                     g | ]	\  }}||
S r   r   )rI   rD   rE   s      r   rh   zmain.<locals>.<listcomp>I   s"    ?e?e?ecacd?e?e?e?er   )r   r   r   )r/   zstory/story-canon.txtzstory/spoken-narration.txtzraw promotion mismatch	completedz%audio/story-full.wav after production)r   r7   r8   r   r   canon_sha256source_canon_sha256spoken_narration_sha256r   r   bytesduration_authorityvoice_test_removedlistening_test_removedr   zscript/promotion-report.jsonzscript/project-manifest.jsonr   story_word_countstory_promotedr   
updated_atc                     g | ]
}|d          S r   r   rg   s     r   rh   zmain.<locals>.<listcomp>P   sH      \H  \H  \H  wx  ]^  _q  ]r  \H  \H  \Hr   )r   r   r   r   canons_comparedmax_fivegram_jaccard);r"   CAND
read_bytesdecodeunicodedata	normalizeendswithr   r_   ra   rQ   r   r`   rq   splitr   allsubescapefinditerappendrP   startminendsumr;   is_filer2   r:   r<   rA   
isinstanceintfloatdictrR   sortedBASEglobr   	Exceptionr&   strroundextendlistsortvaluesr   r   r=   r>   r5   printr3   r@   r,   rB   )&rawr   wc	forbiddenrequired_groupsmasked	full_name
alias_hitshitsentence_lengthssrK   r&   optr   r   rL   c12c5r   exact_examplespotherowo12o5interjr   stamphstoryqaorig	promotionmpathmrp   r   s&                                       @@r   mainr      s
   T__CJJwx$@$@t
+*?d*K*KT*QF5Me,,XZXabklpqsquXvXvTvV4R-Sd$////E////VL)#%9-qrvwyw{|~  }A  xA  $B  $B   B Y  Y  Y#&&V&V&V&VI&V&V&V#V#VV!"U"Ubhz$.G.G"U"U"UVVXZZ
xxdDSD!""(D=&)=ugFmFmFmn(++`+`+`+`P_+`+`+`(`(`&'Y'[\`acaefffL a aY	"29Y#7#778II.Y_	`	`&&KOPVWW Q QSF3qR00S[[21N1NNOPPPP'1>!"
(<
%
% " "QaMM!!q!!!!!A!A0@!A!A!AAA3qM]I^I^`cIcCdCddV : :T M$.7799&T	FLMmFnvTZ44??AABBBtv
ww  PCGGO$<$<P@P@P5#e%% Z77:9#''("3"39r(YX\\'%:%:%Yhll=>Y>Yu%/s5k%B%B%Puby#$	$KKVBr]]fRll2r;QS.
455
6
6 y yQ	QYxKKK))eU5\\""	88Rmm#vb||B#c'EC2JJs1SBZZ?P?P4P!	! 1QBgjkpgqgq  FK  LM  NO  FP  FP  Q  Q  R  R  R
xs>""2%%n&;&;<w<wRVW\R]R]^u_abeftbubu_u^uRv<w<w<w&x&x&xPPY]^^^ #K 0 0" 41?-?+,*-.Z.Zk.Z.Z.Zcd*e*e*efk*k()FMMOOCEEeYs^^1#sPVDdHH\dpv  KL  Z\  eX  bh  v{  
|  
|sCVAaYams  HI  Sv  I  di  LP  hn  oE  hF  kq  rU  kV  x~  _	  x`	  w	}	  ~	Y
  w	Z
  v
z
  s{
  s{
  JU  m{  IN  O  OT((111+dCc>cdh2i2i2i E
X2?e?eV\\^^?e?e?efftyzzz{{{  DE  DEd**3///TB^=^_b0c0c0c	
!!--//44>Z9Z8f8f8h8hjm8m8m  uA  BZ  u[  u[  o[Ck]aqr  JK  fg  {|  JL  UX  Y\  U]  U]  sZ  pt  NR  `e  f  fT00;;;**TZ8I8I-J-J1]^1^K\uw_`as_t  EUxy  {C  yD  fk  VW  Xd  Ve  lw  x}  ~  l@  l@  l@tzK4R[\ors~oo  X[  \H  \H  |G  \H  \H  \H  QR  XS  XS  XS  T  T  bg  h  h  h  i  i  i  qr  qrs   %S??
TT__main__)pathlibr   r   r   r2   r(   r   r   r;   r   r>   r&   r=   r?   r   r   r   r   r,   r5   r"   rR   r   __name__
SystemExitr   r   r   <module>r      s.         3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3	T
RSS	T
455#S&E	,s?* ` ` ` 6 6 6 R R RL L L k k k? ? ? O N N<r <r <rz Zjj000r   