Skip to content

CourseMate-2025/coursemate-2025

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Error in user YAML: (<unknown>): mapping values are not allowed in this context at line 9 column 12
---

# CourseMate Git & Development Convention

## Branch Strategy

### 브랜치 종류

우리는 **Git-Flow**를 간소화하여 사용합니다.

- **main** : 배포 가능한 최종 버전 브랜치 (직접 Push 금지)
- **dev** : 개발 통합 브랜치
  - **feat/{기능명}`** : 새로운 기능을 개발
  - **fix/{버그명}`** : 버그를 수정
- **hotfix** : main 배포 후 발생한 긴급 버그 수정

### 브랜치 명명 예시

feat/[담당파트]-[기능명]으로 기재합니다.
하나의 기능 개발이 완료되면 dev로 merge하는 PR을 올립니다.

- `feat/fe-login` (로그인 기능)
- `feat/ai-rag-pipeline` (RAG 파이프라인)
- `fix/be-db-connection` (DB 연결 오류 수정)

---

Commit

커밋 형식

<Type> : <Subject>

<Body> (선택사항)

<Footer> (선택사항)

Commit Type

공통 및 Backend

  • feat: 새로운 기능 추가 (Feature)
  • fix: 버그 수정
  • docs: 문서 수정
  • style: 코드 포맷팅, 세미콜론 누락
  • refactor: 코드 리팩터링
  • test: 테스트 코드 추가/수정
  • chore: 빌드 설정, 패키지 매니저 설정, 파일 이동 등

AI 전용 태그

  • data: 데이터 전처리, ETL 파이프라인, 데이터셋 변경
  • model: 모델 로드, 파인튜닝, 양자화 관련 변경
  • prompt: 프롬프트 엔지니어링 (시스템 프롬프트 수정 등)
  • exp: Jupyter Notebook 실험 코드

Breaking Change (호환성 파괴)

API 응답 변경, DB 스키마 변경 등 기존 코드와 호환되지 않는 경우 Type 뒤에 !를 붙여 명시합니다.

  • Not Break: feat: 로그인 기능 (안전)
  • Break: feat!: 졸업 학점 변경 (주의 요망)

커밋 작성 규칙

  1. Subject (제목): 명령조, 현재 시제 사용. 끝에 마침표(.) 금지.
  2. Body (본문): '무엇을', '왜' 변경했는지 설명. (Breaking Change 시 필수 작성)
  3. Footer (꼬리말): 관련 이슈 번호 연결.

작성 예시

일반 기능

feat: 교육과정 데이터 DB 적재 로직 구현

- JSON 파일 파싱하여 줄글(Content)로 변환하는 로직 추가
- MariaDB docs 테이블 Insert 쿼리 작성
- pymysql 라이브러리 의존성 추가

Resolves: #12

Breaking Change (AI 예시)

model!: 임베딩 모델 변경 (BGE-m3 -> OpenAI)

기존 로컬 임베딩 모델의 성능 이슈로 API 기반 모델로 교체함.
기존 벡터 DB와 호환되지 않으므로 재적재(Re-indexing) 필요.

Resolves: #45

Issue & PR Convention

Issue Template

이슈 생성 시 아래 형식을 따릅니다.

[분류][담당자] 작업 내용
  • 예시: [AI][민서] 교육과정 데이터 파싱 로직 개발
  • 예시: [BE][도연] 회원가입 API 유효성 검사 추가

PR Title

PR 제목은 해당 작업의 이슈 번호와 변경 사항을 명시합니다.

[#<이슈번호>] 변경 사항 요약
  • 예시: [#3] 로그인 기능 구현
  • 예시: [#11] 회원 엔티티 스키마 변경

Directory Structure (Feature-Based)

1. Backend (Node.js)

Feature 단위로 폴더를 구성하여 관련 로직을 응집도 있게 관리합니다.

coursemate-backend
 ┣  scripts             # (변경) DB 유틸리티 스크립트
 ┃ ┗  insert_test.js    # Insert 테스트용
 ┃ ┗  database_setup.js # 테이블 생성 초기 코드
 ┣  src                 # 서버 메인 코드
 ┃ ┣  config            # 환경 설정
 ┃ ┃ ┗  db.js           # MariaDB Connection Pool
 ┃ ┣  api               # (핵심) 기능별 모듈
 ┃ ┃ ┣  auth            # 인증 (로그인/회원가입)
 ┃ ┃ ┃ ┣  controller.js
 ┃ ┃ ┃ ┣  service.js
 ┃ ┃ ┃ ┗  routes.js
 ┃ ┃ ┣  user            # 마이페이지
 ┃ ┃ ┣  chat            # 챗봇 대화
 ┃ ┃ ┣  roadmap         # 로드맵 관리
 ┃ ┃ ┗  home            # 메인 화면
 ┃ ┣  middlewares       # 공통 미들웨어 (Auth check 등)
 ┃ ┗  app.js            # App Entry Point
 ┣  .env
 ┗  package.json

2. AI (Python)

실험용 Notebook와 배포용 코드(Src), Data를 명확히 분리합니다.

coursemate-ai
 ┣  aidata              # Raw 데이터 저장소 (gitignore)
 ┃
 ┣  notebooks           # Jupyter Notebook 실험 코드
 ┃
 ┣  src                 # 실제 배포될 클린 코드
 ┃ ┣  db_utils.py       # DB 연결 및 쿼리 함수
 ┃ ┣  ingest_data.py    # ETL 파이프라인 실행 스크립트
 ┃ ┣  rag_pipeline.py   # RAG 로직 (Rewrite -> Retrieve -> Generate)
 ┃ ┗  main.py           # FastAPI 서버 진입점
 ┣  models              # 모델 가중치 및 인덱스 파일 (gitignore)
 ┃ ┗  rag_faiss.idx
 ┣  .env
 ┣  .gitignore
 ┗  requirements.txt

3. FE (React)

coursemate-frontend
 ┣  public/                     # 정적 리소스 (이미지, 아이콘 등)
 ┣  src/                        # FE 전체 소스코드
 ┃ ┣  assets/                   # 이미지, 폰트 등 정적 자원
 ┃ ┣  components/               # 화면별 UI 컴포넌트
 ┃ ┣  features/                 # 기능 단위 모듈 (도메인별 로직)
 ┃ ┣  hooks/                    # 커스텀 훅
 ┃ ┣  lib/                      # 공통 유틸, API, 상태 등
 ┃ ┣  router/                   # 라우터 설정
 ┃ ┣  types/                    # 전역 타입 정의
 ┃ ┣  App.tsx                   # 최상위 App 컴포넌트
 ┃ ┣  App.css                   # App 전용 스타일
 ┃ ┣  index.css                 # 전역 스타일 및 Tailwind base
 ┃ ┗  main.tsx                  # 앱 엔트리 포인트
 ┣  index.html                  # Vite 기본 HTML
 ┣  tailwind.config.cjs         # Tailwind 설정
 ┣  postcss.config.cjs          # PostCSS 설정
 ┣  vite.config.ts              # Vite 설정
 ┣  package.json                # 프로젝트 의존성 정보
 ┣  package-lock.json
 ┣  tsconfig.json               # Typescript 설정
 ┣  tsconfig.app.json
 ┣  tsconfig.node.json
 ┣  eslint.config.js            # ESLint 설정
 ┗  README.md

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •