Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
8f77ccf
chore/#14: assignment 관련 파일들 assignments 폴더로 이동
JiiminHa Aug 10, 2025
44700df
#14 chore: vite에서 @alias 경로 설정 추가
JiiminHa Sep 2, 2025
c4998bb
#14 feat: 문제 생성, 관리 페이지 레이아웃 구현
JiiminHa Sep 2, 2025
3c6efa1
#14 feat: chevronDown svg 추가
JiiminHa Sep 2, 2025
5437150
#14 refactor: 콜백 구조 단순화, 타입 시스템과 일치하도록 수정
JiiminHa Sep 2, 2025
654b44b
#14 feat: AssignmentCreatePage UI 구현
JiiminHa Sep 3, 2025
f040aff
#14 feat: LabeledInput UI 구현
JiiminHa Sep 3, 2025
0d46a93
#14 feat: file.svg 파일 추가
JiiminHa Sep 4, 2025
1f35460
#14 feat: 파일 업로드 컴포넌트 구현
JiiminHa Sep 5, 2025
e155790
#14 feat: 예제 입력란 동적 추가 및 라벨 간격 개선 및 파일업로드 컴포넌트 추가
JiiminHa Sep 5, 2025
418a352
#14 feat: 강의 생성 페이지 구현
JiiminHa Sep 11, 2025
36811bf
#14 feat: 과제 생성 페이지 구현
JiiminHa Sep 11, 2025
62bd4d8
#14 feat: useClickOutside 커스텀훅 구현
JiiminHa Sep 11, 2025
2f50a58
#14 feat: LabeledInput 리팩토링 및 LabeledDropdown variant 추가
JiiminHa Sep 11, 2025
2789f84
#14 style: placeholder 전역 색상 설정
JiiminHa Sep 11, 2025
d85f49e
#14 feat: 라우트 경로 추가
JiiminHa Sep 11, 2025
8a57dfa
#13 chore: 디자인 컬러 팔레트 색상 업데이트
JiiminHa Sep 17, 2025
07d7fdd
#13 chore: 프로필 이미지 추가
JiiminHa Sep 18, 2025
70d273d
#13 feat: Search 아이콘 컴포넌트 추가
JiiminHa Sep 22, 2025
45b0b97
#13 feat: StudentManagementPage 초기 레이아웃 및 UI 일부 추가
JiiminHa Sep 22, 2025
6e703f2
#13 feat: StudentManagementPage 초기 레이아웃 및 검색 UI 추가
JiiminHa Sep 22, 2025
811540e
Merge remote-tracking branch 'origin/develop' into feat/13-student-ma…
JiiminHa Sep 22, 2025
a2348fb
Merge remote-tracking branch 'origin/feat/16-course-view-page' into f…
JiiminHa Sep 22, 2025
ec6d432
#13 chore: prettier-plugin-tailwindcss 설정
JiiminHa Sep 24, 2025
9c4624d
#13 fix: 과제 관련 페이지 빌드 오류 수정
JiiminHa Jan 6, 2026
631b4ba
#13 refactor: svgr 사용하도록 SVG 핸들링 방식 변경
JiiminHa Jan 6, 2026
cf09fb8
refactor: Layout 컴포넌트 타입 추가 및 SVG import 방식 변경
JiiminHa Jan 6, 2026
573532b
#13 chore: .prettierrc 설정 변경
JiiminHa Jan 6, 2026
782a71f
refactor: 상대 경로를 @ 절대 경로로 변경
JiiminHa Jan 6, 2026
b8988ab
feat: 커밋 규칙 테스트
JiiminHa Jan 6, 2026
42af5be
#13 fix: commitlint 설정 파일 충돌 문제 해결
JiiminHa Jan 6, 2026
11263f0
Merge branch 'develop' into feat/13-student-management
JiiminHa Jan 6, 2026
204867d
#13 feat: coderabbit 설정 파일 추가
JiiminHa Jan 6, 2026
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
123 changes: 123 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
language: 'ko-KR'
early_access: true

tone_instructions: |
1. 피드백은 명확하고 구체적으로 작성하고, 문제 원인과 개선 방법을 함께 제시하세요.
2. 리뷰는 교육적인 방향을 지향하며, 관련 공식 문서 링크를 함께 추천하세요.
3. 비판보다는 개선 제안을 우선하세요.
4. 칭찬은 짧고 위트 있게 작성하세요.

reviews:
profile: educational
request_changes_workflow: true
high_level_summary: true
high_level_summary_placeholder: |
@coderabbitai summary
(졸업작품 평가 기준: 구조 / 타입 안정성 / 접근성 관점 요약)
Comment on lines +14 to +16
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Fix duplicate YAML key high_level_summary_placeholder.

The configuration defines high_level_summary_placeholder twice (lines 14-16 and line 24), which is invalid YAML and will cause a parsing error. The schema allows only one definition per key.

Line 24 appears to be a duplicate of the schema default. Remove it to retain your custom Korean-language placeholder (lines 14-16), or replace lines 14-16 with the simpler line 24 value if the customization is unintended.

🔎 Proposed fix: Remove line 24
  abort_on_close: true
- high_level_summary_placeholder: '@coderabbitai summary'
  collapse_walkthrough: true

Also applies to: 24-24

🤖 Prompt for AI Agents
In @.coderabbit.yaml around lines 14 - 16, Remove the duplicate YAML key by
keeping only one definition of high_level_summary_placeholder; either delete the
later occurrence (the simpler default at line 24) to retain your custom Korean
multi-line placeholder (the block starting with "@coderabbitai summary"), or
replace the first multi-line block with the single-line default — ensure only
one high_level_summary_placeholder entry remains in the file.

poem: false
review_status: true
suggested_labels: true
commit_status: true
fail_commit_status: false
abort_on_close: true
high_level_summary_in_walkthrough: true
high_level_summary_placeholder: '@coderabbitai summary'
collapse_walkthrough: true

path_instructions:
- path: 'src/**/components/**/*.tsx'
instructions: |
React 컴포넌트 리뷰 시:
- 파일명은 PascalCase인지 확인
- Props 타입은 컴포넌트명Props 형식인지 확인
- 단일 export는 default export 권장 (팀 규칙 우선)
- 이벤트 핸들러는 handle 접두사 사용
- 접근성 고려 (label 연결, aria-* 속성)
- 접근성 관련 지적 시, 사용자 영향 예시 포함
- 불필요한 re-render 방지를 위한 memo/useCallback 검토
- premature optimization 지양

- path: 'src/**/hooks/**/*.ts'
instructions: |
커스텀 훅 리뷰 시:
- 파일명과 함수명은 use* 접두사 사용
- 반환 타입의 일관성 유지 (object 또는 tuple)
- 에러/로딩 상태 명확히 분리
- TanStack Query 훅 네이밍 규칙 준수
(use + Action + Target + Query/Mutation)

- path: 'src/**/*.ts'
instructions: |
TypeScript 코드 리뷰 시:
- 타입/인터페이스는 PascalCase 사용
- interface는 객체 타입, type은 union/alias에 사용
- API 응답 타입은 XXXResponse 네이밍
- var 사용 금지, const 우선
- type-only import 적극 사용
- any 사용 시 사유 명확히 작성

- path: 'src/**'
instructions: |
프로젝트 전반 리뷰 기준:

# 기본 기술 스택
- React + TypeScript 사용
- 스타일링은 Tailwind CSS v4 사용
- 절대 경로 임포트(@/...) 사용
- Client / Server 컴포넌트 구분 명확

# 네이밍 컨벤션
- 컴포넌트: PascalCase
- 폴더명: kebab-case
- 일반 파일명: kebab-case
- 변수/함수: camelCase
- 상수: BIG_SNAKE_CASE
- Props 타입: 컴포넌트명Props

# 환경 변수
- 환경 변수는 process.env.NEXT_PUBLIC_* 사용
- 민감 정보 하드코딩 금지

# 성능
- 불필요한 클라이언트 컴포넌트 사용 지양
- 리스트 렌더링 시 key 안정성 확인

# Git 규칙
- 커밋 메시지: #issue type: subject
(예: #12 feat: 로그인 기능 추가)
- 브랜치 패턴: type/issuenumber-issue-short-description
(예: feat/1-auth)

auto_review:
enabled: true
drafts: false
base_branches:
- 'main'
- 'develop'
labels:
- '!wip'
- '!draft'
ignore_usernames:
- 'dependabot'
- 'renovate'

tools:
eslint:
enabled: true
markdownlint:
enabled: true
gitleaks:
enabled: true
yamllint:
enabled: true
actionlint:
enabled: true

chat:
auto_reply: true

knowledge_base:
code_guidelines:
enabled: true
filePatterns:
- 'README.md'
34 changes: 34 additions & 0 deletions .husky/commit-msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
echo "📝 커밋 메시지를 검증합니다..."

# 커밋 메시지 읽기
commit_msg=$(cat $1)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Quote the parameter and add validation.

The unquoted $1 parameter can cause failures if the file path contains spaces or special characters. Additionally, there's no check that the parameter was provided or that the file exists.

🔎 Proposed fix
+# 파일 경로 검증
+if [ -z "$1" ] || [ ! -f "$1" ]; then
+  echo "❌ 커밋 메시지 파일을 찾을 수 없습니다."
+  exit 1
+fi
+
 # 커밋 메시지 읽기
-commit_msg=$(cat $1)
+commit_msg=$(cat "$1")

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In @.husky/commit-msg around line 4, The commit-msg hook reads the file into
commit_msg using an unquoted $1 which breaks on paths with spaces and lacks
validation; change the command to use the quoted parameter and add checks that
the parameter exists and the file is readable before reading: validate that $1
is set, that [ -r "$1" ] succeeds, log an error and exit non-zero if not, then
assign commit_msg by reading the quoted path (commit_msg=$(cat "$1")) to safely
handle spaces and special characters.


# 이슈 번호 뒤에 공백 없이 문자가 오는 경우 체크 (#13test, #13chore 등)
if echo "$commit_msg" | grep -qE '^#[0-9]+[a-zA-Z]'; then
echo "❌ 이슈 번호 뒤에는 공백이 필요합니다."
echo "잘못된 형식: $(echo "$commit_msg" | grep -oE '^#[0-9]+[a-zA-Z][^ ]*')"
echo "올바른 형식: #13 chore: 메시지"
exit 1
fi

# commitlint 실행
if npx --no -- commitlint --edit $1; then
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Quote the parameter in commitlint command.

The unquoted $1 parameter can cause commitlint to fail if the file path contains spaces or special characters.

🔎 Proposed fix
 # commitlint 실행
-if npx --no -- commitlint --edit $1; then
+if npx --no -- commitlint --edit "$1"; then
   echo "✅ 커밋 메시지가 규칙에 맞습니다."
   exit 0
 else
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if npx --no -- commitlint --edit $1; then
if npx --no -- commitlint --edit "$1"; then
echo "✅ 커밋 메시지가 규칙에 맞습니다."
exit 0
else
🤖 Prompt for AI Agents
In @.husky/commit-msg around line 15, The commitlint invocation uses an unquoted
parameter $1 which can break when the commit message file path contains spaces
or special characters; update the command in the .husky/commit-msg hook that
calls commitlint (the line starting with "if npx --no -- commitlint --edit $1;
then") to quote the parameter (use "$1") so the path is passed as a single
argument to commitlint.

echo "✅ 커밋 메시지가 규칙에 맞습니다."
exit 0
else
echo "❌ 커밋 메시지가 컨벤션에 맞지 않습니다."
echo ""
echo "올바른 커밋 메시지 형식:"
echo " <type>: <subject>"
echo " #<이슈번호> <type>: <subject> (이슈 번호는 선택사항)"
echo ""
echo "예시:"
echo " feat: 새로운 기능 추가"
echo " #13 fix: 버그 수정"
echo " docs: 문서 수정"
echo " #42 refactor: 코드 리팩토링"
echo ""
echo "사용 가능한 type:"
echo " feat, fix, docs, style, refactor, test, chore, perf, ci, build, revert"
exit 1
fi
3 changes: 2 additions & 1 deletion .prettierrc
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,6 @@
"requirePragma": false,
"tabWidth": 2,
"useTabs": false,
"embeddedLanguageFormatting": "auto"
"embeddedLanguageFormatting": "auto",
"tailwindStylesheet": "src/index.css"
}
3 changes: 3 additions & 0 deletions commitlint.config.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
extends: ['@commitlint/config-conventional'],
};
Loading