Skip to content
Open
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
207 changes: 135 additions & 72 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,101 +1,164 @@
# Contributing Guidelines

프로젝트에 기여해주셔서 감사합니다!

When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change.
해당 Repository에 기여하려는 경우, 변경 사항을 적용하기 전에 먼저 이슈(Issue), 이메일 또는 기타 방법을 통해 저장소 소유자와 변경 내용에 대해 논의해 주세요.

Please note we have a code of conduct, please follow it in all your interactions with the project.
또한 프로젝트의 행동 강령을 확인하고, 모든 커뮤니케이션 과정에서 이를 준수해 주시기 바랍니다.

<br>

## Table of Contents

1. [Issue](#1-issue)
2. [Branch Strategy](#2-branch-strategy-issue-based-workflow)
3. [Commit Convention](#3-commit-convention)
4. [Pull Request Process](#4-pull-request-process)

<br>

---

## 1. Issue

새로운 제안이나 버그 발견 시 이슈를 먼저 생성해주세요.

**Issue 탬플릿 사용:**
`.github/ISSUE_TEMPLATE`하위 템플릿과 연계하여 작성해주세요.

| Issue Type | About |
|---------------|-------------------------------------------|
| bug | Internal bug report |
| chore | Maintenance or housekeeping task |
| documentation | Documentation update or request |
| enhancement | Improvement to an existing feature |
| feature | New feature request |
| incident | Production incident / service outage |
| postmortem | Incident postmortem / root cause analysis |
| question | Internal technical question |

### **상세 기록**
### Issue 템플릿 사용

`.github/ISSUE_TEMPLATE` 하위 템플릿과 연계하여 작성해주세요.

| Issue Type | About |
| --------------- | ----------------------------------------- |
| `bug` | Internal bug report |
| `chore` | Maintenance or housekeeping task |
| `documentation` | Documentation update or request |
| `enhancement` | Improvement to an existing feature |
| `feature` | New feature request |
| `incident` | Production incident / service outage |
| `postmortem` | Incident postmortem / root cause analysis |
| `question` | Internal technical question |

### 상세 기록

Summary를 작성하고, 이슈 유형에 맞게 필요한 내용을 추가로 작성해주세요.
- bug의 경우 재현 방법(Steps to Reproduce)과 기대 결과(Expected Result), 실제 결과(Actual Result)를 상세히 작성해주세요.

> **bug** 의 경우 재현 방법(Steps to Reproduce)과 기대 결과(Expected Result), 실제 결과(Actual Result)를 상세히 작성해주세요.

<br>

---

## 2. Branch Strategy (Issue-based Workflow)

모든 브랜치는 생성된 이슈를 기반으로 생성하며, `develop` 브랜치에서 분기합니다.

**브랜치 생성 규칙**: `prefix/(이슈 번호)-Summary`
### 브랜치 생성 규칙

prefix는 Issue Type과 같습니다.
```
prefix/{이슈 번호}-Summary
```

> `prefix`는 Issue Type과 동일합니다.

**예시**

```
feature/42-add-login-api
fix/57-null-pointer-exception
documentation/8-api-guide
```

<br>

---

## 3. Commit Convention
커밋 메시지는 다음과 같은 형식을 사용합니다:
`Type(Scope): Summary (Issue No)`

| Type | About |
|-----------------|-----------------------------------|
| **feat** | 새로운 기능 추가 |
| **fix** | 버그 수정 |
| **enhancement** | 기존 기능의 향상 및 개선 |
| **docs** | 문서 수정 (README, 가이드 등) |
| **chore** | 빌드 업무 수정, 패키지 매니저 설정 등 (코드 수정 없음) |
| **hotfix** | 긴급한 버그 수정 |
| **test** | 테스트 코드 추가 및 수정 |
| **refactor** | 코드 리팩토링 (기능 변화 없음) |

| Scope | About |
|---------------|------------------|
| contracts | 컨트랙트 관련 작업 |
| documents | 일반 문서 관련 작업 |
| packages | 패키지 및 모듈 관련 작업 |
| admission | 입학 서비스 관련 작업 |
| analytics | 분석 서비스 관련 작업 |
| application | 지원서 서비스 관련 작업 |
| document | 특정 문서 파일 관련 작업 |
| evaluation | 평가 서비스 관련 작업 |
| gateway | 게이트웨이 관련 작업 |
| identity | 인증 및 신원 관리 관련 작업 |
| notification | 알림 서비스 관련 작업 |
| observability | 모니터링 및 관측성 관련 작업 |
| schedule | 스케줄 서비스 관련 작업 |
| infra | 인프라 관련 작업 |
| ci | CI/CD 파이프라인 관련 작업 |

커밋 메시지는 다음과 같은 형식을 사용합니다.

```
Type(Scope): Summary (Issue No)
```

### Type

| Type | About |
| --------------- | -------------------------------------------------- |
| `feat` | 새로운 기능 추가 |
| `fix` | 버그 수정 |
| `enhancement` | 기존 기능의 향상 및 개선 |
| `docs` | 문서 수정 (README, 가이드 등) |
| `chore` | 빌드 업무 수정, 패키지 매니저 설정 등 (코드 수정 없음) |
| `hotfix` | 긴급한 버그 수정 |
| `test` | 테스트 코드 추가 및 수정 |
| `refactor` | 코드 리팩토링 (기능 변화 없음) |

### Scope

| Scope | About |
| --------------- |-------------------|
| `contracts` | 컨트랙트 관련 작업 |
| `documents` | 일반 문서 관련 작업 |
| `packages` | 패키지 및 모듈 관련 작업 |
| `admission` | 관리자 서비스 관련 작업 |
| `analytics` | 통계 서비스 관련 작업 |
| `application` | 원서 서비스 관련 작업 |
| `document` | 파일 관련 작업 |
| `evaluation` | 성적 계산 관련 작업 |
| `gateway` | 게이트웨이 관련 작업 |
| `identity` | 인증 및 유저 관리 관련 작업 |
| `notification` | 공지 게시글 서비스 관련 작업 |
| `observability` | 모니터링 관련 작업 |
| `schedule` | 일정 서비스 관련 작업 |
| `infra` | 인프라 관련 작업 |
| `ci` | CI/CD 파이프라인 관련 작업 |

<br>

---

## 4. Pull Request Process
* 모든 pull request는 전부 template을 통하여 작성되어야합니다.

* 다음과 같은 형식으로 작성합니다: `Type(Scope): Summary (이슈 번호)`
### PR 제목 형식

```
Type(Scope): Summary #{이슈 번호}
```

### PR 템플릿 사용

`.github/PULL_REQUEST_TEMPLATE` 하위 템플릿과 연계하여 작성해주세요.

멀티 템플릿의 경우, PR 생성 URL 뒤에 `&template={템플릿 파일 이름}`을 붙여줘야 합니다.

```
https://github.com/EntryDSM/entrydsm-platform/compare/main...documentation/branch-name?expand=1&template=documentation.md
```

### 이슈 연결

PR 설명란에 아래와 같이 작성하면 PR 머지 시 해당 이슈가 자동으로 닫힙니다.

```
Closes #이슈번호
```

* 멀티 템플릿의 경우, PR 생성했을 때의 URL 뒤에 `&template={템플릿 파일 이름}` 을 붙여줘야 합니다.
(ex. `https://github.com/EntryDSM/entrydsm-platform/compare/main...documentation/branch-name?expand=1&template=documentation.md`)
### 리뷰 프로세스

* **PR 템플릿 사용:**
`.github/PULL_REQUEST_TEMPLATE.md`하위 템플릿과 연계하여 작성해주세요.
1. 하나 이상의 승인(Approve)이 필요합니다.
2. 리뷰어의 수정 요청이 있다면 반영 후 다시 알립니다.
3. 승인 완료 후 머지(Merge)를 진행합니다.

* **이슈 연결:** PR 설명란에 `Closes #이슈번호`를 적어 해당 이슈가 자동으로 닫히도록 설정합니다.
### PR 작성 시 주의사항

* **리뷰 프로세스:**
1. 하나 이상의 승인(Approve)이 필요합니다.
2. 리뷰어의 수정 요청이 있다면 반영 후 다시 알립니다.
3. 승인 완료 후 머지(Merge)를 진행합니다.
- 발생한 Conflict에 대해서는 PR 작성자가 해결합니다.
- 하나의 PR에는 하나의 중심 내용만 포함합니다.
- 기능 구현(feat), 리팩토링(refactor), 버그 수정(fix), 스타일 수정(chore) 등이 섞여있다면 반드시 분리합니다.
- PR 작성 시 GitHub 프로젝트를 선택하지 않습니다.
- 가능한 작은 크기의 PR을 제출하여 리뷰어가 쉽게 검토하도록 합니다.

* **PR 시 주의사항**
* 발생한 Conflict에 대해서는 PR 작성자가 해결합니다.
* 가능 한 작은 크기의 PR을 제출하여 리뷰어가 쉽게 검토하도록 합니다.
* 권장 PR의 크기는 다음과 같습니다:
* 변경된 코드 라인 수: 200 ~ 300라인 이내
* 파일 개수: 10개 이내
* 리뷰 소요 시간: 리뷰어가 15 ~ 30분 이내에 전체 내용을 파악하고 피드백을 줄 수 있는 정도
* 하나의 PR에는 하나의 중심 내용만 넣어야 합니다.
* 기능 구현(feat), 리팩토링(refactor), 버그 수정(fix), 스타일 수정(chore) 등이 섞여있다면 무조건 분리합니다.
* PR 작성 시 github 프로젝트를 선택하지 않습니다.
| 항목 | 권장 기준 |
| ----------------- | ---------------------------- |
| 변경된 코드 라인 | 200 ~ 300 라인 이내 |
| 변경된 파일 수 | 10개 이내 |
| 리뷰 소요 시간 | 15 ~ 30분 이내 파악 및 피드백 가능 |
Empty file removed documents/.keep
Empty file.
38 changes: 38 additions & 0 deletions documents/context/admission.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Admission Context

## Purpose
> 원서, 일정, 최종 합격, 공지 등록 등의 관리자 관련 업무를 처리합니다.

## Responsibilities
* 수험번호 자동 부여
* 합격자 산출
* 서류 합격
* 최종 합격
* 단체 메시지 전송
* 원서 조회
* 지원자 목록 조회
* 엑셀로 내보내기
* 지원자 상세 조회
* 수험표 다운로드
* 원서 조회 및 다운로드
* 공지 등록
* QnA 등록
* 통계 조회(analytics)
* 성적 산출 방식 변경

> [!NOTE]
> 아직 미확정된 부분이 일부 존재합니다. 참고해주세요.

## Owns

*no body*

## Dependencies
* application
* notification
* analytics
* document
* evaluation

## Out of Scope
> 필요할 경우 이 Context가 책임지지 않는 기능을 작성합니다
29 changes: 29 additions & 0 deletions documents/context/analytics.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Analytics Context

## Purpose
> 각 서비스에서 통계 데이터를 가져옵니다. admission 서비스에 해당 API를 제공합니다.

* admission에서 통계 데이터를 만들지 않고 analytics 서비스의 API를 조회하는 이유는 admission 서비스가 너무 비대해지는 현상을 방지하기 위함압니다.

## Responsibilities
* schedule 데이터 조회
* 전형 일정 단계
* 원서 제출 기간
* 전형 마감일 / 일정에 따라 변화
* application 데이터 조회
* 신입생 지원률
* 경쟁률
* 전형별 접수 현황
* 지원자 성비
* 지역별 접수 현황

## Owns

todo

## Dependencies
* schedule
* application

## Out of Scope
- 데이터를 직접 저장하지 않고, 필요한 데이터를 담당 서비스에서 조회하여 가져옵니다.
38 changes: 38 additions & 0 deletions documents/context/application.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Application Context

## Purpose
> 사용자의 입학 원서를 저장 및 관리합니다.

## Responsibilities

* 입학 전형 선택
* 인적 사항 입력
* 증명사진, 이름, 생년월일, 보호자 성명 및, 관계, 본인 및, 부모님 연락처, 주소
* 학교 정보 입력
* 중학교 이름, 중학교 학번, 중학교 전화번호, 중학교 교사 성명, 중학교 교사 전화번호
* 학교 검색 시 자동완성 지원 -> 외부 API 사용
* 성적 입력
* 학력에 따라서 입력받는 데이터가 다름
* 출결, 봉사시간, 자격증 및 수상 경력(DSM 알고리즘 대회 입상여부, 정보처리기능사 자격증 취득 여부)
* 자기소개서 및 학업 계획서 입력
* 입학 원서 임시 저장

### 외부 서비스 관련

* 성적 산출 이벤트 발행
* PDF 생성 이벤트 발행
* 원서 최종 제출 (저장 및 상태 변경 불가)
* 관리자 서비스에 원서 정보 제공
* 지원자 목록, 지원자 상세, 수험표 다운로드, 원서 조회 및 다운로드
* 수험번호 부여

## Owns
> 이 Context가 소유하는 데이터/엔티티에 대해서 작성합니다.

## Dependencies
* identity
* admission
* document

## Out of Scope
* 성적 산출
23 changes: 23 additions & 0 deletions documents/context/document.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Document Context

## Purpose
> PDF, Excel, 이미지 파일을 저장하고, 다운로드 URL을 제공하기 위한 서비스입니다.

## Responsibilities
* 원서 pdf/hwp 다운로드
* 수험표 pdf/hwp 다운로드
* 지원자 목록 excel 다운로드
* 원서 내 증명사진 첨부
* 공지사항 / QnA / 전형 요강 내 파일 첨부
* `.pdf`, `.xlsx`, `.jpg`, `.png`, `.webp`, `.hwp`, `.docx` 지원

## Owns
* DB에 데이터를 저장하거나, 직접 데이터를 조회하지 않습니다.
* 스토리지 서비스(s3)에 파일을 저장하고, 제공합니다.

## Dependencies
* 해당 서비스는 타 context에 의존하지 않습니다.
* AWS S3 외부 서비스를 이용합니다.

## Out of Scope
> 필요할 경우 이 Context가 책임지지 않는 기능을 작성합니다
17 changes: 17 additions & 0 deletions documents/context/evaluation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Evaluation Context

## Purpose
> 성적을 산출하고 계산합니다.

## Responsibilities
* 입학 전형 별 성적 계산
* 성적 수식 변경 ─ admission에 제공하는 API

## Owns
> 이 Context가 소유하는 데이터/엔티티에 대해서 작성합니다.

## Dependencies
> 이 Context가 의존하는 Context 또는 외부 시스템에 대해 작성합니다.

## Out of Scope
> 필요할 경우 이 Context가 책임지지 않는 기능을 작성합니다
Loading
Loading