# task-1869 완료 보고서: CodeGraph 도입 Phase 1 — 2주 파일럿 벤치마크

> task-id: task-1869 | 팀: dev7-team | 작성일: 2026-04-16

---

## S - Situation

함수 간 의존성 자동 추적으로 affected_files를 자동 제안하기 위해, 2026-04-16 Agent 미팅에서 CodeGraph 도입이 전원 합의(10/10)되었다. `/home/jay/workspace/dashboard/` Python 코드베이스(18개 .py 파일, 46개 테스트 파일)를 대상으로 외부 도구(code-review-graph v2.3.2)와 자체 AST 스크립트를 벤치마크했다.

## C - Complication

code-review-graph는 tree-sitter 기반 cross-language 분석이 강점이나, file-level blast radius만 제공하며 max_nodes=500 상한에 도달하여 **모든 5개 시나리오에서 53~57개 파일**(JS 포함)을 영향으로 출력했다. 실질 precision이 ~10%로 dispatch.py 통합에는 부적합하다.

## Q - Question

dispatch.py에서 affected_files 자동 제안을 위해 어떤 도구를 채택하고, Phase 2에서 어떻게 통합해야 하는가?

## A - Answer

**자체 AST 스크립트(`ast_dependency_map.py`)를 Phase 2 통합 대상으로 권장한다.** 평균 precision 100%, 응답시간 42ms (code-review-graph 대비 3배 빠름), 외부 의존성 0개, 함수 레벨 caller 탐지 지원. code-review-graph는 MCP 서버 연동 용도로 별도 활용을 검토한다.

---

## 작업 내용

### 작업 A: code-review-graph 설치 + 벤치마크
- `pip install code-review-graph` (venv 격리 설치)
- 그래프 DB: **Neo4j 불필요** — SQLite 로컬 DB
- 빌드: 1,030파일, 14,996노드, 117,920엣지 (빌드 ~15초)
- 증분 인덱싱: 지원 (SHA-256 기반)
- blast radius: file-level만, 함수 레벨 미지원, max_nodes=500 상한

### 작업 B: 자체 AST 스크립트 개발
- `/home/jay/workspace/scripts/ast_dependency_map.py` 신규 생성
- Python `ast` + stdlib only (외부 의존성 0)
- import 기반 의존성 그래프 + 함수 레벨 caller 탐지
- `--root`, `--files`, `--function` CLI 인터페이스
- JSON 출력 (직접 임포터, 전이적 의존, 테스트 파일, 호출자+줄번호)

### 비교 벤치마크 (5건 시나리오)

| # | 시나리오 | AST precision | CRG precision | AST 시간 | CRG 시간 |
|---|---------|-------------|-------------|---------|---------|
| 1 | data_loader:get_member_status | 100% | ~3% | 58ms | 140ms |
| 2 | routes_post:handle_post_wiki_refine | 100% | ~3% | 57ms | 139ms |
| 3 | server.py:app init | 100% | ~30% | 1ms | 123ms |
| 4 | wiki_engine:sync_firestore | 100% | ~6% | 93ms | 128ms |
| 5 | sanitize_gate:sanitize_text | N/A(범위외) | ~2% | 0.1ms | 81ms |

상세 비교: `/home/jay/workspace/memory/reports/codegraph-benchmark.md`

---

## 산출물 파일

- `/home/jay/workspace/scripts/ast_dependency_map.py`
- `/home/jay/workspace/memory/reports/codegraph-benchmark.md`
- `/home/jay/workspace/memory/reports/task-1869.md`
- `/home/jay/workspace/scripts/.codegraph-venv/`
- `/home/jay/workspace/.code-review-graph/graph.db`

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **Pyright 경고 5건** — 미사용 변수 제거/수정 (`ast_dependency_map.py`)
2. **외부 패키지 venv 격리** — system Python externally-managed → venv 생성
3. **sync_firestore() 미존재** — wiki_engine.py에 해당 함수 없음 → Ground truth에 반영

### 범위 외 미해결 (1건)
1. **code-review-graph max_nodes 상한** — 기본 500이 소규모 프로젝트에서 과도. 외부 패키지 설정이므로 범위 외.

## 셀프 QC 체크리스트

- [x] 1. 영향 파일: ast_dependency_map.py 신규 생성, 기존 코드 변경 없음
- [x] 2. 엣지 케이스: 빈 파일, 구문 오류 파일, --root 밖 파일 → 정상 처리
- [x] 3. 작업 지시와 일치: 4개 산출물 모두 완료
- [x] 4. 에러 처리: SyntaxError/Exception 시 None 반환, 크래시 방지
- [x] 5. 테스트: 5개 시나리오 모두 유효 JSON 출력 검증
- [x] 6. 이슈 3건 자체 해결, 1건 범위 외 명시
- [x] 7. 코드 아키텍처: 단일 파일 유틸리티, SOLID/DRY 준수
- [x] 8. 인터페이스 변경 없음 (신규 파일만)

## 모델 사용 기록

- 팀원: 쿠쿨칸 / 작업: AST 스크립트 개발 / 모델: sonnet
- 팀원: 카마소츠 / 작업: Ground truth 생성 (5건 grep 검증) / 모델: sonnet

## 세션 통계
- 총 도구 호출: 20회

### 수정 파일 목록
- bash_cmd: 8회 (Bash)
- /home/jay/workspace/scripts/ast_dependency_map.py: 6회 (Edit, Write)
- /home/jay/workspace/scripts/tests/test_ast_dependency_map.py: 3회 (Edit, Write)
- /home/jay/workspace/memory/reports/codegraph-benchmark.md: 1회 (Write)
- /home/jay/workspace/memory/reports/task-1869.md: 1회 (Write)
- /home/jay/workspace/memory/tasks/task-1869.md: 1회 (dispatch)

### 도구 사용 현황
- Bash: 8회
- Edit: 7회
- Write: 4회
- dispatch: 1회

