# 대시보드 최종 통합 수정 — InsuWiki탭 + 다크모드 + Sync 데이터

## ★★★ 절대 규칙 ★★★
- **worktree 사용 금지** — main 브랜치에서 직접 작업
- 수정 후 **즉시 git commit** (다른 작업에 덮어쓰여지지 않도록)
- **NaverBlogView.js, InsuWikiView.js, server.py** 3개 파일만 수정

## 수정 1: InsuWikiView.js — 정제 UI (task-1810 복구)

progress bar 닫기 버튼 + 정제 이력 동적 갱신이 사라짐.

### 1-A: handleRefineClear 함수 추가
검색: `handleRefineCancel` 함수 근처에 추가

```javascript
const handleRefineClear = () => {
    fetch('/api/wiki/refine/clear', { method: 'POST' })
        .then(r => r.json())
        .then(() => {
            setRefineStatus({ status: 'idle', progress: 0, currentStep: '' });
        })
        .catch(() => showToast('초기화 중 오류가 발생했습니다.', 'error'));
};
```

### 1-B: progress bar에 ✕ 닫기 버튼
검색: `{refineStatus.progress || 0}%` 표시 부분

퍼센트 표시 옆에 닫기 버튼 추가:
- failed/completed/cancelled 상태일 때만 표시
- `<button onClick={handleRefineClear} className="text-slate-400 hover:text-slate-600 dark:hover:text-slate-200 text-sm leading-none" title="닫기">✕</button>`

### 1-C: 미반영 건수 표시
검색: `key === 'synced'` 부분

통계 카드에서 synced 카드에 미반영 서브라인:
```javascript
{key === 'synced' && stats && stats.unsynced > 0 && (
    <p className="text-xs text-orange-500 mt-0.5 font-medium">미반영 {stats.unsynced}건</p>
)}
```

## 수정 2: Sync 데이터 복구 (task-1812/1813)

### 2-A: sync_firestore_statuses.py 실행
```bash
cd /home/jay/workspace/dashboard
python3 scripts/sync_firestore_statuses.py
```
이 스크립트는 이미 수정되어 있음:
- Sync 완료 105건만 대상
- Firestore 미발견 doc_id → 개별 조회로 승인 감지
- Sync 이전 114건 건드리지 않음

### 2-B: 검증
```bash
curl -s http://localhost:8000/api/wiki/stats
```
- approved가 13→16 이상으로 증가하면 성공
- synced=105, unsynced=114 유지

## 수정 3: NaverBlogView.js — 다크모드 색상

### 문제
실패 항목 배경이 `bg-red-50` (라이트모드용)만 적용되어 다크모드에서 밝은 베이지 배경으로 보임.

### 수정 대상
NaverBlogView.js에서 `bg-red-50` 검색 → 각 위치에 다크모드 클래스 추가.

변경 패턴:
- `bg-red-50` → `bg-red-50 dark:bg-red-900/20`
- `border-red-200` → `border-red-200 dark:border-red-800`
- `text-red-700` → `text-red-700 dark:text-red-400`
- `text-red-600` → `text-red-600 dark:text-red-400`

히스토리 항목 클릭 영역 (Line 1908 부근):
```
activeTab === 'contents' && item.status === 'failed' ? 'bg-red-50/50' : ''
```
→ `'bg-red-50/50 dark:bg-red-900/20'`

히스토리 제목 (Line 1917 부근):
```
activeTab === 'contents' && item.status === 'failed' ? 'text-red-600' : 'text-slate-700'
```
→ `'text-red-600 dark:text-red-400' : 'text-slate-700 dark:text-slate-200'`

### 주의
- 모든 `bg-red-50`에 맹목적으로 dark 클래스를 추가하지 말 것
- 실제로 다크모드에서 보이는 부분만 수정 (히스토리 리스트 영역)
- 다른 섹션(키워드 입력, 이미지 미리보기 등)의 에러 메시지도 확인하여 수정

## 검증 시나리오
1. **정제 progress bar**: 실패 상태에서 ✕ 버튼 클릭 → 사라짐
2. **미반영 표시**: INSUWIKI 반영 카드에 "미반영 114건" 표시
3. **Sync 데이터**: approved가 16건 이상
4. **다크모드 색상**: 네이버블로그 히스토리 실패 항목이 어두운 빨간 배경 (bg-red-900/20)
5. **삭제 기능**: ✕ 버튼 + 전체 삭제 정상 동작 (이미 작동 확인됨)
6. **기존 기능 회귀 없음**
