1. GitHub API로 커밋을 가져오는 핵심 구간

호출 계층 실제 코드 (파일·함수) 하는 일
Chrome 확장 gitFolio/background/background.jsanalyzeRepository() ① 팝업/사이드패널에서 입력 받은 owner / repo / username / count를 JSON으로 묶어② 백엔드 POST /overview/api/generate/ 로 전송
Django 뷰 overview/views.pygenerate_overview_api(request) 1) JSON 파싱2) fetch_detailed_commit_history(owner, repo, username, count, save_to_db=True) 호출 (→ GitHub)
GitHub 수집 로직 overview/utils.pyfetch_detailed_commit_history() - GraphQL https://api.github.com/graphql 로 최대 count*3개 커밋 가져옴- Python에서 author 필터(username) 후 filtered_commits 생성- save_to_db=True 이므로 바로 save_commits_to_db() 실행

🔑 API 종류


2. DB에 실제로 적재되는 위치

모델(테이블) 저장 함수 주요 컬럼
overview_repository save_commits_to_db() (get_or_create) owner, name
overview_commit 동일 함수 (get_or_create) sha, author, message, committed_date, additions, deletions, changed_files, repository_id(FK)
overview_commitfile fetch_and_save_commit_files() filename, status, additions, deletions, commit_id(FK)
overview_commitanalysis analyze_commit_messages() 내부 update_or_create username, commit_count, analysis_json, repository_id(FK)

3. 수집된 커밋을 어디서·어떻게 활용하나?

3-1. 분석용 프롬프트 생성 → Anthropic 호출

overview/utils.pyanalyze_commit_messages(commits, …)

python

commit_messages = "\\n".join(
    f"{c['messageHeadline']} ({c['committedDate']})" for c in commits
)
analysis_json = call_anthropic_api(commit_messages, …)     # Claude 3 Sonnet

3-2. 커밋 리스트 화면(팝업)

overview/views.pycommit_list_api(request)

  1. DB 우선 조회: get_stored_commits()

  2. 결과가 없을 때만 fetch_detailed_commit_history(save_to_db=False) 로 GitHub 재조회 → JSON 반환.

    (따라서 이미 저장돼 있으면 네트워크 트래픽 없이 DB 직렬화 결과를 팝업에 뿌림.)

3-3. 커밋 상세 화면

overview/views.pycommit_detail_api(request, sha)