Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Confluence-Auto-Write

지난 한 주간의 GitHub 커밋 로그를 모아 Confluence 주간 회의록 페이지를 자동으로 생성/갱신하는 봇. 프론트엔드 팀 회의록, 백엔드 팀 회의록, 두 팀 내용을 모은 통합 개발 미팅 회의록까지 3종류를 다룸.

왜 만들었나

기존엔 회의 전에 사람이 직접 지난주 커밋 내역을 돌아보며 "작업 공유" 섹션을 채워야 했음. 이 봇은 그 부분을 자동화해서, 회의 시작 전에 이미 기본 골격(날짜/참여자/작업 공유)이 채워진 상태로 만들어두는 게 목적. "이후 작업 공유"·"이슈"·"전체 공유 사안"처럼 커밋 로그로 알 수 없는 항목은 빈 템플릿으로 남겨두고 회의 중 직접 채우도록 함.

프론트/백엔드가 각자 회의록을 따로 쓰다 보니, 상대 팀이 알아야 할 내용만 확인하려고 팀 회의록 전체를 읽는 비효율이 생김. 그래서 각 팀 회의록에 상대 팀 공유용 섹션을 두고, 그 내용만 모아 통합 개발 미팅 회의록으로 자동으로 옮겨줌.

기술 스택

  • Python 3.12 + requests, python-dotenv (의존성 최소화, 별도 SDK 없이 REST API 직접 호출)
  • GitHub REST API — 저장소별 커밋 로그 조회 (경로 기준으로 카테고리 분류)
  • OpenAI Responses API (finditem/QnA-Bot와 동일한 방식) — 커밋 메시지를 한 줄 요약
  • Confluence REST API v1 — 페이지/폴더 조회·생성·갱신 (storage format으로 본문 작성)
  • GitHub Actions (cron) — 리포트별로 다른 시간에 매주 월요일 자동 실행 (아래 동작 흐름 참고)

동작 흐름

세 리포트는 실행 시간이 서로 다르고, 통합 리포트가 프론트/백엔드 리포트 결과를 재료로 쓰기 때문에 백엔드 → 프론트 → 통합 순서로 크론을 배치함.

프론트/백엔드 회의록

  1. GitHub Actions가 크론 스케줄에 트리거됨 (프론트 매주 월요일 11:30 KST, 백엔드 07:47 KST — workflow_dispatch로 수동 실행도 가능)
  2. 커밋 수집: 대상 인원별로 지난 7일간의 커밋을 GitHub API로 조회 (프론트는 REPO_RULES에 정의된 저장소·경로 규칙에 따라 모니터링/일정관리/운영으로 카테고리 분류, 백엔드는 대상 저장소 전체를 하나로 취급)
  3. 요약: 사람별(프론트는 카테고리별까지) 커밋 메시지 목록을 OpenAI에 보내 한 줄 요약으로 압축
  4. 렌더링: 회의록 템플릿 구조(날짜, 참여자 멘션, 작업 공유, 이후 작업 공유, 공유·이슈·질문 공유, 상대 팀 공유 섹션)에 맞춰 Confluence storage format(XHTML) 생성
  5. 월별 폴더 확인/생성: 정해진 폴더 아래 이번 달 폴더(예: 통합 26년 7월)가 있는지 확인, 없으면 새로 생성 (페이지·폴더 타입 구분 없이 정확한 제목으로 검색해서 중복 생성 방지)
  6. 업서트: 그 폴더 아래에 M월 DD일 미팅 제목으로 페이지가 이미 있으면 갱신, 없으면 새로 생성
GitHub 커밋 로그 → 사람(×카테고리)별 수집 → OpenAI 요약 → Confluence storage format 렌더링
  → 이번 달 폴더 확인/생성 → 페이지 upsert (있으면 갱신, 없으면 생성)

통합 개발 미팅 회의록

커밋을 직접 수집하지 않고, 그 주에 이미 생성된 프론트/백엔드 회의록에서 상대 팀 공유 섹션만 가져와 합침.

  1. GitHub Actions가 매주 월요일 15:17 KST에 트리거됨 (프론트/백엔드 리포트가 먼저 끝난 뒤 실행되도록 배치)
  2. 그 주 프론트 회의록에서 "백엔드 미팅 공유 사안" 섹션, 백엔드 회의록에서 "프론트 미팅 공유 사항" 섹션을 각각 파싱
  3. 통합 회의록 템플릿(날짜, 팀별 참가자, 프론트 공유 사안, 백엔드 공유 사안, 최종 공유 사안, 전체 회의 공유 사안, 공유/이슈/질문 공유)에 맞춰 렌더링
  4. 월별 폴더 확인/생성 → MM월 DD일 개발 미팅 제목으로 페이지 upsert
프론트 회의록 "백엔드 미팅 공유 사안" + 백엔드 회의록 "프론트 미팅 공유 사항" 파싱
  → 통합 회의록 템플릿 렌더링 → 이번 달 폴더 확인/생성 → 페이지 upsert

파일 구성

파일 역할
frontend/weekly_report.py 프론트엔드 회의록 메인 스크립트 (전체 플로우)
frontend/test_weekly_report.py 렌더링/파싱 로직 self-check (네트워크 호출 없음)
backend/weekly_report.py 백엔드 회의록 메인 스크립트 — 설정 완료, 실행 검증 전
backend/test_weekly_report.py 렌더링/파싱 로직 self-check (네트워크 호출 없음)
combined/weekly_report.py 통합 회의록 스크립트 — 프론트/백엔드 양쪽 파싱 완료, docs/combined-report-plan.md 참고
combined/test_weekly_report.py 렌더링/파싱 로직 self-check (네트워크 호출 없음)
common/confluence_client.py Confluence REST API 공용 헬퍼 (여러 회의록 스크립트가 공유)
common/lookup_account_id.py 참여자 @멘션용 Confluence accountId 조회 헬퍼
.github/workflows/frontend-weekly-report.yml 프론트엔드 회의록 스케줄 실행 워크플로
.github/workflows/backend-weekly-report.yml 백엔드 회의록 스케줄 실행 워크플로
.github/workflows/combined-weekly-report.yml 통합 회의록 스케줄 실행 워크플로

참고

  • 커밋 조회는 기본 브랜치(main)에 머지된 커밋만 대상으로 함. 아직 머지 안 된 PR의 작업은 포함되지 않음 (의도적 — "작업 공유"는 완료된 작업 기준)

About

Confluence 회의록 문서를 매주 자동으로 작성해주는 도구

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages