Skip to content

Conversation

@Mingguriguri
Copy link
Collaborator

챌린지 목표

  • 매달 투표로 정한 2개의 알고리즘 유형(예: 그래프, DP)을 각각 5문제 이상 풀면 상품 제공

우리의 문제는?

  • 수작업 집계의 번거로움: 누가 뭘 풀었는지 일일이 확인하고 기록하는 게 너무 귀찮았습니다.
  • 실시간 피드백 부족: PR을 올린 후에도 팀원들이 현재 진행 상황을 바로 알기 어려웠습니다.

그래서 자동화로…

  • PR 템플릿에 문제 정보를 입력하면, 자동으로 문제 데이터를 추출(extract_pr_data.py)
  • 사용자별, 유형별 문제 집계 및 달성 여부 업데이트(update_scoreboard.py)
  • 최신 진행 상황을 Markdown 형식의 대시보드 파일(DASHBOARD.md)로 업데이트하고, 이전 달 기록은 HISTORY.md에 보관
  • 변경된 내용은 자동으로 커밋되고, PR에 최신 진행 상황 코멘트로 반영

전체 시스템 구조

이번 자동화 시스템은 다음과 같이 구성되어 있습니다:

  1. PR 템플릿과 데이터 추출
    • 스터디원이 PR을 생성할 때, 문제 정보를 특정 템플릿에 맞춰 작성합니다.
    • extract_pr_data.py 스크립트가 PR 본문에서 문제 정보와 작성자 정보를 파싱하여 pr_data.json 파일에 저장합니다.
  2. 스코어보드 업데이트
    • update_scoreboard.py 스크립트는 pr_data.json 파일의 데이터를 읽어 사용자별, 챌린지 유형별로 문제 번호를 집계합니다.
    • 사용자별 데이터는 반드시 scoreboard 파일 내 "users" 키에 저장되며, 각 사용자가 해당 챌린지의 목표(문제 5개 이상)를 달성했는지 여부도 업데이트합니다.
  3. 대시보드 갱신 및 기록 관리
    • update_dashboard.py 스크립트는 scoreboard 데이터를 바탕으로 최신 진행 상황을 Markdown 형식의 DASHBOARD.md 파일에 반영합니다.
    • 또한, 매월 말에는 기존 기록을 HISTORY.md 파일에 보관하고, 새로운 달에 맞춰 scoreboard를 초기화합니다.
  4. GitHub Actions 워크플로우
    • PR 이벤트 발생 시 자동으로 위의 스크립트들이 순차적으로 실행됩니다.
    • 실행 후, 업데이트된 파일들(예: scoreboard.json, DASHBOARD.md, HISTORY.md)을 커밋하고, PR에 자동으로 진행 상황 코멘트를 남깁니다.

@Mingguriguri Mingguriguri self-assigned this Apr 6, 2025
@Mingguriguri Mingguriguri merged commit 20f517e into main Apr 6, 2025
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants