Skip to content
@Team-Code808

Team-Code808

image CalmDesk (์นผ๋ฆ„๋ฐ์Šคํฌ) image

**CalmDesk**๋Š” ์ฝœ์„ผํ„ฐ ์ƒ๋‹ด ์ธ๋ ฅ์ด ๊ฒช๋Š” ๊ฐ์ • ๋…ธ๋™๊ณผ ์ •์‹ ์  ๋ถ€๋‹ด์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•œ HRยท๊ฑด๊ฐ• ํ†ตํ•ฉ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.
์ƒ๋‹ด ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ์ŠคํŠธ๋ ˆ์Šค์™€ ์•…์„ฑ ๋ฏผ์› ๋…ธ์ถœ์„ ์ •๋Ÿ‰์ ์œผ๋กœ ๋ถ„์„ํ•˜์—ฌ ์ƒ๋‹ด์›์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์งˆ์ ์ธ ๊ด€๋ฆฌ ์ฒด๊ณ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.




๐Ÿ“˜ ๊ฐœ๋ฐœ ๋ชฉํ‘œ (Development Goals)

1๏ธโƒฃ ์ƒ๋‹ด์› ์ •์„œ ๋ณดํ˜ธ

๐Ÿ”น AI๋ฅผ ํ™œ์šฉํ•ด ์ฝœ์„ผํ„ฐ ์ƒ๋‹ด์›์˜ ์ŠคํŠธ๋ ˆ์Šค ์ƒํƒœ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜์—ฌ, ๊ณ ์œ„ํ—˜๊ตฐ ๋ฐœ์ƒ ์‹œ ์ƒ๋‹ด ๋งค์นญ ๋ฐ ๊ฐ•์ œ ํœด์‹(Cooldown)์„ ํ†ตํ•ด ๋ฒˆ์•„์›ƒ์„ ์˜ˆ๋ฐฉ.

2๏ธโƒฃ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์กฐ์ง ๊ด€๋ฆฌ

๐Ÿ”น ๊ทผํƒœ ์ •๋ณด์™€ ์ŠคํŠธ๋ ˆ์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๋™ํ•ด ์ง์›์˜ ๊ฑด๊ฐ• ์ƒํƒœ๊นŒ์ง€ ๊ณ ๋ คํ•œ ์Šค๋งˆํŠธ ๊ด€๋ฆฌ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๊ณ , ํ†ตํ•ฉ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ์กฐ์ง ์ƒํƒœ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›.

3๏ธโƒฃ ๋ฉ€ํ‹ฐํ…Œ๋„Œ์‹œ ๊ธฐ๋ฐ˜ ํ™•์žฅ์„ฑ

๐Ÿ”น ๊ธฐ์—…๋ณ„ ๋ฐ์ดํ„ฐ๊ฐ€ ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋˜๋„๋ก ๋ฉ€ํ‹ฐํ…Œ๋„Œ์‹œ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ธฐ์—…์ด ๋…๋ฆฝ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ตฌ๋…ํ˜• ์„œ๋น„์Šค ํ™˜๊ฒฝ์„ ์ œ๊ณต.

4๏ธโƒฃ ์‹ค์‹œ๊ฐ„ ์†Œํ†ต ๋ฐ ์ฐธ์—ฌ ์œ ๋„

๐Ÿ”น WebSocket๊ณผ SSE๋ฅผ ํ™œ์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ๋ฐ ์ฑ„ํŒ… ๊ธฐ๋Šฅ๊ณผ ํฌ์ธํŠธยท๊ธฐํ”„ํ‹ฐ์ฝ˜ ๋ณด์ƒ ์ฒด๊ณ„๋ฅผ ํ†ตํ•ด ์ง์› ์ฐธ์—ฌ์™€ ์„œ๋น„์Šค ๋ชฐ์ž…๋„๋ฅผ ๋†’์ž„.



๐ŸŒŸ ์‚ฌ์šฉ์ž ์—ญํ• ๋ณ„ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ’ผ ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ (Admin)

๊ธฐ์—…์˜ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์šด์˜ํ•˜๊ณ  ์กฐ์ง์›์˜ ์ •์„œ์  ๊ฑด๊ฐ•์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ–ผ๏ธ ํ—ค๋” ๋„ค๋น„๊ฒŒ์ด์…˜

  • ํ†ตํ•ฉํ˜„ํ™ฉ: ์ „์‚ฌ ์ŠคํŠธ๋ ˆ์Šค ์ง€์ˆ˜ ๋ฐ ๋ถ€์„œ๋ณ„ ์—…๋ฌด ํ˜„ํ™ฉ ์š”์•ฝ.

  • ํŒ€์›๊ด€๋ฆฌ: ์ „ ์‚ฌ์›์˜ ๊ฐœ์ธ ์ •๋ณด, ์ง๊ธ‰ ๋ฐ ๊ถŒํ•œ ์„ค์ • ๊ด€๋ฆฌ.

  • ์ƒ์„ธ๋ถ„์„: ์‹ฌ์ธต์ ์ธ ํ•„ํ„ฐ๋ง์„ ํ†ตํ•œ ์›”๊ฐ„/๋ถ„๊ธฐ๋ณ„ ์ •์„œ ์ง€ํ‘œ ๋ถ„์„.

  • ์‹ ์ฒญ๊ด€๋ฆฌ: ํœด๊ฐ€, ์—ฐ์ฐจ, ์ƒ๋‹ด ๋“ฑ ๋ชจ๋“  ๊ฒฐ์žฌ ์š”์ฒญ ๊ฑด์— ๋Œ€ํ•œ ์Šน์ธ/๋ฐ˜๋ ค ์ฒ˜๋ฆฌ.

  • ๊ธฐํ”„ํ‹ฐ์ฝ˜ ๊ด€๋ฆฌ: ๋ณต์ง€ ๋ชฐ ์ƒํ’ˆ ๋“ฑ๋ก ๋ฐ ๋ฐœ๊ธ‰ ๋‚ด์—ญ ๊ด€๋ฆฌ.

  • ๋งˆ์ดํŽ˜์ด์ง€: ๊ฐœ์ธ์ •๋ณด ์ˆ˜์ • ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ด€๋ฆฌ.

๐Ÿ”” ๊ด€๋ฆฌ์ž ์ „์šฉ ์•Œ๋ฆผ ๋ฐ ์†Œํ†ต

  • ์šด์˜ ์•Œ๋ฆผ ์„ผํ„ฐ: ์‹ ๊ทœ ํŒ€์› ๊ฐ€์ž… ์š”์ฒญ, ๊ธด๊ธ‰ ์ƒ๋‹ด ์‹ ์ฒญ ๋“ฑ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ์ง€ํ•˜์—ฌ ์•Œ๋ฆผ ์ œ๊ณต.
  • ํ†ตํ•ฉ ์ฑ„ํŒ… ๊ด€๋ฆฌ: ์ง์›๋“ค์˜ ์ƒ๋‹ด ์š”์ฒญ์— ๋Œ€ํ•œ ์‹ค์‹œ๊ฐ„ ์‘๋Œ€ ๋ฐ ์ด๋ ฅ ๊ด€๋ฆฌ.

๐Ÿง‘ ์ง์› ํŽ˜์ด์ง€ (Employee)

์—…๋ฌด ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ๊ณผ ์ •์„œ์  ์ผ€์–ด๋ฅผ ์œ„ํ•œ ๊ฐœ์ธ ํŠนํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ–ผ๏ธ ํ—ค๋” ๋„ค๋น„๊ฒŒ์ด์…˜

  • ๋Œ€์‹œ๋ณด๋“œ: ๊ฐœ์ธ ์—…๋ฌด ํ†ต๊ณ„ ๋ฐ ์ •์„œ ์ง€์ˆ˜ ์š”์•ฝ ์ •๋ณด ํ™•์ธ.

  • ๋ถ€์„œ์ •๋ณด: ์†Œ์† ๋ถ€์„œ์˜ ํŒ€์› ๋ช…๋‹จ ๋ฐ ์กฐ์ง๋„ ํ™•์ธ.

  • ๊ทผํƒœ๊ด€๋ฆฌ: ์‹ค์‹œ๊ฐ„ ์ถœํ‡ด๊ทผ ์ฒดํฌ ๋ฐ ์—ฐ์ฐจ ์‚ฌ์šฉ ๋‚ด์—ญ ๊ด€๋ฆฌ.

  • ์ƒ๋‹ด์‹ ์ฒญ: ์ „๋ฌธ ์ƒ๋‹ด์‚ฌ์™€์˜ ์‹ค์‹œ๊ฐ„ ์ƒ๋‹ด ์˜ˆ์•ฝ ๋ฐ ๋‚ด์—ญ ํ™•์ธ.

  • ํ†ตํ™”๊ธฐ๋ก: AI๊ฐ€ ์š”์•ฝํ•œ ๋ณธ์ธ์˜ ํ†ตํ™” ๋…น์ทจ๋ก ๋ฐ ๊ฐ์ • ๋ถ„์„ ๊ฒฐ๊ณผ ์กฐํšŒ.

  • ํฌ์ธํŠธ๋ชฐ: ์ ๋ฆฝ๋œ ์„ฑ๊ณผ ํฌ์ธํŠธ๋กœ ๊ธฐํ”„ํ‹ฐ์ฝ˜ ๋“ฑ ๋ณต์ง€ ์ƒํ’ˆ ๊ตฌ๋งค.

  • ๋งˆ์ดํŽ˜์ด์ง€: ๊ฐœ์ธ ํ”„๋กœํ•„ ๊ด€๋ฆฌ , ๊ธฐํ”„ํ‹ฐ์ฝ˜ ๋ณด๊ด€ํ•จ , ํฌ์ธํŠธ ๋ฐ ๊ฒฐ์ œ ๋‚ด์—ญ ๊ด€๋ฆฌ.

๐Ÿ’ฌ ์‹ค์‹œ๊ฐ„ ์†Œํ†ต ๋ฐ ์•Œ๋ฆผ

  • ์‹ค์‹œ๊ฐ„ ์ฑ—๋ด‡: AI ๋น„์„œ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์—…๋ฌด ๊ด€๋ จ ์งˆ๋ฌธ์— ์ฆ‰๊ฐ์ ์ธ ๋‹ต๋ณ€ ์ œ๊ณต.
  • ๊ทธ๋ฃน ์ฑ„ํŒ…: N:N ๋˜๋Š” 1:1 ์ฑ„ํŒ…์„ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ์ •์„œ ์ผ€์–ด ๋ฐ ์—…๋ฌด ์ง€์›.
  • ์Šค๋งˆํŠธ ์•Œ๋ฆผ ์„ผํ„ฐ: SSE๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜์—ฌ ํœด๊ฐ€ ์Šน์ธ, ๊ณต์ง€์‚ฌํ•ญ ๋“ฑ์„ ์‹ค์‹œ๊ฐ„ ํ‘ธ์‹œ ์•Œ๋ฆผ์œผ๋กœ ์ˆ˜์‹ .


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

๋ถ„๋ฅ˜ ๊ตฌ๋ถ„ ๊ธฐ์ˆ  ์ƒ์„ธ
Backend ํ”„๋ ˆ์ž„์›Œํฌ / ์–ธ์–ด Spring Boot , Java 17
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค / ์บ์‹œ MySQL , Redis , JPA
AI ์ง€๋Šฅํ˜• ์„œ๋น„์Šค Spring AI (OpenAI, Ollama, Google GenAI), Google Cloud STT API
๋ณด์•ˆ / ์ธํ„ฐํŽ˜์ด์Šค Spring Security, JWT , WebSocket , Swagger
๋ถ„๋ฅ˜ ๊ตฌ๋ถ„ ๊ธฐ์ˆ  ์ƒ์„ธ
Frontend ํ”„๋ ˆ์ž„์›Œํฌ / ์–ธ์–ด React , JavaScript
์ƒํƒœ / ์Šคํƒ€์ผ๋ง Zustand , Styled-components, Vanilla CSS
๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Recharts , Lucide React
ํ†ต์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Axios, StompJS
์†Œํ†ต Slack, Notion, ์นด์นด์˜คํ†ก



๐ŸŽฌ ์‹œ์—ฐ ํ™”๋ฉด (Demonstration)

์ง์›์˜ ํŽ˜์ด์ง€ ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€
์‹ค์‹œ๊ฐ„ ํฌ์ธํŠธ๋ชฐ ์—…๋ฐ์ดํŠธ ๋ฏธ์…˜ ์ง„ํ–‰/์™„๋ฃŒ ๊ทผํƒœ ์‹ ์ฒญ
์•Œ๋ฆผ ์ฑ„ํŒ… ์š•์„ค ๋…น์Œ



๐Ÿ“‚ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ (Project Structure)


Backend

๐Ÿ“‚ Backend ์ƒ์„ธ ํด๋” ๊ตฌ์กฐ ๋ณด๊ธฐ (Click to expand)
โ”œโ”€โ”€ src/main/java/com/code808/calmdesk/
โ”‚   โ”œโ”€โ”€ domain/             # ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
โ”‚   โ”‚   โ”œโ”€โ”€ ai/             # AI ์„œ๋น„์Šค ํ†ตํ•ฉ
โ”‚   โ”‚   โ”œโ”€โ”€ attendance/     # ๊ทผํƒœ ๋ฐ ์—ฐ์ฐจ ๊ด€๋ฆฌ
โ”‚   โ”‚   โ”œโ”€โ”€ auth/           # ๋กœ๊ทธ์ธ ๋ฐ ๊ถŒํ•œ ์ธ์ฆ
โ”‚   โ”‚   โ”œโ”€โ”€ businesscard/   # ๋ช…ํ•จ ๊ด€๋ฆฌ
โ”‚   โ”‚   โ”œโ”€โ”€ callrecord/     # STT ๋ฐ ๊ฐ์ • ๋ถ„์„
โ”‚   โ”‚   โ”œโ”€โ”€ chat/           # ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ๋ชจ๋“ˆ
โ”‚   โ”‚   โ”œโ”€โ”€ company/        # ํšŒ์‚ฌ ๋ฐ ์กฐ์ง ๊ด€๋ฆฌ
โ”‚   โ”‚   โ”œโ”€โ”€ consultation/   # ์‹ฌ๋ฆฌ ์ƒ๋‹ด ์‹ ์ฒญ
โ”‚   โ”‚   โ”œโ”€โ”€ dashboard/      # ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”
โ”‚   โ”‚   โ”œโ”€โ”€ gifticon/       # ๋ณต์ง€ ํฌ์ธํŠธ ๋ชฐ
โ”‚   โ”‚   โ”œโ”€โ”€ member/         # ์‚ฌ์šฉ์ž ์ •๋ณด ๊ด€๋ฆฌ
โ”‚   โ”‚   โ”œโ”€โ”€ monitoring/     # ์‹ค์‹œ๊ฐ„ ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ง
โ”‚   โ”‚   โ”œโ”€โ”€ mypage/         # ๊ฐœ์ธ ์„ค์ •
โ”‚   โ”‚   โ”œโ”€โ”€ Notification/   # ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ
โ”‚   โ”‚   โ”œโ”€โ”€ team/           # ํŒ€ ๊ตฌ์„ฑ ๊ด€๋ฆฌ
โ”‚   โ”‚   โ””โ”€โ”€ vacation/       # ํœด๊ฐ€ ๊ฒฐ์žฌ ์‹œ์Šคํ…œ
โ”‚   โ””โ”€โ”€ global/             # ๊ณตํ†ต ์„ค์ • ๋ฐ ๋ณด์•ˆ
โ”‚       โ”œโ”€โ”€ config/         # App/Security ์„ค์ •
โ”‚       โ”œโ”€โ”€ dto/            # ๊ณตํ†ต DTO
โ”‚       โ”œโ”€โ”€ exception/      # ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
โ”‚       โ””โ”€โ”€ security/       # JWT ์„ค์ •
โ”œโ”€โ”€ src/main/resources/     # ํ™˜๊ฒฝ ์„ค์ • ๋ฐ SQL
โ”œโ”€โ”€ build.gradle            # ๋นŒ๋“œ ๋ฐ ์˜์กด์„ฑ ๊ด€๋ฆฌ
โ””โ”€โ”€ docs/                   # ์„ค๊ณ„ ๋ฐ ๊ฐ€์ด๋“œ ๋ฌธ์„œ

Frontend

