Skip to content

project-ares-interview/ares-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ARES Backend - AI Interview Coach

๐Ÿ“– ๊ฐœ์š”

ARES๋Š” ์ทจ์—… ์ค€๋น„์ƒ๋“ค์ด ๋ฉด์ ‘ ๊ณผ์ •์—์„œ ๊ฒช๋Š” ์–ด๋ ค์›€์„ AI ๊ธฐ์ˆ ๋กœ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํƒ„์ƒํ•œ AI ๊ธฐ๋ฐ˜ ๋ชจ์˜ ๋ฉด์ ‘ ๋ฐ ์—ญ๋Ÿ‰ ๋ถ„์„ ํ”Œ๋žซํผ์˜ ๋ฐฑ์—”๋“œ API ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ

๋งŽ์€ ์ทจ์—… ์ค€๋น„์ƒ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•ฉ๋‹ˆ๋‹ค.

  • ๋ถ€์กฑํ•œ ์‹ค์ „ ๊ฒฝํ—˜: ์‹ค์ œ์™€ ๊ฐ™์€ ๋ฉด์ ‘ ํ™˜๊ฒฝ์—์„œ ์—ฐ์Šตํ•  ๊ธฐํšŒ๊ฐ€ ๋ถ€์กฑํ•˜์—ฌ ์‹ค์ „ ๊ฐ๊ฐ์„ ์ตํžˆ๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • ๋ง‰์—ฐํ•œ ํ”ผ๋“œ๋ฐฑ: ์Šคํ„ฐ๋””๋‚˜ ์ฃผ๋ณ€ ์ง€์ธ์„ ํ†ตํ•ด ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๋”๋ผ๋„, ์ „๋ฌธ์ ์ด๊ณ  ๊ฐ๊ด€์ ์ธ ๊ธฐ์ค€๋ณด๋‹ค๋Š” ์ฃผ๊ด€์ ์ธ ๊ฐ์ƒ์— ๊ทธ์น˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
  • ์ •๋ณด์˜ ๋น„๋Œ€์นญ: ์ง€์›ํ•˜๋Š” ๊ธฐ์—…๊ณผ ์ง๋ฌด์— ๋Œ€ํ•œ ๊นŠ์ด ์žˆ๋Š” ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์–ด๋ ค์›Œ, ๋™๋ฌธ์„œ๋‹ต์„ ํ•˜๊ฑฐ๋‚˜ ํ”ผ์ƒ์ ์ธ ๋‹ต๋ณ€์— ๊ทธ์น˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

ARES์˜ ํ•ด๊ฒฐ์ฑ…

ARES๋Š” ์ตœ์‹  AI ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ณ , ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐœ์ธํ™”๋œ ๋งž์ถคํ˜• ๋ฉด์ ‘ ์ฝ”์นญ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  1. RAG ๊ธฐ๋ฐ˜์˜ ์‹ค์‹œ๊ฐ„ ๋งž์ถค ์งˆ๋ฌธ: Azure OpenAI์™€ LlamaIndex๋ฅผ ํ™œ์šฉํ•œ RAG(๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ) ๊ธฐ์ˆ ์„ ํ†ตํ•ด, ์ง€์›ํ•˜๋Š” ๊ธฐ์—…์˜ ์ตœ์‹  ์‚ฌ์—…๋ณด๊ณ ์„œ, ๊ณต์‹œ ์ž๋ฃŒ ๋“ฑ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์งˆ๋ฌธ๋“ค์€ ๋‹จ์ˆœํ•œ ๋‹จ๋‹ตํ˜• ์งˆ๋ฌธ์„ ๋„˜์–ด, ์ง€์›์ž์˜ ์ง๋ฌด ์ดํ•ด๋„์™€ ํšŒ์‚ฌ์— ๋Œ€ํ•œ ๊ด€์‹ฌ์„ ์‹ฌ๋„ ์žˆ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  2. ๋‹ค๊ฐ์ ์ธ ์‹ฌ์ธต ๋ถ„์„ ๋ฆฌํฌํŠธ: ๋ชจ์˜ ๋ฉด์ ‘์ด ๋๋‚˜๋ฉด, ์‚ฌ์šฉ์ž์˜ ๋‹ต๋ณ€ ๋‚ด์šฉ(ํ…์ŠคํŠธ)๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์Œ์„ฑ(๋ง์˜ ๋น ๋ฅด๊ธฐ, ํ†ค)๊ณผ ์˜์ƒ(์‹œ์„  ์ฒ˜๋ฆฌ, ํ‘œ์ •)๊นŒ์ง€ ๋ถ„์„ํ•˜๋Š” ๋‹ค์ค‘ ๋ชจ๋“œ(Multi-modal) ๋ถ„์„์„ ํ†ตํ•ด ์ข…ํ•ฉ์ ์ธ ๋ฆฌํฌํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ๊ฐ•์ ๊ณผ ์•ฝ์ ์„ ๊ฐ๊ด€์ ์ธ ๋ฐ์ดํ„ฐ๋กœ ํ™•์ธํ•˜๊ณ  ์‹ค์งˆ์ ์ธ ๊ฐœ์„ ์ ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์ฒด๊ณ„์ ์ธ ์ปค๋ฆฌ์–ด ๊ด€๋ฆฌ: ์ด๋ ฅ์„œ์™€ ๊ฒฝ๋ ฅ, ํ•™๋ ฅ ๋“ฑ ๋ชจ๋“  ์ปค๋ฆฌ์–ด ์ •๋ณด๋ฅผ ํ•œ๊ณณ์—์„œ ๊ด€๋ฆฌํ•˜๊ณ , ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ์ด๋ ฅ์„œ๋ฅผ ์†์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ์ทจ์—… ์ค€๋น„ ๊ณผ์ •์˜ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.

ARES ๋ฐฑ์—”๋“œ๋Š” ์ด๋Ÿฌํ•œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๋“ค์„ ์•ˆ์ •์ ์œผ๋กœ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ RESTful API ์„œ๋ฒ„์ด๋ฉฐ, ๊ฐœ๋ฐœ์ž, ํˆฌ์ž์ž, ๊ทธ๋ฆฌ๊ณ  ๋ฉด์ ‘๊ด€์—๊ฒŒ ARES ํ”Œ๋žซํผ์˜ ๊ธฐ์ˆ ์  ๊นŠ์ด์™€ ์„ฑ์žฅ ๊ฐ€๋Šฅ์„ฑ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿš€ ๊ด€๋ จ ํ”„๋กœ์ ํŠธ

  • ARES Frontend: React Native์™€ Expo๋กœ ๊ฐœ๋ฐœ๋œ ํฌ๋กœ์Šคํ”Œ๋žซํผ(iOS, Android, Web) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ๋ณธ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์˜ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ง๊ด€์ ์ธ UI๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐ŸŽฌ ์‹œ์—ฐ ์˜์ƒ

์‹œ์—ฐ ์˜์ƒ

์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿค– AI ๊ธฐ๋ฐ˜ ๋ชจ์˜ ๋ฉด์ ‘

์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ ๋ฉด์ ‘๊ณผ ์œ ์‚ฌํ•œ ํ™˜๊ฒฝ์—์„œ AI ๋ฉด์ ‘๊ด€๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ์‹ค์ „ ๊ฐ๊ฐ์„ ์ตํž ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์ฃผ์š” ์‚ฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: LlamaIndex, Azure OpenAI, Azure AI Search, Azure Blob Storage
  • ๊ธฐ๋Šฅ ์ƒ์„ธ:
    1. ๋ฉด์ ‘ ์‹œ์ž‘: ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ธฐ์—…, ์ง๋ฌด, ๋ฉด์ ‘ ๋‚œ์ด๋„(๋ณดํ†ต, ์–ด๋ ค์›€)๋ฅผ ์„ ํƒํ•˜์—ฌ ๋ฉด์ ‘์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค (POST /api/v1/interviews/start/).
    2. RAG ๊ธฐ๋ฐ˜ ์งˆ๋ฌธ ์ƒ์„ฑ: ๋ฐฑ์—”๋“œ๋Š” Azure Blob Storage์— ์ €์žฅ๋œ ํ•ด๋‹น ๊ธฐ์—…์˜ ์ตœ์‹  ์‚ฌ์—…๋ณด๊ณ ์„œ, ๊ณต์‹œ ์ž๋ฃŒ ๋“ฑ์„ LlamaIndex๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ Azure OpenAI LLM์ด ์ง€์›์ž์˜ ์ด๋ ฅ์„œ์™€ ์ง๋ฌด์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์ฒซ ์งˆ๋ฌธ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    3. ๊ผฌ๋ฆฌ ์งˆ๋ฌธ ๋ฐ ๋‹ต๋ณ€: ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ต๋ณ€์„ ์ œ์ถœํ•˜๋ฉด(POST /api/v1/interviews/answer/), ์‹œ์Šคํ…œ์€ ๋‹ต๋ณ€ ๋‚ด์šฉ์„ ๋ถ„์„ํ•˜์—ฌ ๊ด€๋ จ๋œ ๊ผฌ๋ฆฌ ์งˆ๋ฌธ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค (POST /api/v1/interviews/next/). ์ด ๊ณผ์ •์€ ๋ฉด์ ‘์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค. Question by Question
    4. ๊ตฌ์กฐํ™”๋œ ๋‹จ๊ณ„: ๋ฉด์ ‘์€ ๊ฒฝํ—˜/์—ญ๋Ÿ‰ โ†’ ์ƒํ™ฉ/์ผ€์ด์Šค โ†’ ์กฐ์ง ์ ํ•ฉ์„ฑ์˜ 3๋‹จ๊ณ„๋กœ ์ฒด๊ณ„์ ์œผ๋กœ ์ง„ํ–‰๋˜์–ด, ์ง€์›์ž์˜ ์—ญ๋Ÿ‰์„ ๋‹ค๊ฐ๋„๋กœ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
    5. ๊ฐ€์ƒ ์•„๋ฐ”ํƒ€ ๋ฉด์ ‘:
  • ๊ฒฐ๊ณผ: ์‚ฌ์šฉ์ž๋Š” ์‹ค์ œ ๊ธฐ์—… ๋ฐ ์ง๋ฌด์™€ ๋†’์€ ๊ด€๋ จ์„ฑ์„ ๊ฐ€์ง„ ์งˆ๋ฌธ๋“ค์„ ํ†ตํ•ด ์‹ค์งˆ์ ์ธ ๋ฉด์ ‘์„ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€, ๋ถ„์„ ๋‚ด์šฉ์€ ์„ธ์…˜๋ณ„๋กœ ๊ธฐ๋ก๋˜์–ด ๋ฉด์ ‘ ์ข…๋ฃŒ ํ›„ ๋ฆฌํฌํŠธ ์ƒ์„ฑ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“„ ์ด๋ ฅ์„œ ๋ฐ ์ž์†Œ์„œ ๋ถ„์„

์‚ฌ์šฉ์ž๊ฐ€ ์—…๋กœ๋“œํ•œ ์ด๋ ฅ์„œ์™€ ์ž๊ธฐ์†Œ๊ฐœ์„œ ๋ฌธ์„œ๋ฅผ AI๊ฐ€ ๋ถ„์„ํ•˜์—ฌ ๊ฐ•์ ๊ณผ ์•ฝ์ ์„ ์ง„๋‹จํ•˜๊ณ , ์˜ˆ์ƒ ์งˆ๋ฌธ์„ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

  • ์ฃผ์š” ์‚ฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: azure-ai-documentintelligence, pdfplumber, OpenAI
  • ๊ธฐ๋Šฅ ์ƒ์„ธ:
    1. ๋ฌธ์„œ ์—…๋กœ๋“œ ๋ฐ ํ…์ŠคํŠธ ์ถ”์ถœ: ์‚ฌ์šฉ์ž๊ฐ€ PDF, DOCX ๋“ฑ์˜ ์ด๋ ฅ์„œ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๋ฉด, pdfplumber๋‚˜ azure-ai-documentintelligence๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
    2. AI ๋ถ„์„ ์š”์ฒญ: ์ถ”์ถœ๋œ ํ…์ŠคํŠธ๋ฅผ Azure OpenAI ๋ชจ๋ธ์— ์ „๋‹ฌํ•˜์—ฌ ๋ถ„์„์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค (POST /api/v1/resume/analyze/).
    3. ๋ถ„์„ ๋ฐ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜: AI๋Š” ํ…์ŠคํŠธ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
      • ์ง๋ฌด ์—ญ๋Ÿ‰ ํ‚ค์›Œ๋“œ: ์ด๋ ฅ์„œ ๋‚ด์šฉ ๊ธฐ๋ฐ˜์˜ ํ•ต์‹ฌ ์—ญ๋Ÿ‰ ํ‚ค์›Œ๋“œ ์ถ”์ถœ.
      • ์˜ˆ์ƒ ๋ฉด์ ‘ ์งˆ๋ฌธ: ๊ฒฝ๋ ฅ, ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ ์˜ˆ์ƒ ์งˆ๋ฌธ ๋ชฉ๋ก.
      • ๋‹ต๋ณ€ ๊ฐ€์ด๋“œ๋ผ์ธ: ๊ฐ ์˜ˆ์ƒ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ๋‹ต๋ณ€ ๋ฐฉํ–ฅ ์ œ์‹œ.
      • ๊ฐœ์„  ์ œ์•ˆ: ์ด๋ ฅ์„œ ๋‚ด์šฉ์˜ ๊ฐ•์ ๊ณผ ์•ฝ์ ์„ ๋ถ„์„ํ•˜๊ณ , ๋ณด์™„ํ•  ์ ์„ ์ œ์•ˆ.
  • ๊ฒฐ๊ณผ: ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ์ด๋ ฅ์„œ์— ๊ธฐ๋ฐ˜ํ•œ ๋งž์ถคํ˜• ๋ฉด์ ‘ ์งˆ๋ฌธ์„ ๋ฏธ๋ฆฌ ํŒŒ์•…ํ•˜๊ณ , ๋‹ต๋ณ€์„ ์ค€๋น„ํ•˜๋ฉฐ ๋ฉด์ ‘ ๊ฒฝ์Ÿ๋ ฅ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Š ์‹ฌ์ธต ๋ถ„์„ ๋ฆฌํฌํŠธ

๋ชจ์˜ ๋ฉด์ ‘ ์ข…๋ฃŒ ํ›„, ์‚ฌ์šฉ์ž์˜ ๋‹ต๋ณ€ ๋‚ด์šฉ๊ณผ ์Œ์„ฑ, ์˜์ƒ(์„ ํƒ์‚ฌํ•ญ)์„ ์ข…ํ•ฉ์ ์œผ๋กœ ๋ถ„์„ํ•˜์—ฌ ๋‹ค๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ์ฃผ์š” ์‚ฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: pandas, matplotlib, praat-parselmouth, librosa, opencv-python, mediapipe
  • ๊ธฐ๋Šฅ ์ƒ์„ธ:
    1. ๋ฆฌํฌํŠธ ์ƒ์„ฑ: ๋ฉด์ ‘ ์„ธ์…˜์ด ์ข…๋ฃŒ๋˜๋ฉด(POST /api/v1/interviews/finish/), ํ•ด๋‹น ์„ธ์…˜(session_id)์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ถ„์„ ๋ฆฌํฌํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
    2. ํ…์ŠคํŠธ ๋ถ„์„: ์‚ฌ์šฉ์ž์˜ ๋ชจ๋“  ๋‹ต๋ณ€์„ Azure OpenAI๋ฅผ ํ†ตํ•ด ๋ถ„์„ํ•˜์—ฌ ๋‚ด์šฉ์˜ ๋…ผ๋ฆฌ์„ฑ, ์ง๋ฌด ๊ด€๋ จ์„ฑ, ๋ฌธ์ œ ํ•ด๊ฒฐ ๋Šฅ๋ ฅ ๋“ฑ์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    3. ์Œ์„ฑ ๋ถ„์„: librosa, parselmouth๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ต๋ณ€ ์Œ์„ฑ์˜ ๋น ๋ฅด๊ธฐ, ํ†ค์˜ ๋ณ€ํ™”, ๋ชฉ์†Œ๋ฆฌ ํฌ๊ธฐ ๋“ฑ์„ ๋ถ„์„ํ•˜์—ฌ ๋ฐœํ‘œ ์Šต๊ด€์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    4. ์˜์ƒ ๋ถ„์„: opencv-python, mediapipe๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์„  ์ฒ˜๋ฆฌ, ํ‘œ์ • ๋ณ€ํ™”, ์ž์„ธ ๋“ฑ์„ ๋ถ„์„ํ•˜์—ฌ ๋น„์–ธ์–ด์  ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์š”์†Œ๋ฅผ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    5. ์ข…ํ•ฉ ํ‰๊ฐ€: NCS ์ง๋ฌด ์—ญ๋Ÿ‰ ๋ถ„๋ฅ˜ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์—ญ๋Ÿ‰์„ ํ‰๊ฐ€ํ•˜๊ณ , ์ „์ฒด ์ง€์›์ž ์ค‘ ๋ฐฑ๋ถ„์œ„ ์ˆœ์œ„๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. matplotlib์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ ˆ์ด๋” ์ฐจํŠธ ๋“ฑ ์‹œ๊ฐ ์ž๋ฃŒ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ๊ฐ•์ ๊ณผ ์•ฝ์ ์„ ๊ฐ๊ด€์ ์ธ ๋ฐ์ดํ„ฐ๋กœ ํ™•์ธํ•˜๊ณ , ๊ฐœ์„  ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ AI ์กฐ์–ธ์ด ๋‹ด๊ธด ์ข…ํ•ฉ ๋ฆฌํฌํŠธ๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค (GET /api/v1/interviews/report/<uuid:session_id>/).

๐Ÿ‘ค ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ๋ฐ ์ด๋ ฅ์„œ ๊ด€๋ฆฌ

์‚ฌ์šฉ์ž์˜ ๊ธฐ๋ณธ ์ •๋ณด์™€ ๊ฒฝ๋ ฅ, ํ•™๋ ฅ ๋“ฑ ์ปค๋ฆฌ์–ด ์ •๋ณด๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ์ฃผ์š” ์‚ฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: Django REST Framework, django-ordered-model
  • ๊ธฐ๋Šฅ ์ƒ์„ธ:
    • ํ”„๋กœํ•„ ๊ด€๋ฆฌ: ์‚ฌ์šฉ์ž์˜ ํ•™๋ ฅ, ๊ฒฝ๋ ฅ, ์ž๊ฒฉ์ฆ, ์ˆ˜์ƒ ๋‚ด์—ญ, ์™ธ๊ตญ์–ด ๋Šฅ๋ ฅ ๋“ฑ ํ”„๋กœํ•„ ์ •๋ณด๋ฅผ ํ•ญ๋ชฉ๋ณ„๋กœ ์ƒ์„ฑ(Create), ์กฐํšŒ(Read), ์ˆ˜์ •(Update), ์‚ญ์ œ(Delete)ํ•˜๋Š” API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋ ฅ์„œ ๊ด€๋ฆฌ: ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ์ด๋ ฅ์„œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ด๋ ฅ์„œ ์ƒ์„ฑ ์‹œ, ๊ธฐ์กด ํ”„๋กœํ•„ ์ •๋ณด๋ฅผ ์ž๋™์œผ๋กœ ๋ถˆ๋Ÿฌ์™€ ์ฑ„์›Œ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค.
    • ์ˆœ์„œ ๊ด€๋ฆฌ: django-ordered-model์„ ๋„์ž…ํ•˜์—ฌ ํ•™๋ ฅ, ๊ฒฝ๋ ฅ ๋“ฑ ๋ชฉ๋ก์˜ ์ˆœ์„œ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ์†์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•˜๊ณ  ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. API ์š”์ฒญ๋งŒ์œผ๋กœ ์ˆœ์„œ๊ฐ€ ์ž๋™์œผ๋กœ ์žฌ์ •๋ ฌ๋˜์–ด, ํ”„๋ก ํŠธ์—”๋“œ์—์„œ์˜ ๋ณต์žกํ•œ ์ˆœ์„œ ๊ด€๋ฆฌ ๋กœ์ง์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ๋ชจ๋“  ์ปค๋ฆฌ์–ด ์ •๋ณด๋ฅผ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•˜๊ณ , ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์†์‰ฝ๊ฒŒ ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ์ด๋ ฅ์„œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“… ๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋” ์—ฐ๋™

์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋”์™€ ARES ์„œ๋น„์Šค๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ๋ฉด์ ‘ ์ผ์ •์„ ์ž๋™์œผ๋กœ ๊ธฐ๋กํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.

  • ์ฃผ์š” ์‚ฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: google-api-python-client, google-auth-oauthlib
  • ๊ธฐ๋Šฅ ์ƒ์„ธ:
    1. OAuth 2.0 ์ธ์ฆ: google-auth-oauthlib์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ˆ์ „ํ•œ OAuth 2.0 ์ธ์ฆ ๊ณผ์ •์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋” ์ ‘๊ทผ ๊ถŒํ•œ์„ ์œ„์ž„๋ฐ›์Šต๋‹ˆ๋‹ค (GET /api/v1/calendar/google-auth-url/).
    2. ์ด๋ฒคํŠธ ์ถ”๊ฐ€/์กฐํšŒ/์‚ญ์ œ: ์ธ์ฆ์ด ์™„๋ฃŒ๋˜๋ฉด, google-api-python-client๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋”์— ๋ฉด์ ‘ ์ผ์ •์„ ์ถ”๊ฐ€(POST /api/v1/calendar/add-event/), ์กฐํšŒ(GET /api/v1/calendar/events/), ์‚ญ์ œ(DELETE /api/v1/calendar/delete-event/<id>/)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: ARES ํ”Œ๋žซํผ ๋‚ด์—์„œ ์žกํžŒ ๋ชจ์˜ ๋ฉด์ ‘ ์ผ์ •์ด๋‚˜, ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋“ฑ๋กํ•œ ์‹ค์ œ ๋ฉด์ ‘ ์ผ์ •์ด ์‚ฌ์šฉ์ž์˜ ๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋”์— ์ž๋™์œผ๋กœ ๋™๊ธฐํ™”๋˜์–ด ํŽธ๋ฆฌํ•˜๊ฒŒ ์ผ์ •์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜

ARES ๋ฐฑ์—”๋“œ๋Š” ํ™•์žฅ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•„ํ‚คํ…์ฒ˜๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ (Django & DRF): ์•ˆ์ •์„ฑ๊ณผ ๋น ๋ฅธ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ์œ„ํ•ด Django์™€ Django REST Framework(DRF)๋ฅผ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. Django์˜ ORM, ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ ๋“ฑ ๋‚ด์žฅ ๊ธฐ๋Šฅ์„ ์ ๊ทน ํ™œ์šฉํ•˜๊ณ , DRF๋ฅผ ํ†ตํ•ด RESTful API๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

  • API ๊ตฌ์กฐ (ViewSets & Serializers): DRF์˜ ViewSet๊ณผ Serializer๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ API๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ModelViewSet์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ์ ์ธ CRUD API๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ณ , ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ๊ฐ ViewSet์˜ ๋ฉ”์„œ๋“œ(ex: perform_create)์— ๊ตฌํ˜„ํ•˜์—ฌ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Serializer๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐ ์ง๋ ฌํ™”/์—ญ์ง๋ ฌํ™”๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

  • ์ธ์ฆ (dj-rest-auth & Simple JWT): dj-rest-auth์™€ djangorestframework-simplejwt๋ฅผ ์กฐํ•ฉํ•˜์—ฌ JWT ๊ธฐ๋ฐ˜์˜ ์ธ์ฆ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ๋Š” Access Token๊ณผ Refresh Token์„ ๋ฐœ๊ธ‰๋ฐ›์•„ API ์š”์ฒญ ์‹œ ์‚ฌ์šฉํ•˜๋ฉฐ, ์„œ๋ฒ„๋Š” JWTCookieAuthentication์„ ํ†ตํ•ด ์ฟ ํ‚ค์— ๋‹ด๊ธด ํ† ํฐ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

  • RAG ํŒŒ์ดํ”„๋ผ์ธ: AI ๋ฉด์ ‘ ์งˆ๋ฌธ ์ƒ์„ฑ์˜ ํ•ต์‹ฌ ๋กœ์ง์œผ๋กœ, LlamaIndex๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ดํ”„๋ผ์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    1. ๋ฌธ์„œ ๋กœ๋“œ: Azure Blob Storage์— ์ €์žฅ๋œ ๊ธฐ์—… ์ž๋ฃŒ(PDF, TXT ๋“ฑ)๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    2. ์ธ๋ฑ์‹ฑ: ๋กœ๋“œ๋œ ๋ฌธ์„œ๋ฅผ Azure OpenAI์˜ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ(text-embedding-3-small)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , Azure AI Search์— ์ธ๋ฑ์‹ฑํ•˜์—ฌ ๋ฒกํ„ฐ ์ €์žฅ์†Œ๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.
    3. ๊ฒ€์ƒ‰ ๋ฐ ์ƒ์„ฑ: ์‚ฌ์šฉ์ž ์งˆ๋ฌธ์ด ๋“ค์–ด์˜ค๋ฉด, ํ•ด๋‹น ์งˆ๋ฌธ๊ณผ ๊ฐ€์žฅ ๊ด€๋ จ์„ฑ ๋†’์€ ๋ฌธ์„œ๋ฅผ ๋ฒกํ„ฐ ์ €์žฅ์†Œ์—์„œ ๊ฒ€์ƒ‰(Retrieval)ํ•˜๊ณ , ๊ฒ€์ƒ‰๋œ ๋ฌธ์„œ์™€ ์›๋ณธ ์งˆ๋ฌธ์„ Azure OpenAI์˜ LLM(gpt-4o)์— ํ•จ๊ป˜ ์ „๋‹ฌํ•˜์—ฌ ์ตœ์ข… ๋‹ต๋ณ€(๊ผฌ๋ฆฌ ์งˆ๋ฌธ)์„ ์ƒ์„ฑ(Generation)ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

/ares-backend
โ”œโ”€โ”€ ares/                 # Django ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ
โ”‚   โ”œโ”€โ”€ api/              # ํ•ต์‹ฌ API ๋กœ์ง์„ ๋‹ด๊ณ  ์žˆ๋Š” Django ์•ฑ
โ”‚   โ”‚   โ”œโ”€โ”€ models/       # ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ (User, Resume, Interview ๋“ฑ)
โ”‚   โ”‚   โ”œโ”€โ”€ serializers/  # ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
โ”‚   โ”‚   โ”œโ”€โ”€ views/        # API ์—”๋“œํฌ์ธํŠธ ๋กœ์ง (DRF ViewSets)
โ”‚   โ”‚   โ”œโ”€โ”€ urls.py       # API ๋ผ์šฐํŒ… ์„ค์ •
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”œโ”€โ”€ settings.py       # Django ํ”„๋กœ์ ํŠธ ์„ค์ •
โ”‚   โ””โ”€โ”€ urls.py           # ์ตœ์ƒ์œ„ URL ๋ผ์šฐํŒ…
โ”œโ”€โ”€ data/                 # AI ๋ชจ๋ธ ํ•™์Šต/๋ถ„์„์— ์‚ฌ์šฉ๋˜๋Š” ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ
โ”œโ”€โ”€ logs/                 # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ
โ”œโ”€โ”€ manage.py             # Django ๊ด€๋ฆฌ ์Šคํฌ๋ฆฝํŠธ
โ”œโ”€โ”€ pyproject.toml        # ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ ๋ฐ ์„ค์ • (uv)
โ””โ”€โ”€ requirements.txt      # pyproject.toml๊ณผ ๋™๊ธฐํ™”๋˜๋Š” ์˜์กด์„ฑ ๋ชฉ๋ก

๊ธฐ์ˆ  ์Šคํƒ

  • Backend: Django, Django REST Framework
  • AI/ML:
    • RAG Pipeline: LlamaIndex
    • LLM: Azure OpenAI, OpenAI
    • Vector Store: Azure AI Search
    • Document Storage: Azure Blob Storage
    • Speech and Audio: azure-cognitiveservices-speech, librosa, praat-parselmouth
    • Computer Vision: opencv-python, mediapipe
    • Data Handling: pandas, numpy
  • Authentication: dj-rest-auth, djangorestframework-simplejwt, django-allauth
  • Database: SQLite (๊ธฐ๋ณธ๊ฐ’), ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์„ค์ • ๊ฐ€๋Šฅ
  • API Documentation: drf-spectacular
  • Async/WebSockets: channels, daphne
  • Package Management: uv
  • Environment Management: python-dotenv

์„ค์น˜ ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ•

1. ์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ

  • Python 3.11.9 ์ด์ƒ
  • uv ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž
  • Azure ๊ณ„์ • ๋ฐ ์•„๋ž˜ ์„œ๋น„์Šค ์ƒ์„ฑ:
    • Azure Storage Account (Blob ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ)
    • Azure AI Search
    • Azure OpenAI Service (๋ชจ๋ธ ๋ฐฐํฌ)

