
    `j                         d dl Z d dlZd dlmZ  ee                                          j        d         Zh dZh dZ	dZ
dZd Zd	 Zed
k    r ej         e                       dS dS )    N)Path   >      Yếu tố high-concept$   Hào môn / tổng tài / liên hôn$   Thanh mai trúc mã / nuôi từ bé)   Ngôn tình học đường / thanh xuân0   Cưới trước yêu sau / hôn ước từ bé5   Trà xanh / bạch nguyệt quang / người thứ baA   Thiên kim thật–giả / gia đình phản diện / trở về>   hookclimaxcrisisendingmidpointearly_escalationinciting_incidentcounterfactual_test)u   hôn ướcu
   hôn nhânu   nghĩa vụu   điều khoảnu   ly hônu   lựa chọn)u   cao trào nghề nghiệpu   tranh chấp cộng đồngu   điều tra hình sực                 b    t          j        t          | z                      d                    S )Nzutf-8)encoding)jsonloadsPROJECT	read_text)rels    /data/video-pipeline/Chanel-HuyenAnAudio/project/016-Ngay-Chung-Toi-Nop-Don-Ly-Hon-Anh-Dua-Toi-Ban-Hon-Uoc-Khong-Con-Dieu-Khoan-Nao/script/validate-family-causal.pyloadr      s'    :w}///AABBB    c                     t          d          } t          d          }t          d          }g }|                     d          }|t          vr|                    d           ||                    d          k    s||                    d          k    r|                    d           |                    di           }t                              |          s|                    d	           t          d
hz
  D ]o}t          |                    |d                                                    t          fdt          D                       s|                    d|z              pt          |                    d
d                                                    }d|vsd|vr|                    d           |                    dg           }t          d |D                       }	|r|	t          |          z  dk     r|                    d           t          j        | ||dd                                          }
t          D ]\}||
v rV|t          j        |                     dg           d                                          vr|                    d|z              ]| |dt          t                    |r|	t          |          z  nd|d}t          t          j        |d                     |sdndS )Nzscript/story-brief.jsonzscript/family-causal-map.jsonzscript/story-outline.jsonprimary_story_familyfamily_not_in_closed_taxonomyfamilyfamily_binding_mismatch
causal_mapcausal_milestones_missingr    c              3       K   | ]}|v V  	d S )N ).0termvalues     r   	<genexpr>zmain.<locals>.<genexpr>+   s'      ::T45=::::::r   zfamily_engine_not_explicit:u   sụpu   không thể thaycounterfactual_not_fail_closedbeatsc              3      K   | ]Ft                              d                     ot          fdt          D                       V  GdS )family_functionc              3   P   K   | ] }|d                                           v V  !dS )r/   N)casefold)r(   r)   rows     r   r+   z!main.<locals>.<genexpr>.<genexpr>1   s[        @D  @DnrL]H^HgHgHiHi@i  @D  @D  @D  @D  @D  @Dr   N)boolgetanyFAMILY_TERMS)r(   r2   s    @r   r+   zmain.<locals>.<genexpr>1   s        V  V  ILtCGG$56677  DC  @D  @D  @D  @D  wC  @D  @D  @D  =D  =D  V  V  V  V  V  Vr   g?,family_causal_beat_coverage_below_80_percent)briefmapoutlineF)ensure_ascii	forbiddenzsupporting_layer_dominates:Tr   )verifiedr   taxonomy_closed
milestonesfamily_beat_coverageissuesr   )r   r4   ALLOWEDappendREQUIRED_MILESTONESissubsetstrr1   r5   r6   sumlenr   dumpsFORBIDDEN_DOMINANTprint)r8   fmapr:   rA   r!   causal	milestonecounterfactualr-   family_beatscombinedphraseresultr*   s                @r   mainrT      s+   *++E/00D.//GFYY-..FW566601111Vw{{8?T?T5T5T/000XXlB''F''// 31222(,A+BB E E	FJJy"--..7799::::\::::: 	EMM7)CDDD$92>>??HHJJNn$$(;>(Q(Q6777KK$$E  V  V  PU  V  V  V  V  VL FL3u::-33DEEEzE$7KKZ_```iikkH$ B BX&
599[RT;U;Udi0j0j0j0s0s0u0u"u"uMM7&@AAAJ &-..=B Is5zz 9 9 F 
$*V%
0
0
0111!11!r   __main__)r   syspathlibr   __file__resolveparentsr   rB   rD   r6   rJ   r   rT   __name__exitr'   r   r   <module>r]      s     



      
$x..
 
 
"
"
*1
-      jk C C C%" %" %"P zCHTTVV r   