From b8f84d92507fce19e831066ee41c4aaf91ca59ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=95=98=EC=A7=80=EB=AF=BC?= <163178666+JiiminHa@users.noreply.github.com> Date: Thu, 19 Feb 2026 17:45:30 +0900 Subject: [PATCH 01/10] =?UTF-8?q?fix:=20=EB=B9=8C=EB=93=9C=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/models/course.ts | 97 +++++++++++++++++++ .../AssignmentSelectPage.tsx | 5 +- 2 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 src/models/course.ts diff --git a/src/models/course.ts b/src/models/course.ts new file mode 100644 index 0000000..7d42792 --- /dev/null +++ b/src/models/course.ts @@ -0,0 +1,97 @@ +import type {Assignment} from './assignment'; +import type {ApiResponse} from '../shared/model/common'; + +// 학기 및 제출 상태 상수 타입 정의 +export type SemesterCode = 'FIRST' | 'SECOND' | 'SUMMER' | 'WINTER'; +export type SubmissionStatus = 'NOT_SUBMITTED' | 'CORRECT' | 'INCORRECT'; + +/** + * 일정(Schedule) 인터페이스 정의 + */ +export interface Schedule { + date: string; + remainingDays: number; + assignments: { + course: string; + section: string; + assignment: string; + }[]; +} + +/** + * 단원(Unit) 인터페이스 정의 + */ +export interface Unit { + id: number; + title: string; + releaseDate: string; + dueDate: string; + isOpen?: boolean; + assignmentCount: number; + assignments: Assignment[]; +} + +/** + * 강의 기본 정보 인터페이스 정의 + */ +export interface BaseCourse { + id: number; + title: string; + year: number; + semester: SemesterCode; + section: string; + unitCount: number; +} + +/** + * 강의 상세 페이지용 (course-overview) 인터페이스 정의 + * 기본 정보 + 단원, 과제 상세 리스트 + */ +export interface CourseOverview extends BaseCourse { + studentCount?: number; + units: Unit[]; +} + +/** + * 대시보드 강의 목록용 인터페이스 정의 + * 기본 정보 + 강의 설명, 과제 개수 + */ +export interface DashboardCourse extends BaseCourse { + description: string; + assignmentCount: number; +} + +/** + * 문제 선택 페이지용 강의 인터페이스 정의 + */ +export interface AssignmentSelectCourse extends Omit { + count: number; + assignments: Pick[]; +} + +// 강의 상세 응답 타입 정의 +export type CourseOverviewResponse = ApiResponse; + +// 대시보드 강의 목록 응답 타입 정의 +export type DashboardCourseListResponse = ApiResponse<{ + count: number; + courses: DashboardCourse[]; +}>; + +// 대시보드 일정 목록 응답 타입 정의 +export type DashboardScheduleListResponse = ApiResponse<{ + count: number; + schedule: Schedule[]; +}>; + +// 문제 선택 페이지 응답 타입 정의 +export type AssignmentSelectResponse = ApiResponse<{ + count: number; + courses: AssignmentSelectCourse[]; +}>; + +// 강의 옵션 목록 응답 타입 정의 +export type CourseOptionsResponse = ApiResponse<{ + count: number; + courses: DashboardCourse[]; +}>; diff --git a/src/pages/select-assignment/AssignmentSelectPage.tsx b/src/pages/select-assignment/AssignmentSelectPage.tsx index 31847f5..b87ee50 100644 --- a/src/pages/select-assignment/AssignmentSelectPage.tsx +++ b/src/pages/select-assignment/AssignmentSelectPage.tsx @@ -1,6 +1,9 @@ import AssignmentListContainer from './ui/AssignmentListContainer'; import {useState} from 'react'; -import {response, courseOptionsResponse} from '@/shared/mocks/assignmentSelectResponse'; +import { + response, + courseOptionsResponse, +} from '@/shared/mocks/assignmentSelectResponse'; import {useCourseFilter} from '@/features/course/filter-course/lib/useCourseFilter'; import {AssignmentPageLayout} from '@/widgets/assignment-page-layout'; import SelectableItem from '@/shared/ui/SelectableItem'; From 87b6617f856fde6dc526d94f6dbfa3800598c7da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=95=98=EC=A7=80=EB=AF=BC?= <163178666+JiiminHa@users.noreply.github.com> Date: Thu, 19 Feb 2026 18:15:14 +0900 Subject: [PATCH 02/10] =?UTF-8?q?fix:=20=EB=B9=8C=EB=93=9C=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=ED=95=B4=EA=B2=B0=EC=9D=84=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EC=88=9C=ED=99=98=20=EC=B0=B8=EC=A1=B0=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/models/assignment.ts | 10 ++++++++++ src/models/course.ts | 7 +++---- 2 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 src/models/assignment.ts diff --git a/src/models/assignment.ts b/src/models/assignment.ts new file mode 100644 index 0000000..ad4ae83 --- /dev/null +++ b/src/models/assignment.ts @@ -0,0 +1,10 @@ +import type {SubmissionStatus} from '../shared/model/common'; + +/** + * 과제(Assignment) 인터페이스 정의 + */ +export interface Assignment { + id: number; + title: string; + submittedStatus: SubmissionStatus; +} diff --git a/src/models/course.ts b/src/models/course.ts index 7d42792..1928abd 100644 --- a/src/models/course.ts +++ b/src/models/course.ts @@ -1,9 +1,8 @@ import type {Assignment} from './assignment'; -import type {ApiResponse} from '../shared/model/common'; +import type {ApiResponse, SemesterCode} from '../shared/model/common'; +export type {SemesterCode, SubmissionStatus} from '../shared/model/common'; + -// 학기 및 제출 상태 상수 타입 정의 -export type SemesterCode = 'FIRST' | 'SECOND' | 'SUMMER' | 'WINTER'; -export type SubmissionStatus = 'NOT_SUBMITTED' | 'CORRECT' | 'INCORRECT'; /** * 일정(Schedule) 인터페이스 정의 From 8c5b86b8c30f09e3eb37aa37adcf194806fd52ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=95=98=EC=A7=80=EB=AF=BC?= <163178666+JiiminHa@users.noreply.github.com> Date: Thu, 19 Feb 2026 18:32:07 +0900 Subject: [PATCH 03/10] =?UTF-8?q?#49=20chore:=20CI=20=ED=8C=8C=EC=9D=B4?= =?UTF-8?q?=ED=94=84=EB=9D=BC=EC=9D=B8=20=EC=97=85=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci-cd.yml | 69 +++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 .github/workflows/ci-cd.yml diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml new file mode 100644 index 0000000..d8df425 --- /dev/null +++ b/.github/workflows/ci-cd.yml @@ -0,0 +1,69 @@ +name: CI/CD Pipeline + +on: + push: + branches: [main] + pull_request: + branches: [main] + +# 동일한 브랜치에서 새로운 Push가 발생하면 이전 실행을 취소하여 자원 절약 +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 9 + run_install: false + + - name: Get pnpm store directory + id: pnpm-cache + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT + + - name: Setup pnpm cache + uses: actions/cache@v4 + with: + path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: pnpm install + + - name: Lint + run: pnpm lint + + - name: Build + run: pnpm build + env: + VITE_KAKAO_REST_API_KEY: ${{ secrets.VITE_KAKAO_REST_API_KEY }} + VITE_KAKAO_REDIRECT_URI: ${{ secrets.VITE_KAKAO_REDIRECT_URI }} + VITE_API_BASE_URL: ${{ secrets.VITE_API_BASE_URL }} + + - name: Deploy to Vercel + uses: amondnet/vercel-action@v25 + with: + vercel-token: ${{ secrets.VERCEL_TOKEN }} + vercel-org-id: ${{ secrets.VERCEL_ORG_ID }} + vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }} + github-token: ${{ secrets.GITHUB_TOKEN }} + vercel-args: '--prod' + working-directory: ./ + github-comment: false From ba049f85908cfe4275f54c71857292c7dcf4e6dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=95=98=EC=A7=80=EB=AF=BC?= <163178666+JiiminHa@users.noreply.github.com> Date: Thu, 19 Feb 2026 18:37:23 +0900 Subject: [PATCH 04/10] =?UTF-8?q?#49=20chore:=20CI=20=ED=8C=8C=EC=9D=B4?= =?UTF-8?q?=ED=94=84=EB=9D=BC=EC=9D=B8=20=EC=88=98=EC=A0=95=20=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci-cd.yml | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index d8df425..93a0ed7 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -2,9 +2,9 @@ name: CI/CD Pipeline on: push: - branches: [main] + branches: [develop, main] pull_request: - branches: [main] + branches: [develop, main] # 동일한 브랜치에서 새로운 Push가 발생하면 이전 실행을 취소하여 자원 절약 concurrency: @@ -56,14 +56,3 @@ jobs: VITE_KAKAO_REST_API_KEY: ${{ secrets.VITE_KAKAO_REST_API_KEY }} VITE_KAKAO_REDIRECT_URI: ${{ secrets.VITE_KAKAO_REDIRECT_URI }} VITE_API_BASE_URL: ${{ secrets.VITE_API_BASE_URL }} - - - name: Deploy to Vercel - uses: amondnet/vercel-action@v25 - with: - vercel-token: ${{ secrets.VERCEL_TOKEN }} - vercel-org-id: ${{ secrets.VERCEL_ORG_ID }} - vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }} - github-token: ${{ secrets.GITHUB_TOKEN }} - vercel-args: '--prod' - working-directory: ./ - github-comment: false From f50c1203567c6efc80942ee8970e48f845fe1908 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=95=98=EC=A7=80=EB=AF=BC?= <163178666+JiiminHa@users.noreply.github.com> Date: Thu, 19 Feb 2026 21:53:52 +0900 Subject: [PATCH 05/10] =?UTF-8?q?#49=20chore:=20=EB=A6=B0=ED=8A=B8=20?= =?UTF-8?q?=EC=97=90=EB=9F=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/shared/ui/Badge.tsx | 6 ++++-- src/shared/ui/SelectableItem.tsx | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/shared/ui/Badge.tsx b/src/shared/ui/Badge.tsx index 5df5d98..493baaf 100644 --- a/src/shared/ui/Badge.tsx +++ b/src/shared/ui/Badge.tsx @@ -84,7 +84,7 @@ const Badge = (props: BadgeProps) => { ); // 인덱스 배지 (단원, 문제 등) - case 'index': + case 'index': { const suffix = props.kind === 'unit' ? '단원' : ' 문제'; return ( @@ -93,9 +93,10 @@ const Badge = (props: BadgeProps) => { {suffix} ); + } // 제출 상태 배지 - case 'submission': + case 'submission': { const {label, icon} = SubmissionMeta[props.status!]; return ( @@ -106,6 +107,7 @@ const Badge = (props: BadgeProps) => { {icon} {label} ); + } } }; diff --git a/src/shared/ui/SelectableItem.tsx b/src/shared/ui/SelectableItem.tsx index 7822024..fbcea51 100644 --- a/src/shared/ui/SelectableItem.tsx +++ b/src/shared/ui/SelectableItem.tsx @@ -1,6 +1,6 @@ import {tv, type VariantProps} from 'tailwind-variants'; -export const selectableItemStyles = tv({ +const selectableItemStyles = tv({ base: 'cursor-pointer bg-background w-full flex items-center rounded-[9px] pl-4.5 pr-7.5 py-4 gap-4 border', variants: { selected: { From b2956709854c72da13c2f87008c9cfcb450977aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=95=98=EC=A7=80=EB=AF=BC?= <163178666+JiiminHa@users.noreply.github.com> Date: Thu, 19 Feb 2026 23:03:08 +0900 Subject: [PATCH 06/10] =?UTF-8?q?#49=20ci:=20Release=20Drafter=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/template/release-drafter.yml | 47 +++++++++++++++++++++++++++ .github/workflows/release-drafter.yml | 36 ++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 .github/template/release-drafter.yml create mode 100644 .github/workflows/release-drafter.yml diff --git a/.github/template/release-drafter.yml b/.github/template/release-drafter.yml new file mode 100644 index 0000000..90e61e4 --- /dev/null +++ b/.github/template/release-drafter.yml @@ -0,0 +1,47 @@ +name-template: 'v$RESOLVED_VERSION' +tag-template: 'v$RESOLVED_VERSION' +version-template: $MAJOR.$MINOR.$PATCH + +categories: + - title: '🚀 기능 추가' + labels: + - 'Feat' + - title: '⚙️ 기능 개선' + labels: + - 'Refactor' + - title: '🐛 버그 수정' + labels: + - 'Fix' + - title: '🧰 그 외' + labels: + - 'Chore' + - 'CI/CD' + - 'Docs' + - 'Build' + - 'Common' + - 'Test' + +version-resolver: + major: + labels: + - 'Major' + minor: + labels: + - 'Minor' + patch: + labels: + - 'Patch' + default: minor + +exclude-labels: + - 'Release' + +change-template: '- $TITLE (#$NUMBER) - @$AUTHOR' +change-title-escapes: '\\<*_&' + +template: | + ## ✨ 변경 사항 + $CHANGES + + ## 📦 전체 변경 이력 + [$PREVIOUS_TAG ~ v$RESOLVED_VERSION]() diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml new file mode 100644 index 0000000..f5f8713 --- /dev/null +++ b/.github/workflows/release-drafter.yml @@ -0,0 +1,36 @@ +name: Release Drafter + +on: + push: + branches: + - release/* + - main + +permissions: + contents: write + pull-requests: read + +jobs: + update_release_draft: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Update Draft Release + if: startsWith(github.ref, 'refs/heads/release/') + uses: release-drafter/release-drafter@v6 + with: + config-name: template/release-drafter.yml + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Publish Release + if: github.ref == 'refs/heads/main' + id: drafter + uses: release-drafter/release-drafter@v6 + with: + config-name: template/release-drafter.yml + publish: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From f736c0c4a1e07d170ad54ac60bc8a1ea4e520d85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=95=98=EC=A7=80=EB=AF=BC?= <163178666+JiiminHa@users.noreply.github.com> Date: Thu, 19 Feb 2026 23:14:32 +0900 Subject: [PATCH 07/10] =?UTF-8?q?#49=20refactor:=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EB=9E=98=EB=B9=97=20=EC=88=98=EC=A0=95=EC=82=AC=ED=95=AD=20?= =?UTF-8?q?=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/entities/course/model/types.ts | 3 - src/models/assignment.ts | 10 ---- src/models/course.ts | 96 ------------------------------ 3 files changed, 109 deletions(-) delete mode 100644 src/models/assignment.ts delete mode 100644 src/models/course.ts diff --git a/src/entities/course/model/types.ts b/src/entities/course/model/types.ts index 7d336c4..b293c45 100644 --- a/src/entities/course/model/types.ts +++ b/src/entities/course/model/types.ts @@ -1,9 +1,6 @@ import type {Assignment} from '@/entities/assignment/model/types'; import type {ApiResponse, SemesterCode} from '@/shared/model/common'; -export type {Assignment}; -export type {SemesterCode, SubmissionStatus} from '@/shared/model/common'; - /** * 일정(Schedule) 인터페이스 정의 */ diff --git a/src/models/assignment.ts b/src/models/assignment.ts deleted file mode 100644 index ad4ae83..0000000 --- a/src/models/assignment.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type {SubmissionStatus} from '../shared/model/common'; - -/** - * 과제(Assignment) 인터페이스 정의 - */ -export interface Assignment { - id: number; - title: string; - submittedStatus: SubmissionStatus; -} diff --git a/src/models/course.ts b/src/models/course.ts deleted file mode 100644 index 1928abd..0000000 --- a/src/models/course.ts +++ /dev/null @@ -1,96 +0,0 @@ -import type {Assignment} from './assignment'; -import type {ApiResponse, SemesterCode} from '../shared/model/common'; -export type {SemesterCode, SubmissionStatus} from '../shared/model/common'; - - - -/** - * 일정(Schedule) 인터페이스 정의 - */ -export interface Schedule { - date: string; - remainingDays: number; - assignments: { - course: string; - section: string; - assignment: string; - }[]; -} - -/** - * 단원(Unit) 인터페이스 정의 - */ -export interface Unit { - id: number; - title: string; - releaseDate: string; - dueDate: string; - isOpen?: boolean; - assignmentCount: number; - assignments: Assignment[]; -} - -/** - * 강의 기본 정보 인터페이스 정의 - */ -export interface BaseCourse { - id: number; - title: string; - year: number; - semester: SemesterCode; - section: string; - unitCount: number; -} - -/** - * 강의 상세 페이지용 (course-overview) 인터페이스 정의 - * 기본 정보 + 단원, 과제 상세 리스트 - */ -export interface CourseOverview extends BaseCourse { - studentCount?: number; - units: Unit[]; -} - -/** - * 대시보드 강의 목록용 인터페이스 정의 - * 기본 정보 + 강의 설명, 과제 개수 - */ -export interface DashboardCourse extends BaseCourse { - description: string; - assignmentCount: number; -} - -/** - * 문제 선택 페이지용 강의 인터페이스 정의 - */ -export interface AssignmentSelectCourse extends Omit { - count: number; - assignments: Pick[]; -} - -// 강의 상세 응답 타입 정의 -export type CourseOverviewResponse = ApiResponse; - -// 대시보드 강의 목록 응답 타입 정의 -export type DashboardCourseListResponse = ApiResponse<{ - count: number; - courses: DashboardCourse[]; -}>; - -// 대시보드 일정 목록 응답 타입 정의 -export type DashboardScheduleListResponse = ApiResponse<{ - count: number; - schedule: Schedule[]; -}>; - -// 문제 선택 페이지 응답 타입 정의 -export type AssignmentSelectResponse = ApiResponse<{ - count: number; - courses: AssignmentSelectCourse[]; -}>; - -// 강의 옵션 목록 응답 타입 정의 -export type CourseOptionsResponse = ApiResponse<{ - count: number; - courses: DashboardCourse[]; -}>; From d5766407ffb6e9e2c08e7c00f52422e4a61ff68a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=95=98=EC=A7=80=EB=AF=BC?= <163178666+JiiminHa@users.noreply.github.com> Date: Thu, 19 Feb 2026 23:17:49 +0900 Subject: [PATCH 08/10] =?UTF-8?q?#49=20fix:=20=EB=B9=8C=EB=93=9C=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/course-overview/ui/AssignmentList.tsx | 2 +- src/pages/course-overview/ui/CourseHero.tsx | 3 ++- src/shared/lib/course.ts | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pages/course-overview/ui/AssignmentList.tsx b/src/pages/course-overview/ui/AssignmentList.tsx index 5da79cb..37cf6ff 100644 --- a/src/pages/course-overview/ui/AssignmentList.tsx +++ b/src/pages/course-overview/ui/AssignmentList.tsx @@ -1,6 +1,6 @@ import Badge from '@/shared/ui/Badge'; import {Link} from 'react-router-dom'; -import type {Assignment} from '@/entities/course/model/types'; +import type {Assignment} from '@/entities/assignment/model/types'; interface AssignmentListProps { isOpen?: boolean; diff --git a/src/pages/course-overview/ui/CourseHero.tsx b/src/pages/course-overview/ui/CourseHero.tsx index b0b3a9a..81a7ff7 100644 --- a/src/pages/course-overview/ui/CourseHero.tsx +++ b/src/pages/course-overview/ui/CourseHero.tsx @@ -2,7 +2,8 @@ import snowcodeOverviewMini from '@/assets/images/snowcode_overview_mini.svg'; import {formatCourseTerm} from '@/shared/lib/course'; import CourseActionsBar from './CourseActionsBar'; import {useUserStore} from '@/entities/auth/model/useUserStore'; -import type {CourseOverview, SemesterCode} from '@/entities/course/model/types'; +import type {CourseOverview} from '@/entities/course/model/types'; +import type {SemesterCode} from '@/shared/model/common'; interface CourseHeroProps { courseData: Omit; diff --git a/src/shared/lib/course.ts b/src/shared/lib/course.ts index 7be0cfc..d4eb59c 100644 --- a/src/shared/lib/course.ts +++ b/src/shared/lib/course.ts @@ -1,4 +1,5 @@ -import type {SemesterCode, Unit} from '@/entities/course/model/types'; +import type {Unit} from '@/entities/course/model/types'; +import type {SemesterCode} from '@/shared/model/common'; const SEMESTER_MAP: Record = { FIRST: '1', From 3174240a0ba038c46bf937e8f33c2f9c1f0a7b1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=95=98=EC=A7=80=EB=AF=BC?= <163178666+JiiminHa@users.noreply.github.com> Date: Thu, 19 Feb 2026 23:27:06 +0900 Subject: [PATCH 09/10] =?UTF-8?q?#49=20chore:=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EB=9E=98=EB=B9=97=20=EC=A0=9C=EC=95=88=20=EC=82=AC=ED=95=AD=20?= =?UTF-8?q?=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/template/release-drafter.yml | 2 +- .github/workflows/release-drafter.yml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/template/release-drafter.yml b/.github/template/release-drafter.yml index 90e61e4..45fd877 100644 --- a/.github/template/release-drafter.yml +++ b/.github/template/release-drafter.yml @@ -6,7 +6,7 @@ categories: - title: '🚀 기능 추가' labels: - 'Feat' - - title: '⚙️ 기능 개선' + - title: '♻️ 리팩토링' labels: - 'Refactor' - title: '🐛 버그 수정' diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index f5f8713..92a5687 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -5,6 +5,9 @@ on: branches: - release/* - main + # PR 이벤트 추가로 자동화 범위 확대 + pull_request: + types: [opened, reopened, synchronize] permissions: contents: write @@ -14,11 +17,9 @@ jobs: update_release_draft: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v4 - + # Checkout 단계 제거 (불필요한 작업 생략) - name: Update Draft Release - if: startsWith(github.ref, 'refs/heads/release/') + if: startsWith(github.ref, 'refs/heads/release/') || github.event_name == 'pull_request' uses: release-drafter/release-drafter@v6 with: config-name: template/release-drafter.yml @@ -26,8 +27,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Publish Release - if: github.ref == 'refs/heads/main' - id: drafter + if: github.ref == 'refs/heads/main' && github.event_name == 'push' uses: release-drafter/release-drafter@v6 with: config-name: template/release-drafter.yml From 80894e1348592fa6888dad22cfcbf89aa0dede3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=95=98=EC=A7=80=EB=AF=BC?= <163178666+JiiminHa@users.noreply.github.com> Date: Thu, 19 Feb 2026 23:38:45 +0900 Subject: [PATCH 10/10] =?UTF-8?q?#49=20chore:=20=ED=8C=80=20=EC=BB=A8?= =?UTF-8?q?=EB=B2=A4=EC=85=98=20=EB=A7=9E=EC=B6=B0=EC=84=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/template/release-drafter.yml | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/.github/template/release-drafter.yml b/.github/template/release-drafter.yml index 45fd877..57d307d 100644 --- a/.github/template/release-drafter.yml +++ b/.github/template/release-drafter.yml @@ -5,32 +5,33 @@ version-template: $MAJOR.$MINOR.$PATCH categories: - title: '🚀 기능 추가' labels: - - 'Feat' + - 'feat' - title: '♻️ 리팩토링' labels: - - 'Refactor' + - 'refactor' - title: '🐛 버그 수정' labels: - - 'Fix' + - 'fix' - title: '🧰 그 외' labels: - - 'Chore' - - 'CI/CD' - - 'Docs' - - 'Build' - - 'Common' - - 'Test' + - 'chore' + - 'ci/cd' + - 'docs' + - 'style' + - 'build' + - 'common' + - 'test' version-resolver: major: labels: - - 'Major' + - 'major' minor: labels: - - 'Minor' + - 'minor' patch: labels: - - 'Patch' + - 'patch' default: minor exclude-labels: