-
Notifications
You must be signed in to change notification settings - Fork 0
최적화: synchronize 이벤트 시 변경된 파일만 패턴 재분석 #7
Copy link
Copy link
Open
Description
문제
PR에 synchronize 이벤트 발생 시(재push), 이번 push에서 실제로 변경된 파일만 있어도 PR 전체 솔루션 파일을 모두 재분석하고 봇 코멘트를 모두 삭제/재작성한다.
원인
GET /repos/{owner}/{repo}/pulls/{pr_number}/files API는 PR 전체의 누적 diff(base 브랜치 대비)를 반환하므로, "이번 push에서 변경된 파일"을 식별할 수 없다.
영향
- 불필요한 OpenAI API 호출 (비용 낭비)
- GitHub 알림 스팸 ("봇이 댓글 달았어요" × 파일 수)
- 이미 달려있는 동일한 분석 결과를 재작성
발견 경위
- #4의 구현 (PR 파일별 알고리즘 패턴 태깅 추가 (#4) #5) 머지 후 DaleStudy/leetcode-study#2503에서
synchronize테스트 중 확인
해결 방안
옵션 1: webhook payload의 before/after SHA 활용 (추천)
synchronize 이벤트 payload에는 before/after 커밋 SHA가 포함됨.
opened/reopened: 기존대로 모든 파일 분석 (초기 생성)synchronize:GET /repos/{owner}/{repo}/compare/{before}...{after}로 실제 변경 파일만 조회 → 해당 파일의 기존 봇 코멘트만 삭제 + 재작성
장점: 간단, synchronize 의도와 부합
단점: 이벤트 타입별로 분기 필요
옵션 2: 파일 SHA를 코멘트에 저장
봇 코멘트에 파일의 blob SHA 저장:
<!-- dalestudy-pattern-tag sha:abc123def -->다음 push 시 현재 파일 SHA와 코멘트의 SHA 비교 → 동일하면 스킵.
장점: 모든 이벤트 타입에 동일하게 적용, 수동 삭제/손상된 코멘트도 감지
단점: 파싱 로직 추가 필요
Reactions are currently unavailable