
    Zj                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZ dZg dZ	dZ
d Zd Zd	 Zed
k    r e             dS dS )    N)Path)Countergacmai_20260718_075153u   Võ Thanh Hàu   Nguyễn Hữu Duyu   Trần Mộc Lanu   Lê Quang Vinhu   Phạm Ngọc Thưu   Đỗ Minh Khang)P01BP02BP03BP04BP05BP06BP07BP08BP09BP10BP11BP12Bu   nhịp kế tiếpu   dòng ghi riêngplaceholdertodou   ghi chú biên tậpc                 r    t          j        |                                                                           S N)hashlibsha256
read_bytes	hexdigest)ps    c/data/video-pipeline/GacMaiAudio/project/gacmai_20260718_075153/artifacts/scripts/validate_story.pyshar      s%    '.00::<<<    c                 ^    t          t          j        d| t          j                            S )Nz\b\w+\b)flags)lenrefindallUNICODE)ss    r   wordsr&   	   s"    C
:abjAAABBBr   c                     t          t          j                  dk    rt          d          t	          t          j        d                   } t          j        d         }t          j        |                                           }g }|                    d          t          k    r|
                    d           |                    d          |k    r|
                    d           |                    dg           }g }t          |          d	k    r%|
                    d
t          |                      t          |d          D ]\  }}|                    dg           }t          |          d	k    r(|
                    d| dt          |                      |D ]p}	t          |	t                    r7|
                    t          |	                    dd                               N|
                    t          |	                     qt          d |D                       }
d|
cxk    rdk    sn |
                    d|
            t          |          dk    r%|
                    dt          |                      t          d |D                       }|r|
                    d|            d                    |          }t"          D ]B}|                                |                                v r|
                    d|            Ct'          t)          j        d|                    }t'          t,                    ddhz  t/          fd|D                       }d |D             }d t1          |                                          D             }|r%|
                    d t          |                      |sd!nd"t          t          |           t5          |           |t          |          t          |          |
|t          |          |d d#         |d$}t7          t          j        |d%d&                     t          |sd'nd          )(N   z3usage: validate_story.py STORY EXPECTED_OUTLINE_SHA      
project_idsource_outline_sha256outline_bindingparts   zparts=
paragraphspart_z_paragraphs=text c              3   4   K   | ]}t          |          V  d S r   )r&   .0xs     r   	<genexpr>zmain.<locals>.<genexpr>   s(      
#
#588
#
#
#
#
#
#r   i6  i:  zwords=   zparagraphs=c              3   p   K   | ]1}t          t          j        d |t          j                            V  2dS )u   (?<!\w)(?:tôi|ta|mình)(?!\w)N)r!   r"   r#   Ir5   s     r   r8   zmain.<locals>.<genexpr>   s<      [[PQ#bj!B1RTJJKK[[[[[[r   zfirst_person=
z	scaffold:uB   \b[A-ZÀ-ỸĐ][a-zà-ỹ]+(?:\s+[A-ZÀ-ỸĐ][a-zà-ỹ]+){1,3}\bu   Hội đồng Rà soát Huyệnu   Hội đồng rà soát huyệnc              3   N   K   | ]}|v|                     d           |V   dS )r   N)
startswith)r6   r7   alloweds     r   r8   zmain.<locals>.<genexpr>"   sW        C  CQ(8(8  OA  BB  BB(8q(8(8(8(8  C  Cr   c                     g | ]<}t          j        d d|                                                                          =S )z\s+ )r"   sublowerstripr5   s     r   
<listcomp>zmain.<locals>.<listcomp>$   s:    ;;;rvfS##))++;;;r   c                 $    g | ]\  }}|d k    |S )r)    )r6   kvs      r   rE   zmain.<locals>.<listcomp>%   s!    77731Q1Q33Q333r   zexact_duplicate_paragraphs=passedfailedd   )statusr+   
story_pathstory_sha256outline_sha256r.   r0   r&   first_personexact_duplicate_paragraphs"named_phrase_candidates_for_reviewerrorsF)ensure_asciiindentr   )r!   sysargv
SystemExitr   jsonloads	read_textgetPROJECTappend	enumerate
isinstancedictstrsumjoinSCAFFOLDrC   setr"   r#   CASTsortedr   itemsr   printdumps)r   outline_shaderrr.   parasipartqr7   totalrQ   blobr%   
candidatesextrasnorm
exact_dupsoutr?   s                      @r   mainr{   
   s   MM1:&[\\\![tz!++--/H/HQREE,  L!9!9!9EE
!""K//

;L0M0M0MuuWRrJJNN3::3s5zz33444q!!  VQtHH\"!VVRZZ

:1::#a&&::;;;  a4 c!%%r*:*:&;&;<<<<SVV 
#
#U
#
#
###ueCJJ'7'7'7888JJOOCJJ9SZZ99:::[[UZ[[[[[;:L::;;;
ii
 ; ;QWWYY$**,,szz/a//:::
`aeffgg	T56WX	X  C  C  C  C*  C  C  C  	C  	C;;U;;;77'$----//777JszzIJIIJJJ"0xxgSVWXSYSYilmnioio  BM  VY  Z_  V`  V`  nq  rw  nx  nx  AF  Vb  @C  DN  @O  @O  u{  |@  }@  |@  uA  KN  O  Otz#5222333*cEXQQWX:Y:Y4Yr   __main__)rZ   r   r"   rW   pathlibr   collectionsr   r^   rh   rf   r   r&   r{   __name__rG   r   r   <module>r      s                                www 
s < < < B B BZ Z Z> Zr   