2. ํ”„๋กœ์ ํŠธ ํด๋ก 

git clone https://github.com/project-ares-interview/ares-backend.git
cd ares-backend

3. ๊ฐ€์ƒ ํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

uv๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๊ณ , pyproject.toml์— ๋ช…์‹œ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

# ๊ฐ€์ƒ ํ™˜๊ฒฝ ์ƒ์„ฑ
uv venv

# ๊ฐ€์ƒ ํ™˜๊ฒฝ ํ™œ์„ฑํ™”
source .venv/bin/activate  # macOS/Linux
.venv\Scripts\activate    # Windows

# ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋™๊ธฐํ™”
uv pip sync pyproject.toml

4. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— .env.development ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์•„๋ž˜ ๋‚ด์šฉ์„ ์ฑ„์›Œ๋„ฃ์Šต๋‹ˆ๋‹ค.

# Django Settings
SECRET_KEY='your-django-secret-key'
DEBUG=True

# Database (SQLite example)
# DATABASE_URL=sqlite:///db.sqlite3

# Azure Services
AZURE_STORAGE_CONNECTION_STRING='your-storage-connection-string'
AZURE_SEARCH_ENDPOINT='https://your-search-service.search.windows.net'
AZURE_SEARCH_KEY='your-search-admin-key'
AZURE_OPENAI_ENDPOINT='https://your-openai-service.openai.azure.com/'
AZURE_OPENAI_KEY='your-openai-api-key'
AZURE_OPENAI_API_VERSION='2024-02-15-preview' # ์‚ฌ์šฉํ•˜๋Š” API ๋ฒ„์ „์— ๋งž๊ฒŒ ์ˆ˜์ •
AZURE_OPENAI_MODEL='your-deployment-name' # gpt-4o ๋“ฑ
AZURE_OPENAI_EMBEDDING_MODEL='your-embedding-deployment-name' # text-embedding-3-small ๋“ฑ

# Social Auth (Optional)
GOOGLE_CLIENT_ID='your-google-client-id'
GOOGLE_CLIENT_SECRET='your-google-client-secret'

5. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

uv run python manage.py migrate

6. ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰

uv๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

uv run daphne -p 8000 ares.asgi:application

์ฃผ์š” API ์—”๋“œํฌ์ธํŠธ

  • POST /api/v1/interviews/start/: ์ƒˆ๋กœ์šด AI ๋ชจ์˜ ๋ฉด์ ‘์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • POST /api/v1/interviews/next/: ๋‹ค์Œ ๊ผฌ๋ฆฌ ์งˆ๋ฌธ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  • POST /api/v1/interviews/answer/: ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ์ œ์ถœํ•˜๊ณ  ๋ถ„์„์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  • POST /api/v1/interviews/finish/: ๋ฉด์ ‘์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
  • GET /api/v1/interviews/report/<uuid:session_id>/: ํŠน์ • ๋ฉด์ ‘ ์„ธ์…˜์˜ ์ตœ์ข… ๋ฆฌํฌํŠธ๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • POST /api/v1/resume/analyze/: ์ด๋ ฅ์„œ ํ…์ŠคํŠธ๋ฅผ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.
  • POST /api/v1/auth/registration/: ํšŒ์›๊ฐ€์ž…
  • POST /api/v1/auth/login/: ๋กœ๊ทธ์ธ

์ด ์™ธ์—๋„ ์ด๋ ฅ์„œ, ์ž๊ธฐ์†Œ๊ฐœ์„œ, ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ CRUD ์—”๋“œํฌ์ธํŠธ๊ฐ€ ares/api/views/v1/urls.py์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ „์ฒด API ๋ฌธ์„œ๋Š” ์„œ๋ฒ„ ์‹คํ–‰ ํ›„ /api/schema/swagger-ui/ ๋˜๋Š” /api/schema/redoc/์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Team

๊น€์„œํ˜„ ๋ฐ•์šฉ๋ฝ ์žฅ์€ํ˜ธ ์žฅํ•œ๋ณ„ ์ง„์†Œํฌ ์ตœ๋™ํœ˜

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5