๐Ÿ“‚ Frontend ์ƒ์„ธ ํด๋” ๊ตฌ์กฐ ๋ณด๊ธฐ (Click to expand)
   โ”œโ”€โ”€ src/
       โ”œโ”€โ”€ components/         # ์žฌ์‚ฌ์šฉ UI ์ปดํฌ๋„ŒํŠธ
       โ”œโ”€โ”€ pages/              # ๋ผ์šฐํŒ… ํŽ˜์ด์ง€ ๊ตฌ์„ฑ
       โ”œโ”€โ”€ store/              # Zustand ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ
       โ”œโ”€โ”€ api/                # API ํ†ต์‹  ์„ค์ •
       โ”œโ”€โ”€ assets/             # ์ด๋ฏธ์ง€ ๋ฐ ์Šคํƒ€์ผ ์ž์›
       โ”œโ”€โ”€ hooks/              # ์ปค์Šคํ…€ React ํ›…
       โ””โ”€โ”€ utils/              # ๊ณต์šฉ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜



๐Ÿš€ ์‹œ์ž‘ํ•˜๊ธฐ

Backend ์„ค์ •

  1. Java 17 ๋ฐ MySQL ์„ค์น˜ ํ™•์ธ
  2. Backend/src/main/resources/application-secret.yaml ์ž‘์„ฑ (API ํ‚ค ๋“ฑ ๋ฏผ๊ฐ ์ •๋ณด)
  3. ๋นŒ๋“œ ๋ฐ ์‹คํ–‰:
    cd Backend
    ./gradlew bootRun

Frontend ์„ค์ •

  1. Node.js ์„ค์น˜ ํ™•์ธ
  2. ์˜์กด์„ฑ ์„ค์น˜ ๋ฐ ์‹คํ–‰:
    cd Frontend
    npm install
    npm run dev



๐Ÿ† ์ตœ์ข… ํ”„๋กœ์ ํŠธ PPT ๐Ÿ†

๐Ÿ”ฅ CalmDesk ์ตœ์ข… ํ”„๋กœ์ ํŠธ ๋ณด๊ณ ์„œ ๐Ÿ”ฅ



๐Ÿค ํ”„๋กœ์ ํŠธ ํŒ€ ๊ตฌ์„ฑ ๋ฐ ์—ญํ•  ๋ถ„๋‹ด

์ด๋ฆ„ ํฌ์ง€์…˜ ๋‹ด๋‹น ์—ญํ•  GitHub / Contact
๐Ÿ‘‘ ๋ฐ•์ค€์–ธ ์กฐ์žฅ (Team Lead) ํ”„๋กœ์ ํŠธ ์ด๊ด„ ๋ฐ ์˜์‚ฌ ๊ฒฐ์ • GitHub: ๋ฐ•์ค€์–ธ
โš™๏ธ ๋ฐฑ์Šน์› ํ˜•์ƒ ๊ด€๋ฆฌ์ž (SCM) Git ๋ธŒ๋žœ์น˜ ์ „๋žต ๋ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฉ”์ผ: ๋ฐฑ์Šน์›
๐Ÿ—„๏ธ ๊น€์ •ํ›ˆ DB ๊ด€๋ฆฌ์ž ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ๋ฐ ์ดˆ๊ธฐ ๊ตฌ์ถ• GitHub: ๊น€์ •ํ›ˆ
๐Ÿ—“๏ธ ์žฅ์›์„ ์ผ์ • ๊ด€๋ฆฌ์ž Sprint ๋ฐ ๋งˆ์ผ์Šคํ†ค ๊ด€๋ฆฌ GitHub: ์žฅ์›์„
๐Ÿž ์กฐ์น˜ํ˜ธ ์ด์Šˆ ๊ด€๋ฆฌ์ž ์ด์Šˆ ํŠธ๋ž˜ํ‚น ๋ฐ ํ”ผ๋“œ๋ฐฑ ํ†ตํ•ฉ ๊ด€๋ฆฌ GitHub: ์กฐ์น˜ํ˜ธ

Popular repositories Loading

  1. Backend Backend Public

    Java 2

  2. Frontend Frontend Public

    JavaScript 2

  3. Docs Docs Public

  4. .github .github Public

Repositories

Showing 4 of 4 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loadingโ€ฆ

Most used topics

Loadingโ€ฆ