
    Zj                         d Z ddlZddlZddlZddlZddlZdZdZej                  j                  d      Z
ddg dfd	d
g dfddddgfddddgfddg dfgZdZd Zd Zedk(  r e        yy)u  
tree_forge.py — 증상 기반 판단트리 생성기 [CEO 설계 2026-07-19]

CEO 설계 사상 (원문 요지):
  현장은 교과서(문제→원인→대응) 순서로 안 움직인다. 장인은
  증상 → 의심 → 확인 → 판단 → 조치 순서로 간다. AI는 문서를 읽는 게 아니라
  판단트리를 먼저 타고, 판단이 끝나면 그때 패턴노트를 읽고, 마지막에 사례를 붙인다.
  질문 → 판단트리 → 패턴노트 → 사례검색 → 최종답변.

동작:
  패턴노트 8장 + 결함 사례를 재료로, 페이블이 증상군별 판단트리를 만든다.
  각 트리: "작업자가 보는/말하는 증상"에서 출발 → 예/아니오 질문으로 좁힘 →
  후보 원인을 가능성 높은 순으로 하나씩 제거 → 각 갈래 끝에 참조할 패턴노트 명시.
  저장: E:\VLA시스템\KNOWLEDGE\_판단트리\TREE-증상군.md (지식서버 자동 인덱스, TREE- 최우선 가중치)

실행: python tree_forge.py
    Nu'   E:\VLA시스템\KNOWLEDGE\_패턴씨앗u'   E:\VLA시스템\KNOWLEDGE\_판단트리z~\.local\bin\claude.exeu   구멍-터짐uD   구멍이 났다 / 뚫렸다 / 쇳물이 흘러내렸다 / 터졌다)u   용락	   갭관리   토치각도u   비드-이상ud   비드가 솟는다 / 퍼진다 / 파인다 / 지저분하다 / 그라인더를 많이 쓰게 된다)   비드불량u	   언더컷r   r   u   금-갈라짐u?   금이 갔다 / 갈라졌다 / 검사에서 결함이 나왔다u   크랙u   기공u
   치수-휨uF   치수가 안 맞다 / 휘었다 / 클램프 풀었더니 틀어졌다u	   열변형r   u   속-안붙음uI   속이 안 붙었다 / 떼보니 안 붙어 있다 / 용입이 안 됐다)r   r   r   u  너는 용접·제관 30년 장인의 진단 사고를 판단트리로 옮기는 정제자다.
작업자가 "%s" 라고 말하는 상황에서, 장인이 머릿속으로 타는 예/아니오 질문 트리를 만들어라.
재료는 아래 패턴노트들이다. 패턴노트에 있는 사실·수치·사례만 사용하라(지어내기 금지).
규칙:
- 트리는 증상에서 출발한다. 원인 나열이 아니라, 가능성 높은 것부터 하나씩 제거하는 순서다.
- 각 질문은 작업자가 그 자리에서 답할 수 있는 것만 (눈으로 보거나, 재거나, 설정값을 읽어서).
- 질문마다 "왜 이걸 먼저 묻는지" 한 줄 이유를 붙여라.
- 각 갈래의 끝에는: 의심 원인 → 바로 할 조치 → 참조할 패턴노트 이름을 적어라.
- 수치를 쓸 땐 출처 제품을 병기하고 "다른 제품에 그대로 적용 금지" 안전장치를 붙여라.
- 용접 모르는 사람도 읽게: 전문용어에 쉬운 말 병기.
출력(마크다운):
# %s — 현장 판단트리
> (서문 2~3문장: 언제 이 트리를 타는지)
## 트리
(Q1부터 들여쓰기 텍스트 트리. 각 Q에 [이유] 한 줄)
## 갈래별 결론표
(의심원인 | 즉시 조치 | 참조 패턴노트)

[패턴노트들]
%sc                     t        j                  t        dddg| j                  d      dd      }|j                  j                  dd	      j                         }|j                  d
k7  s|st        d      |S )Nz-pz--modelzclaude-fable-5utf-8Ti,  )inputcapture_outputtimeoutignore)errorsr   u   fable 실패)	
subprocessrun
CLAUDE_EXEencodestdoutdecodestrip
returncodeRuntimeError)promptrouts      tree_forge.pyfabler   3   si    
D)5EFfmm\cNd&*C	9A
((//'(/
3
9
9
;C||q<+G%GJ    c            
        	 t        j                  t        d       t        j                  t         j                  j                  t        d            D  ci c]e  } t         j                  j                  |       j                  dd      j                  dd      t        j                  | d      j                         g c} 	t        D ]  \  }}}t         j                  j                  t        d	|z        }t         j                  j                  |      rt        d
|z         \dj                  	fd|D              }	 t        t         |||fz        }dt#        j$                  d      ddj                  |      d}t        j                  |dd      j'                  ||z          t        d|        t        d       y c c} w # t(        $ r(}t        d|dt+        |      d d        Y d }~,d }~ww xY w)NT)exist_okzPATTERN-*.mdzPATTERN- z.mdr   )encodingz
TREE-%s.mdu%   [tree] %s 이미 존재 — 건너뜀z

c              3   D   K   | ]  }|v sd |d|   dd   yw)z### PATTERN-
Ni   ).0r   notess     r   	<genexpr>zmain.<locals>.<genexpr>C   s,     gTXq\]af\fq%(5D/JTXs   	  u"   <!-- 자동 정제: tree_forge.py z%Y-%m-%du    | 재료: 패턴노트 ,u    | CEO 검토 전 -->
wu   [tree] 생성:u   [tree] 실패 z: P   u1   [tree] 완료 — 지식서버 /api/reload 필요)osmakedirsOUT_DIRglobpathjoinPATTERN_DIRbasenamereplaceioopenreadSYMPTOM_GROUPSexistsprintr   PROMPTtimestrftimewrite	Exceptionstr)
pkeysymptomrefsout_pmaterialmdheader$   s
            @r   mainrG   ;   s   KK$'ii[. IJLJ WWa ((R8@@KRWWUVahMiMnMnMppJLE,WdWlS&8977>>% 9C?@(;;gTXgg	?v'8 <<=B}}Z0#((4.BDGGE3177r	B"E* - 

=>L  	?CQ=>>	?s    A*G A6G			G:G55G:__main__)__doc__r)   r2   r,   r   r9   r/   r+   r-   
expanduserr   r5   r8   r   rG   __name__r"   r   r   <module>rL      s   " & % %8
4WW :;
 ^  aH  I~  A{  |Y\dfn[op_bmoza{|c  fS  T""?( zF r   