# 미해결 이슈 4건 일괄 수정

## 태스크 ID: task-913.1
## 한정위임: 완료까지

---

## 이슈 1: qc_verify.py pyright_check.py 수정 전파 (dev1/4/6/7)

### 현황
- task-909.1(5팀)에서 `teams/dev5/qc/verifiers/pyright_check.py`에 `_find_project_root()` 수정 적용 완료
- dev1/4/6/7의 동일 파일에는 아직 미적용 → pyright가 `pyrightconfig.json`을 찾지 못해 WARN 판정

### 수정 대상 파일 (4개)
- `teams/dev1/qc/verifiers/pyright_check.py`
- `teams/dev4/qc/verifiers/pyright_check.py`
- `teams/dev6/qc/verifiers/pyright_check.py`
- `teams/dev7/qc/verifiers/pyright_check.py`

### 수정 내용
dev5 버전(`teams/dev5/qc/verifiers/pyright_check.py`)을 참조하여 동일하게 적용:

1. `import os` 추가 (line 7)
2. `_find_project_root(file_paths)` 함수 추가 (verify 함수 전):
```python
def _find_project_root(file_paths: list) -> str | None:
    """pyrightconfig.json을 찾아 프로젝트 루트 반환"""
    if not file_paths:
        return None
    directory = os.path.dirname(os.path.abspath(file_paths[0]))
    while True:
        if os.path.isfile(os.path.join(directory, "pyrightconfig.json")):
            return directory
        parent = os.path.dirname(directory)
        if parent == directory:
            return None
        directory = parent
```
3. `verify()` 내 `subprocess.run()` 호출에 `cwd=project_root` 추가:
   - `project_root = _find_project_root(py_files)` (subprocess.run 직전)
   - `subprocess.run(cmd, ..., cwd=project_root)`

### 검증
- 수정 후 각 팀 pyright_check.py 파일이 dev5 버전과 동일한지 diff 확인

---

## 이슈 2: test_phase5.py 기존 실패 4건 수정

### 현황
task-909.1 보고서에서 발견된 기존 실패:
- `test_phase5.py::TestTokenLedgerPhase5::test_estimate_session_tokens_opus`
- `test_phase5.py::TestStaleTaskCheck::test_check_stale_tasks_found`
- `test_phase5.py::TestCmdScanIntegration::test_cmd_scan_sends_alert_at_threshold`
- `test_phase5.py::TestCmdScanIntegration::test_cmd_scan_checks_stale_tasks`

### 수정 대상 파일
- `orchestrator/tests/test_phase5.py`
- 필요 시 `orchestrator/auto_orch.py` 또는 `orchestrator/token_ledger.py` (구현 버그인 경우)

### 수정 절차
1. `cd /home/jay/workspace && python3 -m pytest orchestrator/tests/test_phase5.py -v` 로 실패 재현
2. 실패 원인 분석 (테스트 코드 vs 구현 코드 불일치 확인)
3. 원인에 따라 테스트 또는 구현 수정
4. 전체 orchestrator 테스트 회귀 확인: `python3 -m pytest orchestrator/tests/ -v`

---

## 이슈 3: auto_orch.py → scan_done_events() 연결

### 현황
- Phase 4(task-910.1)에서 `event_bus.py`에 `scan_done_events()` 구현 완료
- 하지만 `auto_orch.py`의 `cmd_scan()`이 이 함수를 호출하지 않음
- 현재 `cmd_scan()`은 `scan_events(INCOMING_DIR, PROCESSED_DIR)`만 호출 → incoming/에 직접 넣어야만 동작

### 수정 대상 파일
- `orchestrator/auto_orch.py`

### 수정 내용
`cmd_scan()` 함수의 "1. 신규 이벤트 수집 및 소비" 전에 `scan_done_events()` 호출 추가:

```python
from orchestrator.event_bus import scan_done_events

# cmd_scan() 내부, scan_events 호출 전에:
EVENTS_DIR = str(Path("/home/jay/workspace/memory/events"))

# .done 파일을 memory/events/ → incoming/으로 복사
scan_done_events(EVENTS_DIR, str(INCOMING_DIR), str(PROCESSED_DIR))
```

