Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 77 additions & 39 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -1,79 +1,114 @@
name: 🐞 버그 리포트 (Bug Report)
description: 발생한 버그나 오류를 제보해 주세요.
title: "[Bug]: "
name: "🐞 Backend Bug Report"
description: API, 인증, 배치, 점수 계산, 데이터 정합성 관련 문제를 제보합니다.
title: "[Bug] "
labels: ["bug", "triage"]
body:
- type: markdown
attributes:
value: |
이 이슈를 작성해 주셔서 감사합니다! 문제를 파악할 수 있도록 상세히 적어주세요.
재현 가능한 정보와 로그를 남겨 주세요.
백엔드 이슈는 "어떤 요청/배치/계산 경로에서 깨졌는지"가 중요합니다.

- type: textarea
id: description
id: problem
attributes:
label: 어떤 버그인가요?
description: 발생한 문제에 대해 명확하고 간결하게 설명해 주세요.
placeholder: 로그인 버튼을 눌렀을 때 반응이 없습니다.
label: 문제 요약
description: 무엇이 잘못되었는지 한두 문장으로 설명해 주세요.
placeholder: GitHub 로그인 후 access token 재발급이 실패합니다.
validations:
required: true

- type: dropdown
id: area
attributes:
label: 영향 영역
options:
- auth
- ranking
- user
- badge
- batch
- integration/github
- security
- observability
- infra/config
- unknown
validations:
required: true

- type: textarea
id: reproduction
attributes:
label: 재현 방법 (Steps to Reproduce)
description: 개발자가 문제를 재현할 수 있도록 순서대로 적어주세요.
label: 재현 절차
description: 요청 순서, 입력값, API 경로, 배치 실행 조건을 순서대로 적어 주세요.
placeholder: |
1. 메인 페이지로 이동
2. '로그인' 버튼 클릭
3. 오류 메시지 발생
1. `/api/v1/auth/refresh` 호출
2. 만료된 refresh token 쿠키 포함
3. 500 응답 발생
validations:
required: false
required: true

- type: textarea
id: expected-behavior
id: expected_behavior
attributes:
label: 기대 동작 (Expected Behavior)
description: 원래 정상적으로 작동했다면 어떤 결과가 나와야 했나요?
placeholder: 로그인 모달 창이 떠야 합니다.
label: 기대 동작
placeholder: 401 또는 정상적인 토큰 재발급 응답이 와야 합니다.
validations:
required: false
required: true

- type: textarea
id: actual_behavior
attributes:
label: 실제 동작
placeholder: 응답 본문 없이 500이 발생하고 서버 로그에 JWT 파싱 예외가 남습니다.
validations:
required: true

- type: textarea
id: intent_spec
id: evidence
attributes:
label: 의도 명세 (Intent Spec)
description: 버그 수정에서 반드시 보장해야 할 동작과 비목표를 작성해 주세요.
label: 로그 / 메트릭 / 트레이스 / 스크린샷
description: 서버 로그, actuator 정보, trace id, 클라이언트 콘솔, 스크린샷 등 증거를 남겨 주세요.
placeholder: |
반드시 보장할 동작:
비목표:
- trace_id:
- log excerpt:
- metric/query:
- screenshot/link:
validations:
required: false

- type: input
id: related_plan
- type: textarea
id: impact
attributes:
label: 관련 계획 문서 경로 (선택)
placeholder: "docs/plans/active/2026-02-25-bugfix-name.md"
label: 영향도와 범위
description: 사용자 영향, 데이터 손상 가능성, 우회 가능 여부를 적어 주세요.
placeholder: |
- 영향 사용자:
- 데이터 영향:
- 우회 방법:
validations:
required: false

- type: textarea
id: environment
id: acceptance
attributes:
label: 실행 환경 (Environment)
description: 버그가 발생한 환경 정보를 입력해 주세요.
label: 수정 후 확인해야 할 조건
placeholder: |
- OS: [e.g. macOS, Windows 10]
- Browser: [e.g. Chrome 98, Safari]
- Version: [e.g. 1.0.0]
- 만료 토큰 요청 시 401을 반환한다.
- 정상 토큰 요청 시 재발급이 성공한다.
- 관련 에러 로그가 더 이상 발생하지 않는다.
validations:
required: false
required: true

- type: textarea
id: logs
id: environment
attributes:
label: 스크린샷 또는 로그 (Screenshots/Logs)
description: 문제 상황을 보여주는 스크린샷이나 에러 로그가 있다면 첨부해 주세요.
label: 실행 환경
placeholder: |
- profile: local / dev / prod
- branch or commit:
- DB:
- 요청 클라이언트:
validations:
required: false

Expand All @@ -83,4 +118,7 @@ body:
label: 확인 사항
options:
- label: 이 이슈와 동일한 기존 이슈가 있는지 검색해 보았습니다.
required: false
required: true
- label: 재현 절차 또는 로그 등 디버깅 가능한 증거를 남겼습니다.
required: true

6 changes: 2 additions & 4 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
blank_issues_enabled: false
contact_links:
- name: 💬 질문 및 토론 (Discussions)
url: https://github.com/alexization/git-ranker/discussions
about: 버그나 기능 요청이 아닌 일반적인 질문이나 의견은 이곳을 이용해 주세요.
- name: 🔒 보안 취약점 제보
url: mailto:alexizationy@gmail.com
about: 민감한 보안 문제는 공개 이슈 대신 이메일로 제보해 주세요.
about: 인증, 권한, 토큰, 사용자 데이터 관련 민감 이슈는 공개 이슈 대신 이메일로 제보해 주세요.

