[목표]
벨로그 정리
리드미 작성
취업준비
QnA 뽑기
내 Summary Ai 커밋 가져오는 기준 강화 및 정리
welcome 페이지의 코드 품질 검사 수정
postgreSQL을 쓴이유는 무엇인가?
내일 와서 커밋있는 프로젝트 가져와서 잘 출력되는지 확인
식사를 하고 왔다.

차차 현대 오토에버 지원서의 기본 작성항목을 작성하면서 입사지원서를 작성하고 있다.
또한 Welcome 페이지의 소개 내용을 수정하고 있다.
옷을 정리하고 왔다. 부모님하고 전화통화도 하고 왔다.
다음과 같은 내역을 새로 패치했다. 마지막 패치가 될것이다.
25/07/25 Summary Ai에 들어가는 이슈/커밋 데이터 기준(30개)을 가중치 알고리즘에 따라 산정, 핫픽스 태그 시 15점, 댓글 수당 3점, 참여자 수 당 3점, 보드 이슈 우선순위에 따라 0순위부터 20점~1점, 커밋메시지 길이당 0.5점, 커밋 변경당 0.2점 으로 산정하여 높은 가중치부터 30개를 선별합니다.
// 이슈 중요도 계산 함수
function calcIssueImportance(issue: any): number {
let score = 0;
// 1. status가 'story'면 핫픽스 간주
if (issue.status === 'story') {
score += 15;
}
// 2. 제목에 '핫픽스' 또는 'hotfix' 포함 시 가중치 15
if (issue.title && (/핫픽스/i.test(issue.title) || /hotfix/i.test(issue.title))) {
score += 15;
}
// 3. 댓글 수 * 2
score += (issue.commentCount || 0) * 2;
// 4. 참여자 수 * 3
score += (issue.participantCount || 0) * 3;
// 5. position 가중치 (0이면 20, 1이면 19, ... 19면 1, 20 이상이면 0)
if (typeof issue.position === 'number' && issue.position >= 0 && issue.position < 20) {
score += 20 - issue.position;
}
return score;
}
// 커밋 중요도 계산 함수
function calcCommitImportance(commit: any): number {
let score = 0;
score += (commit.title?.length || 0) * 0.5;
if (commit.stats && typeof commit.stats.total === 'number') {
score += commit.stats.total * 0.2;
}
return score;
}
// 이슈별 중요도 계산 및 정렬
const issues = events
.filter(e => e.type === 'issue')
.map(issue => ({ ...issue, importance: calcIssueImportance(issue), tag: (issue as any).tag ?? '', assigneeId: (issue as any).assigneeId ?? '' }))
.sort((a, b) => b.importance - a.importance);
// 중요도 높은 이슈 30개 선정
const topIssues = issues.slice(0, 30);
// top 이슈의 tag값 모음 (tag가 없으면 빈 문자열)
const topIssueTags = topIssues.map(i => (typeof i.tag === 'string' ? i.tag : '')).filter(tag => tag);
// 해당 이슈에 연결된 커밋만 추출 (커밋 메시지 맨 앞이 '#[tag]'로 시작하면 연결된 것으로 간주)
let relatedCommits = events
.filter(e => e.type === 'commit')
.filter(commit => {
return topIssueTags.some(tag =>
commit.title && commit.title.startsWith(`#${tag}`)
);
})
.map(commit => ({ ...commit, importance: calcCommitImportance(commit) }))
.sort((a, b) => b.importance - a.importance)
.slice(0, 30);
// 만약 연결된 커밋이 30개 미만이면, 중요도 높은 커밋을 추가로 채움
if (relatedCommits.length < 30) {
const extraCommits = events
.filter(e => e.type === 'commit' && !relatedCommits.some(c => c.id === e.id))
.map(commit => ({ ...commit, importance: calcCommitImportance(commit) }))
.sort((a, b) => b.importance - a.importance)
.slice(0, 30 - relatedCommits.length);
relatedCommits = relatedCommits.concat(extraCommits);
}
위에는 안적었는데, welcome 페이지의 내용도 다음과 같이 수정했다.
!
해당 내역을본서버와 오토스케일링 서버 둘다 업데이트 했다.
포스터를 정글 스테이지에 개제하고 왔다.
식사를 하고 왔다.

내일 발표를 위해 Q&A 질문지 리스트와 대본을 외우고 있다.
우선적으로 Q&A를 작성해봐야겠다.
핫픽스 이슈 가중치
커밋 메시지 길이
커밋 양
이건 포스터보고 잘 설명하면됨.
목표
핵심 특징
1. 활동 분포 및 패턴 분석
2. 품질 및 협업 지표 산출
3. 자동 스타일 분류 및 개인화된 피드백
활동량 지표
활동 유형별 분포
시간·요일 패턴
품질 지표
협업 지표
자동 스타일 분류
피드백 생성
- 각 지표별 강점·약점 진단
- 개인화된 개선 제안
| 챌린지 | 해결 방식 | 비고 |
|---|---|---|
| 정확한 활동 분류 | 공통 필드(author, createdAt, status) 표준화 | 통합된 ActivityData 사용 |
| 품질·패턴 분석 한계 | - 메시지 품질: 단순 길이·컨벤션 체크- PR 머지율: closed=merged 가정 | 실제 맥락·merged 여부 반영 어려움 |
| 시간·요일 패턴 왜곡 | JS Date 변환 후 카운트타임존 이슈 예외 처리 로직 도입 | 휴일·샘플 부족 시 편향 가능성 존재 |
| 협업 깊이 측정 한계 | 유니크 author 수로 근사 | 정성적 상호작용 깊이 미반영 |
| 응답 시간 산출 예외 처리 | 댓글 없는 이슈, 중복 댓글 필터링최초 댓글 시점 사용 | 실제 커뮤니케이션 질 반영 어려움 |
| 데이터 불균형·샘플 부족 | 최소값·최대값 하드캡, 빈 메트릭 반환 | 신뢰도 저하 시 결과 가중치 적용 필요 |
한계
개선 방향
1. 자연어 처리 기반 커밋·이슈·댓글 내용 심층 분석
2. 실제 머지 여부, 리뷰·코멘트 등 PR 상세 데이터 활용
3. Network Analysis: 팀원 간 상호작용 네트워크·감정 분석
4. 계량 지표에 신뢰도 가중치 적용
ContributionAnalyzer는 단순 집계를 넘어 사용자의 활동 패턴·품질·협업 관계를 종합 분석하여, 개인화된 협업 스타일 분류와 구체적인 개선 제안을 제공합니다. 다만, 현재 지표가 지닌 한계(정성적 요소 미반영, 데이터 편향 등)를 극복하기 위해 자연어 처리, 네트워크 분석, 정성적 데이터 가중치 등의 기술 고도화가 필요합니다.
권호형이 갑자기 서버가 500에러가 걸린다고 해서, 문제를 추적했다.
서버 로그에는 정상으로 출력되는데, 500 에러 창이 떠서 확인을 해보았다.
오토스케일링 서버에 혹시 몰라 main pull을 해봤는데, 변경 내역을 가져왔다. 어제 새로 npm을 실행하기만 하고, 업데이트를 안한 것이었다. 그래서 새롭게 패치하고 프로세스를 재실행했다.
이후에 혹시 몰라 오토스케일링도 제거하고 다시 연결하고, CloudFront도 무효화를 진행했다.
→ 조치한 결과 아직까지는 오류가 발생하지 않는다. 미리 찾아서 다행이다… 시연때 그랬으면, 생각만해도 끔찍하다.
PPT와 대본을 약간 수정하였다. 시뮬레이션 해보고 더 축약할지 고민해봐야겠다.
시연용 노트북 가져가자. 세팅 한 8번 정도한것 같다.
연습을 한 후에 잘 안외워지거나, 불편한 대본 부분은 수정했다. PPT 또한 조건과 내용에 부합하게 수정했다.