Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

majuclass/majuclass-backend-v2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

573 Commits

Repository files navigation

๐Ÿง‘โ€๐Ÿซ ๋งˆ์ฃผ๊ต์‹ค [ํ•œ๊ตญ์œก์˜ํ•™๊ต ํ˜‘์—… ํ”„๋กœ์ ํŠธ]

์‚ผ์„ฑ์ฒญ๋…„ ์†Œํ”„ํŠธ์›จ์–ด AI ์•„์นด๋ฐ๋ฏธ 13๊ธฐ ์ž์œจ ํ”„๋กœ์ ํŠธ 3๋“ฑ

๋ฐœ๋‹ฌ์žฅ์•  ์‚ฌํšŒ์  ์ƒํ™ฉ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์„œ๋น„์Šค

๐ŸŽจ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

scenario_preview1

scenario_preview2

scenario_preview3

๐Ÿซ ํ•œ๊ตญ์œก์˜ํ•™๊ต ํ˜„์žฅ์‚ฌ์šฉ

scenario_preview3 scenario_preview3

๐Ÿ—๏ธ ERD

erd-ver2

๐Ÿ“ ์„œ๋น„์Šค ๊ฐœ์š”

๋งˆ์ฃผ๊ต์‹ค์€ ๋ฐœ๋‹ฌ์žฅ์• ๋ฅผ ๊ฐ€์ง„ ํ•™์ƒ๋“ค์ด ์ผ์ƒ์—์„œ ์ผ์–ด๋‚˜๋Š” ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์—ฐ์Šตํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ธฐ๋ฐ˜ ๊ต์œก ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

๋ชฉํ‘œ

ํ•™์ƒ๋“ค์„ ์œ„ํ•œ ๊ต๋ณด์žฌ ์ œ์ž‘ ๊ฐ„ํŽธํ™”๋ฅผ ํ†ตํ•ด ์„ ์ƒ๋‹˜๋“ค์˜ ๊ต๋ณด์žฌ ์ œ์ž‘ ํ”ผ๋กœ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ ,
ํ•™์ƒ๋“ค์ด ์‰ฝ๊ณ  ์žฌ๋ฐŒ๊ฒŒ ์—ฌ๋Ÿฌ ์ƒํ™ฉ์„ ํ•™์Šตํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ” ๋ฌธ์ œ ์ •์˜

1. ๊ต๋ณด์žฌ ํ’ˆ์งˆ์˜ ๋ถˆ๊ท ํ˜•

  • ๊ต์œก์ž๋งˆ๋‹ค ์‹œ๋‚˜๋ฆฌ์˜ค ์ œ์ž‘์— ํˆฌ์ž…ํ•˜๋Š” ์‹œ๊ฐ„๊ณผ ์—ญ๋Ÿ‰์ด ์ƒ์ด
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ ํ•™์Šต์ž๊ฐ€ ๋ฐ›๋Š” ๊ต์œก ํ’ˆ์งˆ์ด ์ผ๊ด€๋˜์ง€ ์•Š์Œ
  • ์‹œ๋‚˜๋ฆฌ์˜ค ์ œ์ž‘์— ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์–ด ๊ต์‚ฌ์˜ ํ”ผ๋กœ๋„ ์ฆ๊ฐ€

2. ๋ฐ˜๋ณต ํ•™์Šต์˜ ํ•œ๊ณ„

  • ๋Œ€๋ฉด ํ›ˆ๋ จ ์ค‘์‹ฌ์œผ๋กœ, ํ•™์Šต์ž๊ฐ€ ์›ํ•  ๋•Œ ๋ฐ˜๋ณต ์—ฐ์Šตํ•˜๊ธฐ ์–ด๋ ค์›€
  • ๋™์ผํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋‹ค์–‘ํ•œ ๋‚œ์ด๋„๋กœ ๊ฒฝํ—˜ํ•  ๊ธฐํšŒ ๋ถ€์กฑ
  • ํ•™์Šต ์ง„๋„์™€ ์„ฑ์ทจ๋„๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ถ”์ ํ•˜๊ธฐ ์–ด๋ ค์›€

๐Ÿ’ก ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

AI ๊ธฐ๋ฐ˜ ์‹œ๋‚˜๋ฆฌ์˜ค ์ œ์ž‘ ๋„๊ตฌ

  • ๊ต์œก์ž๊ฐ€ AI์™€ ํ˜‘์—…ํ•˜์—ฌ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๊ด€๋œ ํ…œํ”Œ๋ฆฟ ์ œ๊ณต
  • RAG ๊ธฐ์ˆ ๋กœ ๋งฅ๋ฝ์— ๋งž๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค ์ž๋™ ์ƒ์„ฑ
  • ์ œ์ž‘ ์‹œ๊ฐ„ ๋‹จ์ถ• ๋ฐ ํ’ˆ์งˆ ํ‘œ์ค€ํ™”

