# task-1918: 전체 테스트 스위트 40건 실패 수정

## 배경
task-1915 전수조사 후속으로 전체 pytest 실행 결과 2234 passed / 40 failed 확인.
통합 테스트(tests/integration/) 127건은 PASS지만, 단위 테스트에서 40건 실패 중.

## 실패 분류 및 원인 분석

### 그룹 1: test_session_monitor (11건) — 레벨 전환 로직 불일치
- 에러: `assert 'critical' == 'normal'`, `assert 'critical' == 'warning'`
- 원인 추정: session_monitor의 warning 임계값(70%) 로직이 변경되었으나 테스트가 구현을 따라가지 못함
- 파일: `tests/test_session_monitor.py`, `utils/session_auto_compress.py` (또는 관련 모듈)

### 그룹 2: test_task_1044_1_archive_title_time (8건) — 미구현 함수
- 에러: `AttributeError: module 'server' has no attribute 'get_records_list'`
- 원인: 테스트가 먼저 작성되었으나 `dashboard/server.py`에 `get_records_list` 함수 미구현
- 추가: 1건은 제목 추출 실패 (파일명 == 제목이면 실패하는 테스트)
- 파일: `tests/test_task_1044_1_archive_title_time.py`, `dashboard/server.py`

### 그룹 3: test_dispatch_platform_rules (6건) — 플랫폼 규칙 주입 실패
- 에러 확인 필요 (양성 테스트 6건 전체 실패)
- 파일: `tests/test_dispatch_platform_rules.py`, `dispatch.py` (플랫폼 규칙 관련)

### 그룹 4: test_banner_versions (4건) — cell_id 검증 로직 변경
- 에러: `Invalid cell_id: cell-1-test` (400 반환, 200 기대)
- 원인: banner versions API의 cell_id 검증이 강화되었으나 테스트 fixture가 미업데이트
- 파일: `tests/test_banner_versions.py`, `dashboard/routes_post.py`

### 그룹 5: test_dispatch_gate (3건) — affected_files 겹침/배치 완료
- 에러 확인 필요
- 파일: `tests/test_dispatch_gate.py`, `dispatch.py`

### 그룹 6: test_dashboard_todo_tabs (2건) — 탭 전환 로직
- 파일: `tests/test_dashboard_todo_tabs.py`, `dashboard/`

### 그룹 7: 개별 실패 (6건)
- test_absorption_health_check: `test_summary_status_counts_sum_to_total` — 카운트 합산 불일치
- test_integration: `test_task_id_passed_to_build_prompt` — task_id 전달 로직
- test_qc_integration: `test_normal_no_maat_no_loki` — normal 레벨에 마아트 참조 포함됨 (assert '마아트' not in ...)
- test_regression: `test_new_id_is_higher_than_existing` — task-11 vs task-11.1 비교 실패
- test_meta_ads_client: `test_exchange_token_raises_on_http_error`
- test_task_1044_1_archive (추가 1건): 제목 추출 로직

## 수정 원칙
1. **테스트가 맞고 코드가 틀린 경우** → 코드 수정
2. **코드가 맞고 테스트가 outdated인 경우** → 테스트 수정
3. **둘 다 맞지만 인터페이스가 변경된 경우** → 테스트를 현재 인터페이스에 맞게 수정
4. 판단이 어려운 경우 보고서에 명시하고 수정하지 말 것

## 검증 시나리오
1. `pytest tests/ -q` → 0 failed (전체 PASS)
2. 기존 통합 테스트 127건 회귀 없음
3. 수정한 각 테스트 개별 실행 확인

## 레벨
- normal (기존 실패 테스트 수정, 신규 기능 아님)
