# task-803.1 완료 보고서

## SCQA

**S**: 대시보드에 MktingAuto가 별도 탭(`mktingauto`)으로 존재하며, 프로젝트별 현황을 한눈에 볼 수 있는 프로젝트뷰(ProjectView)와 분리되어 있다.

**C**: 프로젝트 관리자가 프로젝트뷰에서 모든 프로젝트를 한눈에 봐야 하는데, MktingAuto만 별도 탭으로 빠져있어 탭 전환이 필요하고 전체 프로젝트 현황 파악이 불편하다.

**Q**: MktingAuto를 프로젝트뷰 안에 통합하면서 기존 기능(Phase 스테퍼, 진행률, P0/P1/P2 바, Todo 목록)을 모두 유지할 수 있는가?

**A**: MktingAuto 탭을 제거하고 프로젝트뷰 내부에 접기/펼치기 확장 카드로 통합 완료. 기존 91건 테스트 전체 통과. 접힌 상태에서 프로젝트명+진행률 바+P0/P1/P2 배지 표시, 펼치면 Phase 스테퍼, Phase 카드, 우선순위별/태그별 진행률, Phase별 할일 목록 모두 제공.

## 변경 파일

- `/home/jay/workspace/dashboard/index.html` (수정, 2635줄 → 2872줄)

## 변경 내용 상세

1. **탭 배열에서 `mktingauto` 항목 제거** (기존 line 2112)
2. **ProjectView 시그니처에 `mktingAutoData` prop 추가** (line 630)
3. **ProjectView 내부에 상태 추가**: `mktExpanded`(접기/펼치기), `mktOpenPhases`(Phase별 할일 토글)
4. **ProjectView 내부에 MktingAuto 통합 섹션 삽입** (line 893-1124, 약 230줄)
   - DevSystem 섹션 바로 다음, 프로젝트 그리드 바로 전에 배치
   - 인디고 색상 체계로 다른 프로젝트 카드와 차별화
   - 기본 접힘 상태, 접힌 상태에서도 프로젝트명/진행률/P0P1P2 표시
   - 펼침 시: 전체 진행률, Phase 스테퍼, Phase 카드 그리드, P0/P1/P2 상세, D/A/R 태그, Phase별 할일 목록
5. **ProjectView 호출부에 `mktingAutoData` prop 전달** (line 2852)
6. **`activeTab === 'mktingauto'` 독립 렌더링 2줄 삭제** (기존 line 2614-2615)

## 유지 사항

- `MktingAutoView` 컴포넌트: 삭제하지 않고 유지 (line 2088)
- `fetch('/api/mktingauto')` 호출: 그대로 유지 (line 2393)
- `mktingAutoData` state: 그대로 유지 (line 2367)
- 기존 프로젝트 카드 기능: 변경 없음

## 테스트 결과

- pytest 전체: **91 passed** in 0.37s
- test_mktingauto_api.py: 40 passed
- test_server.py: 6 passed
- 실패: 0건

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **IIFE 내부 hooks 호출 불가** — IIFE 패턴에서 useState 직접 호출 불가하므로, mktExpanded/mktOpenPhases 상태를 ProjectView 컴포넌트 최상위로 끌어올림
2. **기존 MktingAutoView와 통합 섹션의 tagMeta/tagBg/tagBar 중복** — IIFE 스코프 내에서 로컬 변수로 선언하여 기존 컴포넌트와 충돌 없이 독립 동작
3. **Phase별 할일 기본 상태** — 기존 MktingAutoView는 current_phase를 기본 열림으로 처리했으나, 통합 섹션은 전체가 접힌 상태가 기본이므로 Phase별 할일도 기본 닫힘으로 설정 (useEffect로 current_phase만 자동 열림)

## QC 자동 검증

- **Overall**: PASS (8 PASS, 4 SKIP)
- **시도**: 2회 (1차: tdd_check FAIL → check-files에 테스트 파일 추가 후 재실행 → PASS)
- file_check: PASS (166,324 bytes)
- data_integrity: PASS
- tdd_check: PASS (테스트 1개 + 구현 1개)
- pyright_check: PASS (0 errors, 0 warnings)
- style_check: PASS (black OK, isort OK)
- critical_gap: PASS
- spec_compliance: PASS
- duplicate_check: PASS (최대 유사도 8.0%)
- SKIP 4건: api_health (서버 작업 아님), test_runner (관련 pytest 파일 자동추론 0개), schema_contract (models.py 없음), scope_check (예상 파일 미지정)
