Skip to content

최적화: synchronize 이벤트 시 변경된 파일만 패턴 재분석 #7

@sounmind

Description

@sounmind

문제

PR에 synchronize 이벤트 발생 시(재push), 이번 push에서 실제로 변경된 파일만 있어도 PR 전체 솔루션 파일을 모두 재분석하고 봇 코멘트를 모두 삭제/재작성한다.

원인

GET /repos/{owner}/{repo}/pulls/{pr_number}/files API는 PR 전체의 누적 diff(base 브랜치 대비)를 반환하므로, "이번 push에서 변경된 파일"을 식별할 수 없다.

영향

  • 불필요한 OpenAI API 호출 (비용 낭비)
  • GitHub 알림 스팸 ("봇이 댓글 달았어요" × 파일 수)
  • 이미 달려있는 동일한 분석 결과를 재작성

발견 경위

해결 방안

옵션 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 비교 → 동일하면 스킵.

장점: 모든 이벤트 타입에 동일하게 적용, 수동 삭제/손상된 코멘트도 감지
단점: 파싱 로직 추가 필요

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions