Skip to content

Feat: 커밋 추천 매칭 및 신뢰도 저장 구현#23

Merged
ggamnunq merged 6 commits into
developfrom
commit-analysis
May 13, 2026
Merged

Feat: 커밋 추천 매칭 및 신뢰도 저장 구현#23
ggamnunq merged 6 commits into
developfrom
commit-analysis

Conversation

@Yujin1219
Copy link
Copy Markdown
Member

🎯 작업 내용

주요 변경사항

  • 결정사항에 속한 적용사항별로 FastAPI 커밋 추천 매칭을 요청하고, 추천 결과를 DB에 저장하는 흐름을 구현했스빈다.
  • 회의 분석 결과 저장 이후 자동으로 커밋 추천 매칭을 1회 실행하도록 연결했고, 프론트에서는 수동 새로고침이 필요할 때 POST /api/decisions/{decisionId}/commit/match를 호출할 수 있습니다.

상세 내용

결정사항 단위 커밋 추천 매칭 API 추가

  • POST /api/decisions/{decisionId}/commit/match
  • 서버에서 결정사항이 포함된 회의의 팀 레포지토리 목록을 조회해 FastAPI에 전달
  • top_k는 서버에서 적용사항별 추천 결과 최대 5개로 고정

추천 결과 저장 로직 추가

  • FastAPI 응답의 추천 결과를 Decision_Commits, Application_Commits에 저장
  • 기존 추천 스냅샷은 새 추천 저장 전에 삭제하고, 최신 추천 결과로 교체(재요청시)
  • 같은 적용사항-커밋 조합이 응답에 중복으로 들어온 경우 한 번만 저장
  • CommitConnectionRepository.findConnectedCommitIds()로 후보 커밋 중 연결된 커밋을 한 번에 조회 하여 이미 적용사항에 연결된 커밋은 추천 응답과 저장 대상에서 제외

FastAPI 응답 fallback 처리

  • FastAPI 응답에서 commit_id가 없어 repository_id + commit_hash로 DB 커밋을 찾음 (커밋 분석 요청시 commit_id를 전달해주고있지 않기 때문)
  • FastAPI 응답에서 application_id가 없으면 application_title로 현재 결정사항의 적용사항을 찾음
  • 응답에 추천 커밋이 있는데 적용사항 또는 커밋을 해석할 수 없으면 예외 처리

회의 분석 후 자동 매칭 실행

  • 회의 분석 결과 저장 후 커밋 추천 매칭을 자동 실행
  • 저장된 적용사항이 없으면 자동 매칭을 생략
  • 자동 매칭 실패는 회의 분석 저장 자체를 롤백하지 않도록 처리

테스트용 API 추가

  • POST /api/decisions/{decisionId}/commit/match/test
  • FastAPI를 실제 호출하지 않고, 전달받은 FastAPI 응답 JSON으로 저장 로직을 테스트하기 위함
  • result를 포함한 전체 응답 또는 result 객체만 전달해도 처리

사용하지 않는 추천 저장 API 제거

  • 기존에 구현 없이 남아 있던 POST /api/applications/{decisionId}/recommendations API 삭제

추천 매칭 신뢰도 저장 및 결정사항 신뢰도 갱신

  • 추천 이유와 신뢰도는 커밋 자체의 속성이 아니라 적용사항-커밋 매칭별 속성이므로, Decision_Commits가 아닌 Application_Commits에서 관리하도록 정리
  • Decision_Commits.reason 엔티티 필드와 저장 로직을 제거
  • 추천 커밋 조회 시 Application_Commits.reason, Application_Commits.confidence를 응답하도록 변경
  • 추천 매칭 저장 후 해당 결정사항에 속한 추천 커밋들의 confidence 평균을 계산해 Decision.reliability_score에 저장하도록 추가
  • 추천 결과가 0건이면 기존 추천 스냅샷을 삭제하고 Decision.reliability_scorenull로 갱신
  • bulk delete 이후 영속성 컨텍스트가 초기화되어 dirty checking이 누락될 수 있어, DecisionRepository.updateReliabilityScore() 로 직접 update 쿼리로 신뢰도점수를 갱신하도록함

✅ 체크리스트

  • 코드 빌드가 정상적으로 완료되었나요?
  • 코드 리뷰 요청 전 self-review를 진행했나요?

📋 API 명세서

image

💬 리뷰 요청사항 (선택)

📚 참고 자료 (선택)

ALTER TABLE decision_commits DROP COLUMN reason;

@Yujin1219 Yujin1219 requested a review from ggamnunq May 13, 2026 11:43
@Yujin1219 Yujin1219 self-assigned this May 13, 2026
@ggamnunq ggamnunq merged commit b2e7b39 into develop May 13, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants