diff --git a/troubleshooting/251023_admin_rb8001_콜드메일_밸류에이션_UNKNOWN_의도.md b/troubleshooting/251023_admin_rb8001_콜드메일_밸류에이션_UNKNOWN_의도.md new file mode 100644 index 0000000..2b43598 --- /dev/null +++ b/troubleshooting/251023_admin_rb8001_콜드메일_밸류에이션_UNKNOWN_의도.md @@ -0,0 +1,50 @@ +# rb8001 콜드메일 요약: 밸류에이션 고정 표기 및 UNKNOWN 라우팅 개선 + +**날짜**: 2025-10-23 +**작성자**: admin +**관련 파일**: `rb8001/app/services/startup_valuation.py:433-456`, `rb8001/app/services/workflows/coldmail_workflow.py:124-127`, `rb8001/app/services/coldmail_processor.py:444-452`, `rb8001/app/brain/decision_engine.py:105-120` + +--- + +## 문제 상황 +- 콜드메일 요약 메시지에 “IR자료: 30.0억원 (신뢰도 60%)”로 표기되어 밸류에이션이 ‘고정’처럼 인지됨. + - 증거: `rb8001/logs/rb8001.log:66827-66830` — seed prior(30)만으로 Posterior 산출, IR 지표 없음 → `Insufficient IR metrics; ... HOLD` 로 기록. + - 원인: `startup_valuation.py:433-456` — 증거 0개면 DB 저장을 보류(HOLD)하되 결과 수치 자체는 prior 기반으로 남음. 요약 메시지(`workflows/coldmail_workflow.py:124-127`)는 HOLD/근거 부재를 표시하지 않음. + +- 스레드 후속 질문(“지에프 솔루션 … 설명해줘”, “30억 고정 이유”)이 UNKNOWN 의도로 처리되어 일반 답변으로 하향. + - 증거: `rb8001/logs/rb8001.log:66861, 66916, 66920` — DecisionEngine UNKNOWN. + - 원인: `decision_engine.py:114-120` — 웹검색/설명 패턴에 `.*대해서.*설명`은 있으나 “에 대해 설명해줘”/“설명해줘”/“이유”/“기업가치|밸류에이션|30억” 조합이 부재. + +--- + +## 해결 방안 +1) 표시 개선(오해 방지) + - `coldmail_processor.py:444-452`: 반환 dict에 `valuation_result.metadata`의 핵심 키를 포함하도록 확장: `status`(hold), `missing_fields`, `prior_components.stage_prior.median` 등. + - `workflows/coldmail_workflow.py:124-127`: HOLD이면 “초안(HOLD·사전값 seed 30)”로 라벨링하고 범위(하한~상한)와 누락지표를 함께 표기. 예) `- 지에프솔루션: 초안(HOLD·seed 30) [필요: revenue, growth_rate, team_size]`. + +2) 라우팅 보강(의도 인식 향상) + - `decision_engine.py:114-120`(WEB_SEARCH) 및/또는 `decision_engine.py:105-109`(DOCUMENT_ANALYSIS) 패턴에 다음 추가: + - `.*에 대해.*설명해줘`, `설명해줘`, `이유`, `(기업가치|밸류에이션|valuation|30억)` + - 선택: 별도 Intent(예: `valuation_explain`)를 도입해 최근 평가 메타데이터를 근거로 “왜 30억인가(HOLD·seed prior)”를 설명하도록 연결. + +3) 데이터 수집 루프(정확도 개선) + - HOLD 시 누락 지표(revenue, growth_rate, team_size, tech_advantage)를 안내하고 입력(또는 파일 보강) 후 재평가를 트리거. Slack 버튼/모달은 향후 작업으로 분리 문서화. + +--- + +## 재현/검증 절차 +- HOLD 확인: `rb8001/logs/rb8001.log`에서 `Insufficient IR metrics` 검색. + - 예: `rg -n "Insufficient IR metrics" rb8001/logs/rb8001.log` +- UNKNOWN 확인: 동일 로그에서 `의도 매칭 실패 - UNKNOWN` 검색. + - 예: `rg -n "의도 매칭 실패 - UNKNOWN" rb8001/logs/rb8001.log` +- 코드 기준선: + - HOLD 라벨 미표시: `workflows/coldmail_workflow.py:124-127` + - 설명/이유 패턴 부재: `decision_engine.py:114-120` + +--- + +## 교훈 +- 지표 부재(HOLD) 상태의 수치 표기는 ‘초안’/‘사전값’/‘근거’와 함께 명시해 오해를 방지해야 한다. +- 사용자 표현(“설명해줘/이유/30억/밸류에이션”)을 패턴에 반영하지 않으면 의도 인식 실패로 품질이 하락한다. +- 로그 근거(KST, 파일/라인)와 코드 기준선을 함께 정리하면 재현/수정/검증 사이클이 빨라진다. +