
    j0              	         d Z ddlmZ ddlZddlZddlmZ ddlmZ  ee	      j                         j                  Z ej                  edz  j                  d            Z ej                  ed	z  j                  d            Z ej                  ed
z  j                  d            Zedz  Zh dZddddddddddddgddddddddddddddddddgd Zd(d!Zd)d"Zd*d#Zd+d$Zd,d%Zd-d&Zed'k(  r e        yy).zNMerge public seller evidence, POM supplier evidence, and chainbook provenance.    )annotationsN)defaultdict)Pathzcandidates-v0.jsonutf-8encodingzdomestic-public-listings.jsonzpom-supplier-evidence.jsonzchain-audit-2026-08-21.json>      본사   (VTN재고)   (본사재고)VTNzH SILVERu9   실버925 라운드 스네이크 2mm 뱀줄 팔찌 SBF102z"https://hsilverstore.com/?idx=1212finishedzexact public web search)sellertitleurllisting_typesourceu   클로첼(지그재그 입점)u8   실버925 납작 뱀줄 목걸이 스네이크 라운드z,https://zigzag.kr/catalog/products/145686439u	   젬비즈u2   완성목걸이 (미라볼체인) 3mm | 실버92.5zBhttps://www.gembeads.co.kr/shop/shopbrand.html?mcode=007&xcode=014z)exact public web search; category listingu   코리아쥬얼리u%   3mm 미라볼컷팅 체인 14k 팔찌zMhttps://www.koreajewelry.co.kr/shop/shopdetail.html?branduid=718577&special=3u   DODOJEWELRY(G마켓)u6   14k/18k Chain Collection — 16_미라볼체인 선택z1https://mg.gmarket.co.kr/Item?goodsCode=777694330)u   스네이크라운드체인u   미라볼체인c                    | j                         j                  dd      j                  dd      } t        j                  dd|       S )Nu   커팅u   컷팅u   비형u   b형u   [^0-9a-z가-힣]+ )lowerreplaceresub)values    0.runtime/chain-catalog-data/build_chain_audit.py	normalizer   ?   s;    KKM!!(H5==hOE66&E22    c                    | j                  dd      j                  dd      j                  dd      }t        j                  d|      ry|dv ryt        j                  d	| t        j                        ryy)
Nu   목걸이 재료r   u   팔찌 재료u   발찌 재료u.   목걸이|팔찌|발찌|완성|프리메이드r   >      KJF한국주얼리부속   금속공예공구(GMTOOL)rawu4   1m|1미터|50cm|미터체인|단위 판매|체인 \()r   r   searchI)r   r   product_titles      r   r   r   D   sl    MM"4b9AA/SUV^^_nprsM	yyBMRKK	yyH%QSQUQUVr   c                    t        |d         t        |       g|D cg c]  }t        |       c}}t        fd|D        d      }t        |d   |d         dk(  rdnd}|| t        |d         |d   fS c c}w )Nr   c              3  D   K   | ]  }|s|v st        |        y wNlen).0termr   s     r   	<genexpr>zmatch_score.<locals>.<genexpr>R   s     GtTGs      r   )defaultr   r      )r   maxr   r(   )namealiaseslistingaliastermsexactfinished_penaltyr   s          @r   match_scorer6   O   s    gg&'Et_GgFU	% 0FGEGuGQRSE()978;LMQ[[qabufc''*:&;WW=MNN  Gs   A:c                V    t        t              }|D ]  }||d      j                  |        g }t        |j	                               D ][  \  }}t        | fd      d   j                         }t        |d   |d         |d<   t        |      |d<   |j                  |       ] |S )Nr   c                    t        |       S r&   )r6   )itemr0   r/   s    r   <lambda>z)representative_listings.<locals>.<lambda>]   s    D'SW8X r   )keyr   r   r   matched_product_count)r   listappendsorteditemscopyr   r(   )	r/   r0   listingsgroupedr9   resultr   seller_listingsbests	   ``       r   representative_listingsrG   W   s    $G -X&&t,-F#)'--/#: o+XYZ[\aac+DM4>J^(+O(<$%d	
 Mr   c                n    t        |       dk\  ryt        |       dk(  r|ryt        |       dk(  ry|ry|ryy)	N   )u(   복수 국내 부자재 판매처 확인u   포함 우선r-   )u/   국내 부자재 1곳 + 사내 공급처 확인u   포함 검토)u&   국내 부자재 판매처 1곳 확인u   단일 판매처 명칭 검토)u   사내 공급처만 확인u%   현재 주문 가능 여부 재확인)u   완제품 판매명만 확인u"   부자재 조달 확인 전 보류)u   현재 조달 근거 미확인u   보류r'   )raw_sellersfinished_sellersinternal_supplierss      r   
status_forrM   d   sD    
;1J
;1!3Q
;1YTT5r   c                    t         d   D  cg c]  } | d   D ]  }|  }} }t        d   D ci c]  }|d   |
 }}t        d   D ci c]  }|d   |
 }}g }t        |d      D ]  \  }}|d   }|j	                  dg       }	t        ||	||   d         }
|
j                  t        j	                  |g              t        ||   d   D ch c]  }|t        vr| c}      }t        |
D ch c]  }|d	   d
k(  s|d    c}      }t        |
D ch c]  }|d	   dk(  s|d    c}      }t        |||      \  }}|j                  |||	||   d   |||
|t        ||   d         d|j	                  dg       v ||dd        t        t              }|D ]  }||d   xx   dz  cc<    dddddddddt        d   t        |      |d}t         j#                  t%        j&                  |dd !      d"#       t)        d$t          d%t        |       d&       t)        t%        j&                  |d'   d(             y c c}} w c c}w c c}w c c}w c c}w c c}w ))Ncandidate_groupsr@   rowsr/   r-   r0   public_listingsinternal_supplier_namesr   r    r   r   searched_termsmatched_recordschainbook_6sourcesuh   판매처 사진·설명·상품코드 비복제; 독자 촬영 또는 별도 생성 이미지만 사용)indexr/   r0   rS   public_raw_sellerspublic_finished_sellersrG   rR   internal_supplier_record_countchainbook_evidencestatusrecommendationpublication_asset_ruler\   u1   TN 체인 카탈로그 국내 조달 전수조사z
2026-08-21u   77개 후보 중 국내에서 실제 조달 근거가 있고 공개 카탈로그 후보로 검토할 수 있는 체인은 무엇인가?u   국내 5개 부자재 판매처의 체인 카테고리 1,388개 상품명·직접 URL 대조; 미확인 24개는 이름·별칭 exact web search 추가uj   POM 운영 DB를 read-only로 조회하여 POM 자체가 아닌 실제 supplier organization 명칭 추출u`   TN 체인북은 이름·형태 참고 근거로만 사용하며 판매처로 계산하지 않음uK   동일 업체의 복수 도메인·입점 채널은 한 판매처로 계산uv   로그인 뒤 재고, 전화 주문 가능 여부, 비공개 도매 거래는 공개 웹만으로 확정할 수 없음)publicinternal	chainbookseller_countlimitsseller_counts)r   
checked_ondecision_questionmethodcatalog_scopestatus_countsrP   FrI   )ensure_asciiindentr   r   zwrote z (z rows)ri   )rj   )SOURCEPUBLICPOM	enumerategetrG   extendSUPPLEMENTARYr?   INTERNAL_ORGSrM   r>   r(   r   intdictOUTPUT
write_textjsondumpsprint)groupr9   source_itemsrowpublic_by_namepom_by_namerP   rW   r/   r0   r_   supplierrL   entryrJ   rK   r\   r]   countsrD   s                       r   mainr   r   s   &,-?&@\UUSZ^\TD\D\L\28.A3c&k3&ANA/26{;3v;#;K;D q1 tF|((9b)(wt8LM^8_`m''b12#%0%67P%Q%
!}, %
  6d%U>EZ^cEceHode!"nu%P^J_cmJm5?"no!+K9IK]!^,T23CD"-'7'-'9.1+d2CDU2V.W"/488Ir3J"J, 'Q
 	8 F #s8}"# E" g p E{i O
  0fF djjeAFQXY	F6("SYKv
./	$**VO,5
ABi ]A;%
 e"ns.   H;II
I
+I
9I
I
I
__main__)r   strreturnr   )r   r   r   r   r   r   )r/   r   r0   	list[str]r1   ru   r   ztuple[int, int, int, str])r/   r   r0   r   rB   
list[dict]r   r   )rJ   r   rK   r   rL   r   r   ztuple[str, str])r   None)__doc__
__future__r   rx   r   collectionsr   pathlibr   __file__resolveparentHEREloads	read_textrl   rm   rn   rv   rs   rr   r   r   r6   rG   rM   r   __name__ r   r   <module>r      sc   T "  	 #  H~&&	T00;;W;M	N	T;;FFPWFX	Ydjj$55@@'@RS	-	-B
 !P7&/	
 7OA&/	
$$ "IW&A	
 +<b&/	
 -MF&/	
#(V3
O
65Cp zF r   