---
task_id: task-2429
type: context
scope: task
created: 2026-05-03
updated: 2026-05-03
status: in-progress
---

# 맥락 노트: task-2429

**task**: task-2429

---

## 결정 근거

### 핵심 결정 1: task-2423 코드를 베이스로 부활 + Trace 로그 추가
- 회장이 task-2423을 revert한 이유 = silent fail로 회장에게 단서 부족 (task 파일 본문이 명시)
- task-2423 셀렉터(#companyInfo, #bojang_lists, #premium_lists) 자체는 회장 F12 캡처로 검증 OK
- 따라서 셀렉터는 그대로 유지하고 **단계별 trace + 명확한 alert** 만 추가
- **대안 기각**: 처음부터 다시 작성 → 회장 검증 데이터 낭비, 동일 결과 가능성 높음

### 핵심 결정 2: Trace prefix `[InsuRo Helper Trace]`
- 기존 `[InsuRo Helper]`와 구분 (이번 task 임시 추적용)
- task 파일 #84-87: cleanup PR은 별도 task → 본 .done 시점에는 trace 그대로 유지

### 핵심 결정 3: silent fail 시 alert에 단계 표시
- task 파일 #70-73 명시 사양: "어느 단계에서 실패했는지 표시"
- 예: "매트릭스를 찾을 수 없습니다 (#companyInfo OK, attribute 추출 0건)"
- 회장이 이 메시지만으로 봇에게 다음 단계 단서 전달 가능

## 3 Step Why 자문

**1st Why** — 왜 이 설계가 필요한가?
A: 회장 F12에서 셀렉터 3개 모두 존재 확인됐는데 alert "매트릭스를 찾을 수 없습니다"가 뜬다. 단계별 trace 로그 + 명확한 alert이 없으면 silent fail 단서를 회장에게 제공할 수 없다.

**2nd Why** — 왜 A가 최선의 접근인가?
B: 추측 4가지(분기 오류/attribute 미스매치/추출 fail/JWT 충돌) 중 어느 것이 원인인지 코드만 봐서는 단정 불가. 회장 실 DOM 검증이 필수인데, 그러려면 trace 로그가 회장 F12에 노출되어야 함. 봇이 가설 하나에 베팅하면 다시 회장 차단 위험.

**3rd Why** — 왜 B가 다른 대안보다 나은가?
C: 대안 1) "가설 1만 fix" → 50% 확률로 또 fail → 회장 시간 낭비. 대안 2) "4가지 가설 모두 fix 시도" → 코드 폭증, 어느 fix가 효과 있었는지 회장에 보고 불가. 대안 3) "trace 로그 + 단계별 alert" → 1회 시연으로 회장이 정확한 fail 단계 식별 + 다음 task에 정확 단서 전달.

A-B-C 일관성: ✅ "추측 금지 + 회장 캡처를 사실로 사용 + 단계별 진단 가능성 보장"이 모든 답변에 일관됨.

## 참조 자료

- task-2423 reverted code: `git show 0dbdd09:extension/content.js`
- 현재 content.js: `/home/jay/projects/InsuRo/extension/content.js` (revert 후 상태)
- 회장 F12 캡처 (task 파일 #16-29)
- 회장 메모리 `feedback_no_speculation_as_fact.md` (추측 금지)
- 회장 메모리 `feedback_dispatch_completion_verification.md` (4대 규칙)

## Codex 사전 검증 결과 (2026-05-03)

- source: codex_companion
- critical risks: 1건 — "현재 main에 scrapeMmlfcp* 함수가 없다" → 본 task가 도입할 항목, 의도 일치
- high risks: 2건 — table 기반 셀렉터로 mmlfcp 캡처 불가 + 회귀 테스트 부재 → 본 task 범위로 모두 해소
- medium risks: 2건 — 실패 UX 단서 부족 + build:extension 스크립트 미정의

→ Codex 리뷰의 모든 risk가 본 plan/checklist의 작업 항목과 1:1 대응. **본 task 완료 = 모든 risk 해소**.
→ build:extension 스크립트 부재는 별도 검토: `npm run build` 단일 빌드로 충분 (extension은 정적 자산 복사)

## 주의사항

- **revert 정정**: task 파일은 task-2423 머지 가정으로 작성됨, 실제로는 revert 됨. 봇은 task-2423 코드를 부활시키는 작업으로 인식해야 함.
- **변경 금지**: manifest.json, background.js, server/**, src/pages/CompositeDesign.tsx, InfoKeyword.tsx, Newsletter*, ImageEditor.tsx
- **JWT 정책 #10**: refreshInsuroButtonByJwt 흐름은 절대 변경 금지 (회장 메모리)
- **새 task 정책**: revert가 cron이 아닌 회장 직접 revert이므로, 본 task는 새 task ID로 재위임 = 회장 메모리 정합 (task-2429.md 본문 #176)
- **Trace 로그는 임시**: `[InsuRo Helper Trace]` prefix로 일반 로그와 구분, cleanup PR에서 제거 예정
