Dec 18

[교육/학습지원] 하모니 AI: 실시간 협업 조율 시스템

📌 프로젝트 소개

GitHub와 Slack 데이터를 활용한 업무 기여도 분석 자동화 툴 입니다.
Empty space, drag to resize

🧐 문제 정의

강원대학교의 한 교수님은 매 학기 진행되는 개발 팀프로젝트에서 학생들의 기여도를 평가하기 위해 GitHub와 Slack을 직접 확인하며 무임승차자를 식별하고 계십니다. 

그러나 이 과정에서 다음과 같은 문제점들이 발생합니다. 첫째, 다수의 팀을 일일이 수작업으로 검토하는 데 상당한 시간이 소요됩니다. 둘째, 방대한 데이터를 수동으로 분석하다 보면 실수나 편향이 발생할 가능성이 있습니다. 셋째, 정량적 지표(커밋 수, 코드 라인 수)만으로는 실질적 기여도를 정확히 파악하기 어렵고, 그렇다고 모든 커밋과 메시지를 읽으며 정성적으로 평가하기엔 현실적으로 불가능합니다. 

학생들의 성적에 직접적으로 반영되는 중요한 평가인 만큼, 이러한 평가 과정을 빠르고 정확하며, 공정하게 자동화할 필요성이 있습니다.
Empty space, drag to resize

💡 문제 해결

본 프로젝트는 n8n 워크플로우 자동화 플랫폼을 기반으로 GitHub와 Slack의 프로젝트 활동 데이터를
자동으로 수집·분석하는 시스템을 구축했습니다. 데이터 수집 단계에서는 n8n의 Slack 노드와 github의 open api를 활용해 각 팀의 커밋 히스토리, 코드 변경 내역, 메시지 기록 등을 시간으로 가져옵니다. 

정량적 분석에서는 구성원별 커밋 수, 추가/삭제 코드 라인 수, Slack 메시지 빈도 등의 객관적 지표를 자동 집계합니다. 

정성적 분석에서는 수집된 데이터를 구조화하여 Upstage의 Solar Pro 2와 google gemini의 대규모 언어모델에 입력합니다. AI는 커밋 메시지의 의미, 코드 변경의 중요도, 팀 내 커뮤니케이션 품질 등을 종합적으로 분석하여 각 구성원의 실질적 기여도를 평가합니다. 
최종적으로 정량적·정성적 분석 결과를 Upstage의 Solar Pro2 대규모 언어모델을 통해 사용자 친화적인 리포트 형태로 생성하여 Google Drive에 자동 저장함으로써, 언제든지 쉽게 확인하고 공정한 평가를 내릴 수 있도록 했습니다.
Empty space, drag to resize

⚙️ 핵심 기능

본 시스템의 첫 번째 핵심 기능은 자동 데이터 수집입니다. n8n의 Slack 노드와 github의 open api를 활용하여 각 팀의 커밋 히스토리, 코드 변경량, 팀 채널의 메시지 등의 데이터를 실시간으로 자동 수집합니다. 이를 통해 여러 팀의 데이터를 동시에 관리할 수 있으며, 수작업으로 일일이 확인해야 했던 번거로움을 해소했습니다.

두 번째로, 수집된 데이터를 바탕으로 한 정량적 분석 기능이 있습니다. 개인별 커밋 수, 추가 및 삭제된 코드 라인 수, PR 건수를 자동으로 집계하고, Slack에서 메시지 빈도, 대화 주제를 분석하여 각 구성원의 활동량을 객관적인 수치로 산출합니다. 이러한 정량 지표는 구성원별 기여도를 비교하는 기초 자료로 활용됩니다. 

세 번째 핵심 기능은 google의 gemini와 Upstage의 Solar Pro 2를 활용한 AI 기반 정성적 분석입니다. 단순히 커밋 수나 코드라인 수만으로는 파악하기 어려운 실질적 기여도를 평가하기 위해, 수집된 데이터를 구조화하여 대규모 언어모델에 입력합니다. AI는 커밋 메시지의 의미를 분석하고, 코드 변경 내용의 실질적 가치를 판단하며, Slack 메시지의 질적 수준과 문제 해결에 대한 기여도, 팀워크를 종합적으로 평가합니다. 이를 통해 각 구성원에 대한 상세한 평가 의견이 담긴 리포트가 자동으로 생성됩니다. 네 번째 핵심 기능은 결과 보고서 자동 생성입니다. 
정량적 분석과 정성적 분석을 통합하여 구성원별 상세 평가서를 문서화합니다. 생성된 리포트는 교수님이 쉽게 이해할 수 있는 사용자 친화적인 텍스트 형태로 작성되며, Google Drive에 폴더별로 자동 정리되어 저장됩니다. 이 모든 과정은 n8n 워크플로우를 통해 자동으로 작동합니다. 
주간 또는 월간 단위로 자동 분석을 실행하도록 스케줄링할 수 있으며, 프로젝트 마감일과 같은 특정 이벤트 발생 시 트리거 기반으로 분석을 수행합니다. 데이터 수집 실패 시에는 자동으로 재시도하고 알림을 보내는 에러 핸들링 기능이 포함되어 있으며, 향후 Jira나 Notion 같은 새로운 데이터 소스를 추가하기 쉬운 확장 가능한 구조로 설계되었습니다.
Empty space, drag to resize

🎬 데모 영상

Empty space, drag to resize

👥 팀원 소개

김이든
- 팀장 및 발표 자료 제작 담당
배준영
- 개발 담당 
Empty space, drag to resize

💾 참고 자료