From eb84ae707fe67b737cfef63d5ed349037c519182 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=8E=98=ED=86=A0?= <84930748+chanho0908@users.noreply.github.com> Date: Thu, 18 Dec 2025 11:02:09 +0900 Subject: [PATCH 01/11] Create basic-report.md issue template Add a basic issue report template for the repository. --- .github/ISSUE_TEMPLATE/basic-report.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/basic-report.md diff --git a/.github/ISSUE_TEMPLATE/basic-report.md b/.github/ISSUE_TEMPLATE/basic-report.md new file mode 100644 index 0000000..253737d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/basic-report.md @@ -0,0 +1,6 @@ +## Description +> 어떤 작업에 대한 이슈인지 적어주세요. ex) 프로젝트 초기 세팅 + +## TODO +>이슈에서 해야 할 일을 적어주세요. +- [ ] 할일 From a384da3ffbf62807935ca6c3676b82172a6b1893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=8E=98=ED=86=A0?= <84930748+chanho0908@users.noreply.github.com> Date: Thu, 18 Dec 2025 11:04:46 +0900 Subject: [PATCH 02/11] Delete .github/ISSUE_TEMPLATE directory --- .github/ISSUE_TEMPLATE/basic-report.md | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/basic-report.md diff --git a/.github/ISSUE_TEMPLATE/basic-report.md b/.github/ISSUE_TEMPLATE/basic-report.md deleted file mode 100644 index 253737d..0000000 --- a/.github/ISSUE_TEMPLATE/basic-report.md +++ /dev/null @@ -1,6 +0,0 @@ -## Description -> 어떤 작업에 대한 이슈인지 적어주세요. ex) 프로젝트 초기 세팅 - -## TODO ->이슈에서 해야 할 일을 적어주세요. -- [ ] 할일 From 1d3744ec67827c8138b698baf4193e2a1495a6da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=8E=98=ED=86=A0?= <84930748+chanho0908@users.noreply.github.com> Date: Thu, 18 Dec 2025 11:05:47 +0900 Subject: [PATCH 03/11] Update issue templates --- .github/ISSUE_TEMPLATE/issue-template.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/issue-template.md diff --git a/.github/ISSUE_TEMPLATE/issue-template.md b/.github/ISSUE_TEMPLATE/issue-template.md new file mode 100644 index 0000000..35c83bf --- /dev/null +++ b/.github/ISSUE_TEMPLATE/issue-template.md @@ -0,0 +1,15 @@ +--- +name: Issue template +about: The base issue template +title: '' +labels: '' +assignees: '' + +--- + +## Description +> 어떤 작업에 대한 이슈인지 적어주세요. ex) 프로젝트 초기 세팅 + +## TODO +>이슈에서 해야 할 일을 적어주세요. +- [ ] 할일 From 004ae2d13571f14be674bb69b33791d089d24ee4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=8E=98=ED=86=A0?= <84930748+chanho0908@users.noreply.github.com> Date: Thu, 18 Dec 2025 11:17:30 +0900 Subject: [PATCH 04/11] Create PULL_REQUEST_TEMPLATE.md --- .../ISSUE_TEMPLATE/PULL_REQUEST_TEMPLATE.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE/PULL_REQUEST_TEMPLATE.md b/.github/ISSUE_TEMPLATE/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..66239e3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,24 @@ +## 이슈 번호 + + + +## 리뷰/머지 희망 기한 (선택) + + + +## 작업내용 + + + +## 결과물 + + + + + +## 리뷰어에게 추가로 요구하는 사항 (선택) + From 4c9c9a4ed37da3437eb11e3cd4f4d4cad0a630d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=8E=98=ED=86=A0?= <84930748+chanho0908@users.noreply.github.com> Date: Thu, 18 Dec 2025 11:51:15 +0900 Subject: [PATCH 05/11] Refine review guidelines and configuration settings Updated review guidelines and configurations in .coderabbit.yml to enhance clarity and structure. --- .coderabbit.yml | 326 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 326 insertions(+) create mode 100644 .coderabbit.yml diff --git a/.coderabbit.yml b/.coderabbit.yml new file mode 100644 index 0000000..98b6d00 --- /dev/null +++ b/.coderabbit.yml @@ -0,0 +1,326 @@ +# CodeRabbit이 사용할 언어 설정 (한국어) +language: ko-KR + +# AI 코치의 성격과 리뷰 스타일을 정의하는 지침 +tone_instructions: > + 우아한테크코스 코치처럼 문제의 원인과 개선 방법을 명확히 제시하고, 교육적 관점에서 리뷰하세요. + 비판보다 개선 중심이며, 관련 문서 추천과 위트 있는 칭찬 + +# 코드 리뷰 설정 +reviews: + profile: chill # 리뷰 스타일: 편안하고 친근한 톤 + request_changes_workflow: false # Request Change 요청시 병합 비활성화 해제 + high_level_summary: true # PR 전체 요약 제공 + changed_files_summary: false # 개별 파일 요약은 비활성화 (중복 방지) + sequence_diagrams: false # 시퀀스 다이어그램 생성 비활성화 + assess_linked_issues: true # 연결된 이슈 분석 활성화 + related_issues: false # 관련 이슈 추천 비활성화 + related_prs: false # 관련 PR 추천 비활성화 + suggested_labels: false # 라벨 추천 비활성화 + auto_apply_labels: false # 자동 라벨 적용 비활성화 + suggested_reviewers: false # 리뷰어 추천 비활성화 + auto_assign_reviewers: false # 자동 리뷰어 할당 비활성화 + poem: false # 리뷰 완료 후 시 작성 비활성화 + + # 특정 경로별 상세 리뷰 지침 설정 + path_instructions: + # Feature 모듈 - MVI 패턴 적용 + - path: feature/** + instructions: | + **Feature 모듈 (MVI 패턴) 리뷰 가이드라인** + + 1. **MVI 패턴 준수** + - Intent: 사용자 액션이 명확하게 정의되어 있는가? + - State: UI 상태가 불변(immutable) 데이터 클래스로 정의되어 있는가? + - SideEffect: 일회성 이벤트(네비게이션, 토스트 등)가 적절히 분리되어 있는가? + - 단방향 데이터 플로우가 유지되는가? (Intent → ViewModel → State → View) + + 2. **Compose UI** + - Composable 함수가 순수 함수인가? (부수 효과 없음) + - State Hoisting이 적절히 적용되었는가? + - 불필요한 recomposition이 발생하지 않는가? + - remember, LaunchedEffect 등 사이드 이펙트 API가 적절히 사용되었는가? + - Preview Composable이 제공되는가? + + 5. **의존성 주입** + - Koin을 통한 DI가 적절히 구성되어 있는가? + + # Domain 모듈 - Pure Kotlin + - path: domain/** + instructions: | + **Domain 모듈 (Pure Kotlin) 리뷰 가이드라인** + + 1. **클린 아키텍처 원칙** + - Android/외부 프레임워크 의존성이 전혀 없는가? + - 비즈니스 로직이 명확하게 표현되어 있는가? + - 도메인 모델이 불변 객체로 설계되어 있는가? + + 2. **모델 설계** + - 값 객체(Value Object) 패턴이 적절히 활용되었는가? + - 도메인 규칙이 모델 내부에 캡슐화되어 있는가? + - 유효성 검증 로직이 도메인 모델에 포함되어 있는가? + + 3. **Repository 인터페이스** + - 인터페이스가 도메인 요구사항을 표현하는가? + - 반환 타입이 도메인 모델인가? (DTO/Entity가 아닌) + - 코루틴 Flow/suspend 함수가 적절히 활용되었는가? + + 4. **UseCase 패턴 (선택적)** + - 단일 책임 원칙이 지켜지는가? + - 비즈니스 로직 재사용성이 확보되는가? + + # Data 모듈 - Repository 구현체 + - path: data/** + instructions: | + **Data 모듈 리뷰 가이드라인** + + 1. **Repository 구현** + - Domain 인터페이스를 정확히 구현하고 있는가? + - 데이터 소스(Remote/Local) 조합 로직이 적절한가? + - 에러 핸들링이 도메인 예외로 변환되는가? + + 2. **Mapper 패턴** + - DTO → Domain 모델 변환이 명확한가? + - Mapper가 단순하고 테스트 가능한가? + - null safety 처리가 적절한가? + + 3. **데이터 캐싱** + - 캐싱 전략이 명확한가? (메모리/디스크) + - 캐시 무효화 로직이 있는가? + + # Core:Network 모듈 + - path: core/network/** + instructions: | + **Network 모듈 리뷰 가이드라인** + + 1. **Retrofit 설정** + - Converter/Adapter가 적절히 구성되었는가? + - Timeout 설정이 합리적인가? + - 로깅 인터셉터가 디버그 빌드에만 적용되는가? + + 2. **API 정의** + - RESTful 원칙이 준수되는가? + - suspend 함수 또는 Flow로 비동기 처리되는가? + - 에러 응답 처리가 명확한가? + + 3. **보안** + - API 키가 하드코딩되지 않았는가? + - HTTPS가 사용되는가? + - Certificate Pinning 고려가 필요한가? + + # Core:UI 모듈 + - path: core/ui/** + instructions: | + **공통 UI 모듈 리뷰 가이드라인** + + 1. **재사용 가능한 Composable** + - 컴포넌트가 충분히 일반화되어 있는가? + - 커스터마이징 옵션이 적절한가? + - Preview가 다양한 상태를 커버하는가? + + 2. **MVI 베이스 클래스** + - State, StateHolder, SideEffect 인터페이스가 명확한가? + - 제네릭 타입이 적절히 활용되었는가? + + 3. **Formatter 유틸리티** + - 포맷팅 로직이 순수 함수인가? + - 다국어/로케일 처리가 고려되었는가? + + # Core:Design-System 모듈 + - path: core/design-system/** + instructions: | + **디자인 시스템 리뷰 가이드라인** + + 1. **테마 구성** + - Material Design 3 가이드라인 준수 + - Dark Mode 지원 + - 색상/타이포그래피/간격 체계가 일관적인가? + + 2. **컴포넌트 라이브러리** + - 디자인 시스템이 프로젝트 전반에 적용 가능한가? + - 접근성(Accessibility) 고려 + + # Build Logic Convention Plugins + - path: build-logic/** + instructions: | + **Convention Plugin 리뷰 가이드라인** + + 1. **플러그인 설계** + - 각 Convention Plugin이 명확한 책임을 가지는가? + - 중복 설정이 제거되었는가? + - 버전 카탈로그(libs.versions.toml) 활용이 적절한가? + + 2. **빌드 성능** + - 불필요한 의존성이 포함되지 않았는가? + - Configuration Cache 호환성 + - Build Cache 최적화 + + 3. **유지보수성** + - 확장 함수가 가독성을 높이는가? + - DSL이 직관적인가? + + # 테스트 코드 + - path: "**/test/**" + instructions: | + **테스트 코드 리뷰 가이드라인** + + 1. **테스트 구조** + - Given-When-Then 패턴 준수 + - 테스트 메서드명이 명확한가? (should_When_Given 형식) + - Arrange-Act-Assert 구조가 명확한가? + + 2. **테스트 커버리지** + - 핵심 비즈니스 로직 테스트 완료 여부 + - Edge Case 및 예외 상황 테스트 + - Happy Path와 Sad Path 모두 커버 + + 3. **코루틴 테스트** + - TestDispatcher 활용 + - Flow 테스트가 적절한가? + + **누락된 테스트 케이스 제안:** + - ViewModel: Intent 처리 및 State 변화 테스트 + - Repository: 데이터 조회/변환 테스트 + - Domain Model: 비즈니스 로직 및 유효성 검증 테스트 + - Mapper: DTO → Domain 변환 테스트 + + # Gradle 빌드 파일 + - path: "**/*.gradle.kts" + instructions: | + **Gradle 빌드 파일 리뷰 가이드라인** + + 1. **Convention Plugin 활용** + - 중복 설정이 Convention Plugin으로 추출되었는가? + - 모듈별로 적절한 Convention Plugin이 적용되었는가? + + 2. **의존성 관리** + - Version Catalog (libs.versions.toml) 사용 + - 불필요한 의존성 제거 + - 의존성 범위가 적절한가? (implementation/api/compileOnly) + + 3. **모듈 구조** + - 순환 의존성이 없는가? + - 의존성 방향이 올바른가? (domain ← data, feature → domain) + + # 리소스 파일 + - path: "**/res/**" + instructions: | + **리소스 파일 리뷰 가이드라인** + + 1. **문자열 리소스** + - 하드코딩 문자열 제거 + - 다국어 지원 고려 + - 포맷팅 문자열 활용 + + 2. **색상/테마** + - Design System 모듈로 이동 검토 + - Dark Mode 대응 + + # 자동 리뷰 기능 설정 + abort_on_close: true # PR이 닫히면 리뷰 중지 + disable_cache: false # 캐시 기능 활성화 + auto_review: + enabled: true # 자동 리뷰 활성화 + auto_incremental_review: false # 증분 리뷰 비활성화 + base_branches: + - main # 기본 브랜치 + - develop # 개발 브랜치 + +# 채팅 및 상호작용 설정 +chat: + auto_reply: true # 질문 시 자동 응답 활성화 + +# 지식 베이스 설정 +knowledge_base: + opt_out: false # 지식베이스 사용 허용 + + web_search: + enabled: true # 웹 검색을 통한 최신 정보 활용 + + code_guidelines: + enabled: true # 팀 코드 가이드라인 참조 활성화 + filePatterns: # 참조할 팀 문서들 + - README.md # 프로젝트 구조 및 아키텍처 + - docs/**/*.md # 추가 문서 (생성 시) + + learnings: + scope: local # 학습 데이터를 현재 저장소로 제한 + + issues: + scope: local # 이슈 참조를 현재 저장소로 제한 + + pull_requests: + scope: local # PR 참조를 현재 저장소로 제한 + +# 작업 가이드라인 +work_guidelines: + goal_setting: # 작업 계획 및 범위 설정 + - "이슈 티켓 발행 시 목표 명확히 설정" + - "큰 작업은 여러 개의 작은 티켓으로 분할" + - "PR은 최대 800 Line 제한" + - "주요 변경사항이나 새로운 패턴 도입 시 반드시 사전 논의" + + # 안드로이드 멀티모듈 프로젝트 특화 가이드라인 + multimodule_rules: + - "모듈 간 의존성 방향 준수 (feature → domain ← data, feature → core)" + - "Pure Kotlin 모듈(domain)에 Android 의존성 금지" + - "Convention Plugin을 통한 일관된 빌드 설정" + - "공통 코드는 적절한 core 모듈로 추출" + + mvi_pattern_rules: + - "단방향 데이터 플로우 유지" + - "State는 불변 데이터 클래스" + - "SideEffect는 일회성 이벤트만" + - "ViewModel에서 View 참조 금지" + +# 리뷰어 원칙 +reviewer_principles: + basic_rules: + - "피드백은 코드, 프로세스, 사양만을 대상으로 함" + - "리뷰이와 리뷰어의 인격과는 분리" + - "언어 폭력이나 비난이 섞인 지적 금지" + - "시간에 쫓겨 리뷰 품질을 낮추지 말 것" + + reviewer_attitude: + - "리뷰는 모두를 위한 것 (나 자신, 팀, 서비스)" + - "적절한 시간 분배로 피드백 마감기한 준수" + - "우선순위를 정해 필요한 부분만 간단히 리뷰" + + feedback_method: + constructive: + good: "이 부분을 다음과 같이 개선할 수 있을 것 같습니다" + bad: "이 코드는 잘못되었다" + specific: + good: "StateFlow 대신 MutableStateFlow를 private으로 캡슐화하면 불변성이 보장됩니다" + bad: "이 코드는 문제가 있다" + discussion: + - "토론을 하되, 납득할 수 있는 이유와 근거 충분히 제시" + + mindset: + - "리뷰는 모두를 위한 것" + - "사람은 누구나 실수한다 - 빠르게 인정하고 열린 마음으로 토론" + - "칭찬도 좋은 코드 리뷰 - 특별한 의견이 없다면 칭찬하기" + - "실수 지적받았을 때 방어적이 되지 않기" + - "리뷰를 위한 리뷰는 자제 - 의미 있는 피드백에 집중" + +# 코드 생성 (자동 문서화 및 테스트) +code_generation: + docstrings: + language: ko-KR + path_instructions: + - path: "**/*.kt" + instructions: | + - 모든 public 함수/클래스에 대해 KDoc 양식을 따라 한글로 간결하게 작성해주세요. + - 함수 목적, 파라미터, 반환값, 예외를 명확하게 기술해 주세요. + - Composable 함수는 UI 설명과 파라미터 역할을 명시해주세요. + - 샘플 코드/사용 예시는 필요한 경우에만 포함해 주세요. + + unit_tests: + path_instructions: + - path: "**/*.kt" + instructions: | + - ViewModel: Given-When-Then 패턴으로 Intent 처리 및 State 변화 테스트 + - Repository: 데이터 조회/변환 로직 테스트 (Fake 활용) + - Domain Model: 비즈니스 로직 및 유효성 검증 단위 테스트 + - Mapper: DTO → Domain 변환 테스트 (모든 필드 검증) + - UseCase: 비즈니스 로직 조합 및 예외 처리 테스트 From 5cce430c84930c2d15cd40ca86ef4120a75a1506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=8E=98=ED=86=A0?= <84930748+chanho0908@users.noreply.github.com> Date: Sat, 20 Dec 2025 21:20:10 +0900 Subject: [PATCH 06/11] Add Discord notifications for PR events --- .github/workflows/discord-pr-notify.yml | 122 ++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 .github/workflows/discord-pr-notify.yml diff --git a/.github/workflows/discord-pr-notify.yml b/.github/workflows/discord-pr-notify.yml new file mode 100644 index 0000000..a1002bc --- /dev/null +++ b/.github/workflows/discord-pr-notify.yml @@ -0,0 +1,122 @@ +name: Discord PR Notifications + +on: + pull_request: + types: [review_requested, closed] + pull_request_review: + types: [submitted] + +jobs: + review-request-notify: + if: github.event.action == 'review_requested' + runs-on: ubuntu-latest + steps: + - name: Send Review Request Notification + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_URL }} + REQUESTED_REVIEWER: ${{ github.event.requested_reviewer.login }} + PR_TITLE: ${{ github.event.pull_request.title }} + PR_URL: ${{ github.event.pull_request.html_url }} + PR_NUMBER: ${{ github.event.pull_request.number }} + run: | + case "$REQUESTED_REVIEWER" in + "chanho0908") + DISCORD_MENTION="<@1451876971540774912>" + ;; + "dogmania") + DISCORD_MENTION="<@951268632770531399>" + ;; + *) + DISCORD_MENTION="@$REQUESTED_REVIEWER" + ;; + esac + + curl -H "Content-Type: application/json" \ + -X POST \ + -d "{\"content\": \"$DISCORD_MENTION 리뷰 요청이 왔어요! 👀\", \"embeds\": [{\"title\": \"#$PR_NUMBER $PR_TITLE\", \"url\": \"$PR_URL\", \"color\": 5814783}]}" \ + $DISCORD_WEBHOOK + + review-completed-notify: + if: github.event_name == 'pull_request_review' + runs-on: ubuntu-latest + steps: + - name: Send Review Completed Notification + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_URL }} + REVIEWER: ${{ github.event.review.user.login }} + PR_TITLE: ${{ github.event.pull_request.title }} + PR_URL: ${{ github.event.pull_request.html_url }} + AUTHOR: ${{ github.event.pull_request.user.login }} + PR_NUMBER: ${{ github.event.pull_request.number }} + REVIEW_STATE: ${{ github.event.review.state }} + run: | + case "$AUTHOR" in + "chanho0908") + AUTHOR_MENTION="<@1451876971540774912>" + ;; + "dogmania") + AUTHOR_MENTION="<@951268632770531399>" + ;; + *) + AUTHOR_MENTION="@$AUTHOR" + ;; + esac + + case "$REVIEW_STATE" in + "approved") + MESSAGE="✅ 리뷰가 승인되었습니다!" + COLOR=3066993 + EMOJI="✅" + ;; + "changes_requested") + MESSAGE="🔧 수정 요청이 있습니다" + COLOR=15158332 + EMOJI="🔧" + ;; + "commented") + MESSAGE="💬 리뷰 코멘트가 달렸습니다" + COLOR=10181046 + EMOJI="💬" + ;; + *) + MESSAGE="리뷰가 완료되었습니다" + COLOR=5814783 + EMOJI="📝" + ;; + esac + + curl -H "Content-Type: application/json" \ + -X POST \ + -d "{\"content\": \"$AUTHOR_MENTION $MESSAGE\", \"embeds\": [{\"title\": \"$EMOJI #$PR_NUMBER $PR_TITLE\", \"url\": \"$PR_URL\", \"color\": $COLOR, \"fields\": [{\"name\": \"PR 작성자\", \"value\": \"$AUTHOR\", \"inline\": true}, {\"name\": \"리뷰어\", \"value\": \"$REVIEWER\", \"inline\": true}]}]}" \ + $DISCORD_WEBHOOK + + merge-notify: + if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + steps: + - name: Send Merge Notification + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_URL }} + PR_TITLE: ${{ github.event.pull_request.title }} + PR_URL: ${{ github.event.pull_request.html_url }} + AUTHOR: ${{ github.event.pull_request.user.login }} + MERGER: ${{ github.event.pull_request.merged_by.login }} + PR_NUMBER: ${{ github.event.pull_request.number }} + BASE_BRANCH: ${{ github.event.pull_request.base.ref }} + run: | + case "$AUTHOR" in + "chanho0908") + AUTHOR_MENTION="<@1451876971540774912>" + ;; + "dogmania") + AUTHOR_MENTION="<@951268632770531399>" + ;; + *) + AUTHOR_MENTION="@$AUTHOR" + ;; + esac + + curl -H "Content-Type: application/json" \ + -X POST \ + -d "{\"content\": \"🎉 PR이 머지되었습니다! $AUTHOR_MENTION\", \"embeds\": [{\"title\": \"#$PR_NUMBER $PR_TITLE\", \"url\": \"$PR_URL\", \"color\": 3066993, \"fields\": [{\"name\": \"작성자\", \"value\": \"$AUTHOR\", \"inline\": true}, {\"name\": \"머지한 사람\", \"value\": \"$MERGER\", \"inline\": true}, {\"name\": \"브랜치\", \"value\": \"$BASE_BRANCH\", \"inline\": true}]}]}" \ + $DISCORD_WEBHOOK From 202f8760d92cd29be079194e8f15c607ea8a4655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=8E=98=ED=86=A0?= <84930748+chanho0908@users.noreply.github.com> Date: Sat, 20 Dec 2025 21:24:54 +0900 Subject: [PATCH 07/11] Simplify project title in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d0aee8b..c03aa9f 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# Twix - Android Multi-Module Project +# Twix From ecd87732497419c3373fef4b8df7c1b0c0b35730 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=8E=98=ED=86=A0?= <84930748+chanho0908@users.noreply.github.com> Date: Sat, 20 Dec 2025 21:36:41 +0900 Subject: [PATCH 08/11] Update Discord mentions for multiple reviewers --- .github/workflows/discord-pr-notify.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/discord-pr-notify.yml b/.github/workflows/discord-pr-notify.yml index a1002bc..e77d5b6 100644 --- a/.github/workflows/discord-pr-notify.yml +++ b/.github/workflows/discord-pr-notify.yml @@ -20,7 +20,7 @@ jobs: PR_NUMBER: ${{ github.event.pull_request.number }} run: | case "$REQUESTED_REVIEWER" in - "chanho0908") + "chanho0908"|"JoungPeto0908") DISCORD_MENTION="<@1451876971540774912>" ;; "dogmania") @@ -51,7 +51,7 @@ jobs: REVIEW_STATE: ${{ github.event.review.state }} run: | case "$AUTHOR" in - "chanho0908") + "chanho0908"|"JoungPeto0908") AUTHOR_MENTION="<@1451876971540774912>" ;; "dogmania") @@ -105,7 +105,7 @@ jobs: BASE_BRANCH: ${{ github.event.pull_request.base.ref }} run: | case "$AUTHOR" in - "chanho0908") + "chanho0908"|"JoungPeto0908") AUTHOR_MENTION="<@1451876971540774912>" ;; "dogmania") From be4f382f78f6ed1eb53c46f27c8bda641a4dfa26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=8E=98=ED=86=A0?= <84930748+chanho0908@users.noreply.github.com> Date: Sat, 20 Dec 2025 21:45:36 +0900 Subject: [PATCH 09/11] Refactor Discord notification mentions and messages Updated Discord mentions and modified messages for PR notifications. --- .github/workflows/discord-pr-notify.yml | 26 ++++++++----------------- 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/.github/workflows/discord-pr-notify.yml b/.github/workflows/discord-pr-notify.yml index e77d5b6..f456074 100644 --- a/.github/workflows/discord-pr-notify.yml +++ b/.github/workflows/discord-pr-notify.yml @@ -21,7 +21,7 @@ jobs: run: | case "$REQUESTED_REVIEWER" in "chanho0908"|"JoungPeto0908") - DISCORD_MENTION="<@1451876971540774912>" + DISCORD_MENTION="<@379613882001391626>" ;; "dogmania") DISCORD_MENTION="<@951268632770531399>" @@ -52,7 +52,7 @@ jobs: run: | case "$AUTHOR" in "chanho0908"|"JoungPeto0908") - AUTHOR_MENTION="<@1451876971540774912>" + AUTHOR_MENTION="<@379613882001391626>" ;; "dogmania") AUTHOR_MENTION="<@951268632770531399>" @@ -63,31 +63,23 @@ jobs: esac case "$REVIEW_STATE" in - "approved") - MESSAGE="✅ 리뷰가 승인되었습니다!" - COLOR=3066993 - EMOJI="✅" - ;; "changes_requested") - MESSAGE="🔧 수정 요청이 있습니다" + MESSAGE="수정 요청이 있습니다 🔧" COLOR=15158332 - EMOJI="🔧" ;; "commented") - MESSAGE="💬 리뷰 코멘트가 달렸습니다" + MESSAGE="리뷰 코멘트가 달렸습니다 💬" COLOR=10181046 - EMOJI="💬" ;; *) - MESSAGE="리뷰가 완료되었습니다" + MESSAGE="리뷰가 완료되었습니다 📝" COLOR=5814783 - EMOJI="📝" ;; esac curl -H "Content-Type: application/json" \ -X POST \ - -d "{\"content\": \"$AUTHOR_MENTION $MESSAGE\", \"embeds\": [{\"title\": \"$EMOJI #$PR_NUMBER $PR_TITLE\", \"url\": \"$PR_URL\", \"color\": $COLOR, \"fields\": [{\"name\": \"PR 작성자\", \"value\": \"$AUTHOR\", \"inline\": true}, {\"name\": \"리뷰어\", \"value\": \"$REVIEWER\", \"inline\": true}]}]}" \ + -d "{\"content\": \"$AUTHOR_MENTION $MESSAGE\", \"embeds\": [{\"title\": \"#$PR_NUMBER $PR_TITLE\", \"url\": \"$PR_URL\", \"color\": $COLOR}]}" \ $DISCORD_WEBHOOK merge-notify: @@ -100,13 +92,11 @@ jobs: PR_TITLE: ${{ github.event.pull_request.title }} PR_URL: ${{ github.event.pull_request.html_url }} AUTHOR: ${{ github.event.pull_request.user.login }} - MERGER: ${{ github.event.pull_request.merged_by.login }} PR_NUMBER: ${{ github.event.pull_request.number }} - BASE_BRANCH: ${{ github.event.pull_request.base.ref }} run: | case "$AUTHOR" in "chanho0908"|"JoungPeto0908") - AUTHOR_MENTION="<@1451876971540774912>" + AUTHOR_MENTION="<@379613882001391626>" ;; "dogmania") AUTHOR_MENTION="<@951268632770531399>" @@ -118,5 +108,5 @@ jobs: curl -H "Content-Type: application/json" \ -X POST \ - -d "{\"content\": \"🎉 PR이 머지되었습니다! $AUTHOR_MENTION\", \"embeds\": [{\"title\": \"#$PR_NUMBER $PR_TITLE\", \"url\": \"$PR_URL\", \"color\": 3066993, \"fields\": [{\"name\": \"작성자\", \"value\": \"$AUTHOR\", \"inline\": true}, {\"name\": \"머지한 사람\", \"value\": \"$MERGER\", \"inline\": true}, {\"name\": \"브랜치\", \"value\": \"$BASE_BRANCH\", \"inline\": true}]}]}" \ + -d "{\"content\": \"🎉 PR이 머지되었습니다! $AUTHOR_MENTION\", \"embeds\": [{\"title\": \"#$PR_NUMBER $PR_TITLE\", \"url\": \"$PR_URL\", \"color\": 3066993}]}" \ $DISCORD_WEBHOOK From 251eac72bfa8d5aab0a02222d0b972fd6a6eeeed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=8E=98=ED=86=A0?= <84930748+chanho0908@users.noreply.github.com> Date: Sat, 20 Dec 2025 21:50:58 +0900 Subject: [PATCH 10/11] Fix curl command in Discord PR notification workflow From 6ecf93ba10f2f1a36f3e38cb5afad79f32cf4dc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=8E=98=ED=86=A0?= <84930748+chanho0908@users.noreply.github.com> Date: Sat, 20 Dec 2025 21:51:41 +0900 Subject: [PATCH 11/11] Add emoji to project title in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c03aa9f..220ae9f 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# Twix +# Twix 🔥