72 changes: 72 additions & 0 deletions .github/ISSUE_TEMPLATE/engineering_task.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: "🛠️ Backend Engineering Task"
description: 리팩터링, 성능, 테스트, 보안, 관측성, 운영 개선 작업을 기록합니다.
title: "[Task] "
labels: ["task", "triage"]
body:
- type: dropdown
id: task_type
attributes:
label: 작업 유형
options:
- refactor
- performance
- testing
- security
- observability
- infra/config
- documentation
validations:
required: true

- type: textarea
id: reason
attributes:
label: 왜 필요한가요?
description: 지금 이 작업이 필요한 이유와 방치 비용을 적어 주세요.
validations:
required: true

- type: textarea
id: scope
attributes:
label: 작업 범위
description: 변경할 패키지, 설정, 테스트 범위를 적어 주세요.
placeholder: |
- `domain/ranking`
- `global/logging`
- `src/test/...`
validations:
required: true

- type: textarea
id: done
attributes:
label: 완료 조건
placeholder: |
- [ ] ...
- [ ] ...
validations:
required: true

- type: textarea
id: validation
attributes:
label: 검증 방법
placeholder: |
- `./gradlew test`
- `./gradlew integrationTest`
- 로그/메트릭 확인
validations:
required: true

- type: textarea
id: risks
attributes:
label: 리스크 및 의존성
placeholder: |
- 리스크:
- 의존성:
- 후속 작업:
validations:
required: false

105 changes: 76 additions & 29 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -1,64 +1,111 @@
name: 🚀 기능 요청 (Feature Request)
description: 프로젝트에 새로운 기능을 제안해 주세요.
title: "[Feat]: "
name: "🚀 Backend Feature Request"
description: API, 배치, 점수 계산, 인증, 데이터 처리 기능을 제안합니다.
title: "[Feature] "
labels: ["enhancement", "feature"]
body:
- type: markdown
attributes:
value: |
프로젝트 발전을 위한 아이디어를 제안해 주셔서 감사합니다!
기능 요청은 "무엇을 만들고 싶은지"보다 "어떤 문제를 해결해야 하는지"가 먼저여야 합니다.

- type: textarea
id: problem
attributes:
label: 관련된 문제 상황 (Is your feature request related to a problem?)
description: 어떤 불편함이나 문제를 해결하고 싶은지 설명해 주세요.
placeholder: "예: 매번 수동으로 설정을 변경해야 하는 것이 번거롭습니다."
label: 해결하려는 문제
description: 현재 어떤 불편, 누락, 운영 문제를 해결하려는지 적어 주세요.
placeholder: 현재 랭킹 계산 결과가 오래된 상태로 유지되어 사용자 혼란이 발생합니다.
validations:
required: true

- type: textarea
id: solution
id: outcome
attributes:
label: 제안하는 해결책 (Describe the solution you'd like)
description: 기능이 어떻게 동작해야 하는지 구체적으로 묘사해 주세요.
placeholder: "설정 파일 자동 로드 기능을 추가했으면 좋겠습니다."
label: 원하는 결과
description: 기능이 추가되면 사용자나 운영자가 무엇을 할 수 있어야 하는지 적어 주세요.
placeholder: 사용자가 수동 갱신을 요청하면 최신 집계 상태와 완료 시점을 확인할 수 있어야 합니다.
validations:
required: true

- type: dropdown
id: area
attributes:
label: 영향 영역
options:
- auth
- ranking
- user
- badge
- batch
- integration/github
- security
- observability
- infra/config
validations:
required: true

- type: textarea
id: intent_spec
id: desired_behavior
attributes:
label: 의도 명세 (Intent Spec)
description: 문제, 목표 동작, 비목표를 작성해 주세요.
label: 원하는 동작
description: API, 배치, 계산, 에러 처리 관점에서 원하는 동작을 구체적으로 적어 주세요.
placeholder: |
문제:
목표 동작:
비목표:
- 어떤 입력을 받는지
- 어떤 결과를 반환하는지
- 실패 시 어떻게 동작하는지
validations:
required: true

- type: input
id: plan_path
- type: textarea
id: acceptance
attributes:
label: 계획 문서 경로 (선택)
description: 큰 변경이면 docs/plans/active 경로를 연결해 주세요.
placeholder: "docs/plans/active/2026-02-25-feature-name.md"
label: 수용 기준
description: 완료 판정이 가능한 체크리스트를 적어 주세요.
placeholder: |
- [ ] ...
- [ ] ...
validations:
required: false
required: true

- type: textarea
id: alternatives
id: contract_impact
attributes:
label: 고려해 본 대안 (Alternatives considered)
description: 위 해결책 외에 고려해 본 다른 방법이 있다면 적어주세요.
label: API / 스키마 / 배치 영향
description: 엔드포인트, DTO, 이벤트, DB, 캐시, 스케줄러 영향이 있으면 적어 주세요.
placeholder: |
- API:
- DTO/Schema:
- DB/Migration:
- Batch/Scheduler:
validations:
required: false

- type: textarea
id: context
id: qa_evidence
attributes:
label: 필요한 검증 증거
description: 구현 후 어떤 테스트, 로그, 메트릭, trace 확인이 필요한지 적어 주세요.
placeholder: |
- `./gradlew test`
- `./gradlew integrationTest`
- actuator/prometheus 확인
- 관련 로그 확인
validations:
required: true

- type: textarea
id: non_goals_and_risks
attributes:
label: 비목표와 리스크
placeholder: |
비목표:
리스크:
validations:
required: false

- type: input
id: related_client_issue
attributes:
label: 추가 정보 (Additional context)
description: 스크린샷이나 참고할 만한 링크가 있다면 추가해 주세요.
label: 연관된 프론트엔드 이슈 또는 PR (선택)
placeholder: "alexization/git-ranker-client#123"
validations:
required: false
Loading