๋‚œ์ด๋„๋ณ„ ์‹œ๋‚˜๋ฆฌ์˜ค ์‹œ์Šคํ…œ

  • EASY(์ด๋ฏธ์ง€ ์„ ํƒ) โ†’ NORMAL(ํ…์ŠคํŠธ ์„ ํƒ) โ†’ HARD(์Œ์„ฑ ๋‹ต๋ณ€) ๋‹จ๊ณ„๋ณ„ ํ•™์Šต
  • ํ•™์Šต์ž๊ฐ€ ์–ธ์ œ๋“ ์ง€ ๋ฐ˜๋ณต ํ•™์Šต ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • ํ•™์Šต์ž๊ฐ€ ์–ธ์ œ๋“ ์ง€ ๋ฐ˜๋ณต ํ•™์Šต ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • ์Œ์„ฑ ์ธ์‹(STT) ๋ฐ ์˜๋ฏธ ์œ ์‚ฌ๋„ ๋ถ„์„(STS)์„ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ํ”ผ๋“œ๋ฐฑ

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

๊ต์‚ฌ ๊ธฐ๋Šฅ

  • ํ•™์ƒ ๊ด€๋ฆฌ: CRUD, CSV ์ผ๊ด„ ๋“ฑ๋ก
  • ์‹œ๋‚˜๋ฆฌ์˜ค ์ƒ์„ฑ:
    • ์ˆ˜๋™ ์ƒ์„ฑ (์งˆ๋ฌธ/๋‹ต๋ณ€/ํ”ฝํ† ๊ทธ๋žจ)
    • AI ์ž๋™ ์ƒ์„ฑ (RAG ๊ธฐ๋ฐ˜, ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฒ˜๋ฆฌ)
  • ํ•™์Šต ๋ถ„์„: ํ†ต๊ณ„ ๋Œ€์‹œ๋ณด๋“œ, ์›”๋ณ„ ์บ˜๋ฆฐ๋”

ํ•™์ƒ ๊ธฐ๋Šฅ

  • ๋‚œ์ด๋„๋ณ„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜:
    • EASY: ์ด๋ฏธ์ง€ ์„ ํƒ
    • NORMAL: ํ…์ŠคํŠธ ์„ ํƒ
    • HARD: ์Œ์„ฑ ๋‹ต๋ณ€ (STS ๋ถ„์„)
  • ์‹ค์‹œ๊ฐ„ ํ”ผ๋“œ๋ฐฑ: ์ •๋‹ต/์˜ค๋‹ต ์ฆ‰์‹œ ํ™•์ธ
  • ์Œ์„ฑ ์ง€์›: TTS ์งˆ๋ฌธ ์ฝ๊ธฐ, STS ๋‹ต๋ณ€ ๋ถ„์„

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ

Frontend

  • Language: TypeScript
  • Framework: React, Vite
  • UI/์Šคํƒ€์ผ๋ง: TailwindCSS, React Icons, Lottie React React-chartjs-2
  • ์ƒํƒœ๊ด€๋ฆฌ: Zustand, React Query(TanStack Query)
  • ๋ผ์šฐํŒ…: React Router Dom
  • ๊ฐœ๋ฐœ ๋„๊ตฌ: ESLint
  • ์œ ํ‹ธ๋ฆฌํ‹ฐ: Axios

Backend

  • Language: Java 21
  • Framework: Spring Boot 3.5.6
  • Database: MySQL, Redis
  • ORM: Spring Data JPA
  • ์ธ์ฆ/๋ณด์•ˆ: Spring Security, JWT
  • ๊ฐœ๋ฐœ๋„๊ตฌ: Lombok, SpringDoc OpenAPI, Logback, Gradle

AI Service

  • Language: Python 3.11
  • Framework: FastAPI 0.115.5, Uvicorn 0.32.1
  • Database: MySQL, ChromaDB
  • ORM: SQLAlchemy
  • ์ธ์ฆ/๋ณด์•ˆ: python-jose
  • AI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: PyTorch, sentence-transformers, LangChain, OpenAI, NumPy

Infrastructure

  • ์ปจํ…Œ์ด๋„ˆ: Docker Compose
  • Cloud: AWS S3, AWS ApiGatewway, AWS Lambda, AWS Athena
  • CI/CD: GitLab runner

About

๐Ÿ†SSAFY ์ž์œจ ํ”„๋กœ์ ํŠธ 3๋“ฑ๐Ÿ†

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle ใซใ‚ˆใฃใฆๅค‰ๆ›ใ•ใ‚ŒใŸใƒšใƒผใ‚ธ (->ใ‚ชใƒชใ‚ธใƒŠใƒซ) /