# task-1613.1 — 대시보드 리서치 섹션 API 수정

**팀**: dev7-team (이참나)
**일시**: 2026-04-11
**레벨**: Lv.1

---

## SCQA

**S**: task-1612.1에서 대시보드 기록 탭에 리서치 섹션 UI가 추가되었고, `/home/jay/workspace/memory/research/`에 78개 .md 파일이 존재한다.

**C**: helpers.py에 research 지원 코드(ALLOWED_RECORD_DIRS, get_records_list)가 추가되었으나, 서버가 변경 전 코드로 실행 중이어서 `/api/records?type=research`는 빈 배열 `[]`을 반환하고, `/api/records/research/{filename}`은 `{"error": "Invalid directory type: research"}`를 반환했다.

**Q**: 서버 재시작으로 리서치 API가 정상 동작하고, 기존 보고서/미팅 API에 회귀가 없는가?

**A**: 서버 재시작 후 모든 API 정상 동작 확인. 리서치 목록 78건 반환, 상세 내용 조회 정상. 기존 보고서 1328건, 미팅 125건, 전체 1531건(3개 타입 포함) 정상 확인. 테스트 파일에 research 테스트 6건 추가, 전체 16건 통과.

---

## 작업 내용

### 원인 분석
- helpers.py에 `"research"` 항목이 `ALLOWED_RECORD_DIRS`와 `get_records_list`에 이미 추가됨 (미커밋 상태)
- server.py에 `/api/research` 독립 엔드포인트도 추가됨 (미커밋 상태)
- ArchiveView.js에 리서치 탭 UI도 추가됨 (미커밋 상태)
- **근본 원인**: 서버 프로세스(PID 833242)가 02:08에 시작되어 변경 전 helpers.py를 메모리에 캐싱 중이었음

### 수행 작업
1. 서버 프로세스 종료 후 재시작 → 최신 helpers.py 로드 확인
2. `test_records_api.py` 업데이트 (쿠쿨칸 위임):
   - `tmp_records` fixture에 research 디렉토리 및 테스트 파일 2개 추가
   - `patched_dirs` fixture에 research 경로 추가 + `dashboard.helpers.ALLOWED_RECORD_DIRS` 이중 패치
   - `TestSafeReadRecord`에 `test_read_research_file` 추가
   - `TestGetRecordsList._call_get_records_list`에 research 분기 추가
   - `test_get_all_records` 업데이트 (research 포함, count 3→5)
   - `test_get_research_only` 추가

---

## 발견 이슈 및 해결

1. **서버 캐시 문제**: Python HTTP 서버가 모듈을 메모리에 캐시하여 파일 변경이 반영되지 않음 → 서버 재시작으로 해결
2. **테스트 monkeypatch 누락**: 기존 테스트가 `server.ALLOWED_RECORD_DIRS`만 패치하고 `dashboard.helpers.ALLOWED_RECORD_DIRS`는 패치하지 않아 `safe_read_record`가 원본 dict를 참조 → 이중 패치로 해결
3. **Pyright false positive**: pytest fixture 매개변수가 "not accessed"로 경고됨 → pytest DI 패턴의 정상 동작, 무시 처리

---

## 테스트 결과

| 항목 | 결과 |
|------|------|
| `/api/records?type=research` | 78건 반환 (PASS) |
| `/api/records/research/fireauto-analysis.md` | 내용 정상 반환 (PASS) |
| `/api/records?type=report` | 1328건 반환 (PASS, 회귀 없음) |
| `/api/records?type=meeting` | 125건 반환 (PASS, 회귀 없음) |
| `/api/records?type=all` | 1531건, 3개 타입 포함 (PASS) |
| pytest test_records_api.py | 16/16 통과 |

---

## 산출물 파일

- `/home/jay/workspace/dashboard/tests/test_records_api.py` (수정: research 테스트 추가)

---

## 모델 사용 기록

| 팀원 | 역할 | 모델 | 작업 |
|------|------|------|------|
| 쿠쿨칸 | 백엔드 | sonnet | test_records_api.py research 테스트 추가 |
