6adbc2a6fa
일반 에이전트 채팅이 큰 코드베이스 리뷰를 단일 호출로 처리하다 약한 로컬 모델에서 빈 응답으로 무너지던 문제를, /meet 의 검증된 map-reduce 로 우회. - /review <디렉터리|파일> [초점] 신설 (코어 채팅 경로 무수정) - Map: 파일별 독립 리뷰(라인 인용 근거), callLmSynthesis 재시도/붕괴감지 활용, 한 파일 실패해도 부분 리뷰로 진행 - Reduce: 노트 통합 + hierarchical fold 로 reduce 입력을 약한 모델 한도(16K) 안 유지 - 의존성/빌드 산출물 제외, 파일 30개·400KB 상한, 결과 wiki 저장 - 신규 reviewPrompt.ts / reviewFiles.ts, 테스트 +5건(전체 667 통과) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
40 lines
1.7 KiB
TypeScript
40 lines
1.7 KiB
TypeScript
/**
|
|
* /review 소스 파일 수집 판정(shouldReviewFile) 테스트 — 디렉터리 스킵·확장자
|
|
* 필터·생성물 제외의 결정적 동작을 고정한다.
|
|
*/
|
|
import { shouldReviewFile, REVIEW_EXTENSIONS, SKIP_DIRS } from '../src/features/datacollect/reviewFiles';
|
|
|
|
describe('shouldReviewFile', () => {
|
|
it('소스 확장자는 통과', () => {
|
|
expect(shouldReviewFile('src/agent.ts')).toBe(true);
|
|
expect(shouldReviewFile('app/main.py')).toBe(true);
|
|
expect(shouldReviewFile('pkg/server.go')).toBe(true);
|
|
expect(shouldReviewFile('ui/App.tsx')).toBe(true);
|
|
});
|
|
|
|
it('비소스/문서/바이너리는 제외', () => {
|
|
expect(shouldReviewFile('README.md')).toBe(false);
|
|
expect(shouldReviewFile('assets/icon.png')).toBe(false);
|
|
expect(shouldReviewFile('data.json')).toBe(false);
|
|
});
|
|
|
|
it('스킵 디렉터리 하위는 제외', () => {
|
|
expect(shouldReviewFile('node_modules/foo/index.js')).toBe(false);
|
|
expect(shouldReviewFile('out/extension.js')).toBe(false);
|
|
expect(shouldReviewFile('.git/hooks/pre-commit.sample')).toBe(false);
|
|
expect(shouldReviewFile('src/.astra/cache/x.ts')).toBe(false); // 중간 경로에 스킵 디렉터리
|
|
});
|
|
|
|
it('생성물·노이즈는 제외', () => {
|
|
expect(shouldReviewFile('dist/bundle.min.js')).toBe(false); // dist + .min.js 둘 다
|
|
expect(shouldReviewFile('src/types.d.ts')).toBe(false);
|
|
expect(shouldReviewFile('src/app.js.map')).toBe(false);
|
|
expect(shouldReviewFile('package-lock.json')).toBe(false);
|
|
});
|
|
|
|
it('레지스트리 상수 정합성', () => {
|
|
expect(REVIEW_EXTENSIONS.has('.ts')).toBe(true);
|
|
expect(SKIP_DIRS.has('node_modules')).toBe(true);
|
|
});
|
|
});
|