diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2fa836d..f30cbaa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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. +또한 프로젝트의 행동 강령을 확인하고, 모든 커뮤니케이션 과정에서 이를 준수해 주시기 바랍니다. + +
+ +## 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) + +
--- + ## 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)를 상세히 작성해주세요. + +
--- + ## 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 +``` + +
--- ## 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 파이프라인 관련 작업 | + +
+ --- ## 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분 이내 파악 및 피드백 가능 | diff --git a/documents/.keep b/documents/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/documents/context/admission.md b/documents/context/admission.md new file mode 100644 index 0000000..b45cf3d --- /dev/null +++ b/documents/context/admission.md @@ -0,0 +1,38 @@ +# Admission Context + +## Purpose +> 원서, 일정, 최종 합격, 공지 등록 등의 관리자 관련 업무를 처리합니다. + +## Responsibilities +* 수험번호 자동 부여 +* 합격자 산출 + * 서류 합격 + * 최종 합격 + * 단체 메시지 전송 +* 원서 조회 + * 지원자 목록 조회 + * 엑셀로 내보내기 + * 지원자 상세 조회 + * 수험표 다운로드 + * 원서 조회 및 다운로드 +* 공지 등록 +* QnA 등록 +* 통계 조회(analytics) +* 성적 산출 방식 변경 + +> [!NOTE] +> 아직 미확정된 부분이 일부 존재합니다. 참고해주세요. + +## Owns + +*no body* + +## Dependencies +* application +* notification +* analytics +* document +* evaluation + +## Out of Scope +> 필요할 경우 이 Context가 책임지지 않는 기능을 작성합니다 diff --git a/documents/context/analytics.md b/documents/context/analytics.md new file mode 100644 index 0000000..57f66fb --- /dev/null +++ b/documents/context/analytics.md @@ -0,0 +1,29 @@ +# Analytics Context + +## Purpose +> 각 서비스에서 통계 데이터를 가져옵니다. admission 서비스에 해당 API를 제공합니다. + +* admission에서 통계 데이터를 만들지 않고 analytics 서비스의 API를 조회하는 이유는 admission 서비스가 너무 비대해지는 현상을 방지하기 위함압니다. + +## Responsibilities +* schedule 데이터 조회 + * 전형 일정 단계 + * 원서 제출 기간 + * 전형 마감일 / 일정에 따라 변화 +* application 데이터 조회 + * 신입생 지원률 + * 경쟁률 + * 전형별 접수 현황 + * 지원자 성비 + * 지역별 접수 현황 + +## Owns + +todo + +## Dependencies +* schedule +* application + +## Out of Scope +- 데이터를 직접 저장하지 않고, 필요한 데이터를 담당 서비스에서 조회하여 가져옵니다. \ No newline at end of file diff --git a/documents/context/application.md b/documents/context/application.md new file mode 100644 index 0000000..3d050d6 --- /dev/null +++ b/documents/context/application.md @@ -0,0 +1,38 @@ +# Application Context + +## Purpose +> 사용자의 입학 원서를 저장 및 관리합니다. + +## Responsibilities + +* 입학 전형 선택 +* 인적 사항 입력 + * 증명사진, 이름, 생년월일, 보호자 성명 및, 관계, 본인 및, 부모님 연락처, 주소 +* 학교 정보 입력 + * 중학교 이름, 중학교 학번, 중학교 전화번호, 중학교 교사 성명, 중학교 교사 전화번호 + * 학교 검색 시 자동완성 지원 -> 외부 API 사용 +* 성적 입력 + * 학력에 따라서 입력받는 데이터가 다름 + * 출결, 봉사시간, 자격증 및 수상 경력(DSM 알고리즘 대회 입상여부, 정보처리기능사 자격증 취득 여부) +* 자기소개서 및 학업 계획서 입력 +* 입학 원서 임시 저장 + +### 외부 서비스 관련 + +* 성적 산출 이벤트 발행 +* PDF 생성 이벤트 발행 +* 원서 최종 제출 (저장 및 상태 변경 불가) +* 관리자 서비스에 원서 정보 제공 + * 지원자 목록, 지원자 상세, 수험표 다운로드, 원서 조회 및 다운로드 +* 수험번호 부여 + +## Owns +> 이 Context가 소유하는 데이터/엔티티에 대해서 작성합니다. + +## Dependencies +* identity +* admission +* document + +## Out of Scope +* 성적 산출 \ No newline at end of file diff --git a/documents/context/document.md b/documents/context/document.md new file mode 100644 index 0000000..071acf7 --- /dev/null +++ b/documents/context/document.md @@ -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가 책임지지 않는 기능을 작성합니다 diff --git a/documents/context/evaluation.md b/documents/context/evaluation.md new file mode 100644 index 0000000..3a049ed --- /dev/null +++ b/documents/context/evaluation.md @@ -0,0 +1,17 @@ +# Evaluation Context + +## Purpose +> 성적을 산출하고 계산합니다. + +## Responsibilities +* 입학 전형 별 성적 계산 +* 성적 수식 변경 ─ admission에 제공하는 API + +## Owns +> 이 Context가 소유하는 데이터/엔티티에 대해서 작성합니다. + +## Dependencies +> 이 Context가 의존하는 Context 또는 외부 시스템에 대해 작성합니다. + +## Out of Scope +> 필요할 경우 이 Context가 책임지지 않는 기능을 작성합니다 diff --git a/documents/context/notification.md b/documents/context/notification.md new file mode 100644 index 0000000..b45199a --- /dev/null +++ b/documents/context/notification.md @@ -0,0 +1,21 @@ +# Notification Context + +## Purpose +> 공지사항, QnA, 전형요강 게시글을 관리합니다. + +## Responsibilities +* 공지사항, QnA, 전형요강 게시글을 조회합니다. +* 공지사항, QnA, 전형요강 게시글을 관리합니다. + * 게시글 등록 + * 게시글 수정 + * 게시글 삭제 + * 파일 첨부 + +## Owns +> 이 Context가 소유하는 데이터/엔티티에 대해서 작성합니다. + +## Dependencies +* document (첨부된 파일이 있을 경우) + +## Out of Scope +> 필요할 경우 이 Context가 책임지지 않는 기능을 작성합니다 diff --git a/documents/context/observability.md b/documents/context/observability.md new file mode 100644 index 0000000..25e89ff --- /dev/null +++ b/documents/context/observability.md @@ -0,0 +1,17 @@ +# Observability Context + +## Purpose +> 서버 모니터링 서비스로, 실시간 데이터 전송 API를 제공합니다. + +## Responsibilities +* 서버 모니터링 +* 모니터링 데이터 실시간 전송 API (SSE) + +## Owns +> 이 Context가 소유하는 데이터/엔티티에 대해서 작성합니다. + +## Dependencies +> 이 Context가 의존하는 Context 또는 외부 시스템에 대해 작성합니다. + +## Out of Scope +> 필요할 경우 이 Context가 책임지지 않는 기능을 작성합니다 diff --git a/documents/context/schedule.md b/documents/context/schedule.md new file mode 100644 index 0000000..5827fae --- /dev/null +++ b/documents/context/schedule.md @@ -0,0 +1,17 @@ +# Schedule Context + +## Purpose +> 원서 일정을 관리하는 서비스입니다. + +## Responsibilities +* 원서 일정 조회 +* 원서 일정 수정 + +## Owns +> 이 Context가 소유하는 데이터/엔티티에 대해서 작성합니다. + +## Dependencies +> 이 Context가 의존하는 Context 또는 외부 시스템에 대해 작성합니다. + +## Out of Scope +> 필요할 경우 이 Context가 책임지지 않는 기능을 작성합니다 diff --git a/documents/glossary.md b/documents/glossary.md new file mode 100644 index 0000000..c743fe1 --- /dev/null +++ b/documents/glossary.md @@ -0,0 +1,19 @@ +# 용어 사전 + +
+작성 규칙 + +1. 영문명과 한글명 2가지를 합께 작성합니다. +2. 혼동이 우려되는 용어가 있을 경우 추가합니다. +
+ +| 영문명 | 한글명 | 설명 | +|-------------|---------------|---------------------------------------------------------------| +| application | 원서 | | +| analytics | 통계 | | +| schedule | 일정 | 원서 지원 일정, 합격 발표 일정을 다룹니다. | +| qna | 자주 묻는 질문, QnA | 자주 묻는 질문이지만 FAQ가 아닙니다. | +| notice | 공지사항 | notification 서비스와 헷갈리는 것을 방지하기 위해 notice를 사용합니다. | +| notification | 공지 게시글 | 공지사항이 아니라 공지사항, qna, 전형요강 전체를 다루는 서비스입니다. | +| documents | 개발 문서 | 프로젝트 개발, 설계에 대한 문서를 의미합니다. | +| document | 파일 | 단순 문서를 의미하는게 아닌 이미지, pdf, hwp 등 다른 서비스에서 필요한 파일을 제공하는 서비스입니다. | \ No newline at end of file diff --git a/documents/templates/entrydsm-context-xxx.template.md b/documents/templates/entrydsm-context-xxx.template.md new file mode 100644 index 0000000..9c23b7e --- /dev/null +++ b/documents/templates/entrydsm-context-xxx.template.md @@ -0,0 +1,16 @@ +# {Context Name} Context + +## Purpose +> 이 Context가 존재하는 이유를 한 문장으로 작성합니다. + +## Responsibilities +> 이 Context의 책임에 대해 작성합니다. + +## Owns +> 이 Context가 소유하는 데이터/엔티티에 대해서 작성합니다. + +## Dependencies +> 이 Context가 의존하는 Context 또는 외부 시스템에 대해 작성합니다. + +## Out of Scope +> 필요할 경우 이 Context가 책임지지 않는 기능을 작성합니다