- import 위치: 파일 상단 imports 섹션
- EVENTS_DIR: 상수로 파일 상단에 정의 (기존 INCOMING_DIR, PROCESSED_DIR과 같은 위치)
- 호출 위치: `cmd_scan()` 내 `scan_events()` 호출 직전

### 검증
- `auto_orch.py --scan` 실행 시 `memory/events/*.done` → `incoming/` 복사 동작 확인
- 기존 테스트 회귀 없음 확인

---

## 이슈 4: sw.js PWA 캐시에 components/ 미포함

### 현황
- task-907.1(8팀)에서 dashboard `index.html`을 9개 컴포넌트로 분리
- 분리된 파일: `dashboard/components/App.js`, `utils.js`, `HistoryView.js`, `ArchiveView.js`, `ProjectView.js`, `MktingAutoView.js`, `GroupChatView.js`, `AutomationView.js`, `SystemView.js`
- `dashboard/sw.js`의 `PRE_CACHE_URLS`에 이 파일들이 포함되지 않아 오프라인 시 로드 실패

### 수정 대상 파일
- `dashboard/sw.js`

### 수정 내용
`PRE_CACHE_URLS` 배열에 컴포넌트 파일 추가 + 캐시 버전 범프:

```javascript
const CACHE_NAME = "dashboard-v9";  // v8 → v9

const PRE_CACHE_URLS = [
  "/dashboard/",
  "/dashboard/index.html",
  "/dashboard/components/App.js",
  "/dashboard/components/utils.js",
  "/dashboard/components/HistoryView.js",
  "/dashboard/components/ArchiveView.js",
  "/dashboard/components/ProjectView.js",
  "/dashboard/components/MktingAutoView.js",
  "/dashboard/components/GroupChatView.js",
  "/dashboard/components/AutomationView.js",
  "/dashboard/components/SystemView.js",
  "https://cdn.tailwindcss.com",
  "https://unpkg.com/react@18/umd/react.production.min.js",
  "https://unpkg.com/react-dom@18/umd/react-dom.production.min.js",
  "/dashboard/icon-192.png",
  "/dashboard/icon-512.png",
];
```

### 검증
- sw.js 문법 오류 없는지 확인 (node -c)
- PRE_CACHE_URLS에 9개 컴포넌트 파일 모두 포함 확인

---

## 이슈 4-2: test_mktingauto_api.py 40건 실패

### 현황
- `dashboard/tests/test_mktingauto_api.py` (358줄)에서 40건 테스트 실패
- 기존 이슈로 판단되나, 가능하면 수정

### 수정 절차
1. `cd /home/jay/workspace && python3 -m pytest dashboard/tests/test_mktingauto_api.py -v --tb=short 2>&1 | head -80` 로 실패 재현
2. 실패 패턴 분석 (import 오류인지, API 변경인지, mock 불일치인지)
3. 원인에 따라 수정
4. 만약 서버 코드 대규모 변경이 필요한 수준이면, 수정 범위와 원인만 보고서에 기록 (무리하게 수정 시도 금지)

---

## 수정 대상 파일 종합

- `teams/dev1/qc/verifiers/pyright_check.py`
- `teams/dev4/qc/verifiers/pyright_check.py`
- `teams/dev6/qc/verifiers/pyright_check.py`
- `teams/dev7/qc/verifiers/pyright_check.py`
- `orchestrator/tests/test_phase5.py` (또는 관련 구현 파일)
- `orchestrator/auto_orch.py`
- `dashboard/sw.js`
- `dashboard/tests/test_mktingauto_api.py` (또는 관련 구현 파일)

## 수정 금지 파일

- `teams/dev5/qc/verifiers/pyright_check.py` (이미 수정 완료, 참조용으로만 사용)
- `orchestrator/event_bus.py` (이미 구현 완료)
- `scripts/` 전체

## 검증 기준

1. dev1/4/6/7 pyright_check.py가 dev5와 동일 동작
2. `python3 -m pytest orchestrator/tests/ -v` — 전건 통과
3. auto_orch.py --scan 시 scan_done_events() 정상 호출
4. sw.js에 components/ 9개 파일 포함, 캐시 버전 v9
5. test_mktingauto_api.py 실패 건수 감소 (가능하면 전건 통과)
6. pyright 0 에러 (수정 파일 대상)
