์ฌ์ค ์ด๊ฑธ ์ด ์นดํ ๊ณ ๋ฆฌ์์ ์ ์ผ ์ฒ์ ๋จผ์ ์จ์ผํ๋๊ฑฐ ์๋๊ฐ? ๋ผ๊ณ ๋งํ๋ค๋ฉด
์ฟ
์กฐ์ฉํ ํด๋ผ..

๊ฐ๋ฐ์๋ก์ ํ์ฌ๋ฅผ ๋ค๋์ง ๊ฒจ์ฐ 10๊ฐ์ ์ ๋ ์ง๋ฌ์ง๋ง ๊ทธ๋์ ๊ฐ์ฅ ํฌ๊ฒ ๋๋ ๊ฒ์
"๊ฐ๋ฐ๋ ์ค์ํ์ง๋ง ๊ธฐํ, ์ค๊ณ๋ ๋งค์ฐ๋งค์ฐ ์ค์!!!!!!"
๋ผ๋ ๊ฒ์ด๋ค.
์๊ธ์์๊ฒ ๊ธฐํ์๋ฅผ ๋ฐ์์ ๊ทธ๊ฑธ ๊ทธ๋๋ก ๊ฐ๋ฐํ๋ ์ ์ฅ์์ , ์๊ธ์์ ๊ธฐํ์์ฑ ๋ฅ๋ ฅ์ ๋ฐ๋ผ ๊ฐ๋ฐ ์ธ์์ด ํธํด์ง๊ฑฐ๋ ํฌ๊ฒ์ดํธ๊ฐ ์ด๋ฆฌ๊ฑฐ๋ ๋ ์ค ํ๋๋ฐ, ํ์ฌ์ ์๊ธ์๊ฐ ์ค ํ๋ฉด์ ์์๋
1. ํผ๊ทธ๋ง๋ก ๊ทธ๋ฆฐ ํ๋ฉด ๋ณด์ฌ์ค.
2. ๋!
์ด๋ค. ในใ ๋ก ์ด๊ฒ ๋ค๋ค. ํ๋ฉด์ ๋ณด์ด์ง ์๋ ๋ฐฑ์๋ ์ค๊ณ์๋ ์์ ์๋ค! ๋ด๊ฐ ๋ค ๊ณํํด์ ์์ฑํด์ผ ํ๋ค!!!!!! ์ด๊ฑธ ๋ด๊ฐ ์ธ๋ถ ์ฌ๋๋ค์๊ฒ ๋ณด์ฌ์ค ์ ์๋๊ฒ ํตํํ์ง ๊ทธ์ง์๋ค.
์งํผํฐ ์, ์ผ๋ฐ์ ์ธ ํ์ฌ์์ ํ๋ก ํธ์๋์ ๋ฐฑ์๋๊ฐ ๋ฐ๋ก ๋ ธ๋ ๊ฒ์ด ์๋ ํ๋์ ํ๋ฆ์ผ๋ก ์ด์ด์ง ๊ธฐํ•์ค๊ณ๋ฅผ ์ค๋ค๊ณ ํ๋๋ฐ, ์ฐ๋ฆฐ ๊ทธ๋ด๊ฑฐ ์๋ค.
์๋ง์ธ ํ๋ฉด์ ์์๋ฅผ ๋ฐ๊ณ ๊ฐ๋ฐ์ ํ๋๊ฒ๋ ์ฝ์ง ์์ง๋ง, ๋ ๋ค ๊ฐ๋ฐ์ ์์ํด์ ๊ฐ๋ฐ๋ง ํ๋๊ฒ๋ ์๊ฐ๋ณด๋ค ํ๋ ์ผ์ด์๋ค.
์ผ๋จ ๊ฐ๋ฐ์ ์ด๋ป๊ฒ ์งํํ ์ง ๊ณํ์๊ฐ ์์ผ๋, ๋ด๊ฐ "์ด ๋ถ๋ถ์ ~~~์ด๋ ๊ฒ ์งํํด์ผ์ง!"๋ผ๊ณ ๋ค์งํด๋ ๋ค์์ ๊ฐ๋ฐํ๋ฉด ๊น๋จน๊ฑฐ๋ ๋ด ๊ฐ๋ฐ ์๋๋ฅผ ์ดํดํ์ง ๋ชปํด์ ์์ด๋์ด๋ฅผ ๋ ๋ ค๋จน๋ ์ผ์ด ๋น์ผ๋น์ฌํ๋ค. ์ฑํ ์ด์ผ ์ค๋ฌด์์ websocket์ ํ ์์ ์ด๋ ์ฐ์ต ์ผ์ ๋ง๋ค์๋ค๊ณ ๋ณ๋ช ์ด๋ผ๋ ํ ์ ์๊ฒ ์ง๋ง, ๋๋จธ์ง ์์ญ(๋์๋ณด๋, ์ปค๋ฎค๋ํฐ ๋ฑ)์ ๋๋ ทํ ๊ณํ ์์ผ๋ ๊ทธ๋ฅ ๋ฌด๋ฐฉ๋น๋ก ๋ฐฉ์นํ๊ณ ์๋ค. ์ฒ์์ ๋๋ฆ์ ์์ด๋์ด๊ฐ ์์ด์ ํ๋ก์ ํธ๋ฅผ ๊ทธ๋ ๊ฒ ๊ตฌ์ฑํ์ง๋ง ์ด์ ์์ ๋ณด๋ ์๋ ๊ณํ๋ ๊ธฐ์ต์ด ๋์ง ์๋ ๋ถ์์ฌ๊ฐ ์ผ์ด๋ฌ๋ค....
๊ทธ๋ ๊ฒ ์ฌ๋ฌ๊ฐ์ง์ ์ฌ๊ฑด์ ํตํด ํ๋ก์ ํธ์ ๊ธฐํ + ์ค๊ณ์ ์ค์์ฑ์ ๊นจ๋ซ๊ฒ ๋์๋ค...
๊ธฐํ์ “๋ฌด์์ ๋ง๋ค๊น”๋ฅผ ์ ์ํ๋ ๊ณผ์ , ์ค๊ณ๋ “์ด๋ป๊ฒ ๋ง๋ค๊น”๋ฅผ ๊ตฌ์กฐํํ๋ ๊ณผ์ ์ด๋ผ๊ณ ํ๋ค.
ํ๋ก์ ํธ์ ๊ธฐํ ๋จ๊ณ๋ ๊ฐ์→๋ชฉํ →๋ฒ์ → ํ๊ฒ ์ฌ์ฉ์ → ํต์ฌ ๊ธฐ๋ฅ ์ ์ → ์๊ตฌ์ฌํญ → ์ํคํ ์ณ & ๊ธฐ์ ์คํ → ์ฑ๊ณผ ์งํ → ๋ฆฌ์คํฌ ๋ฐ ํ๊ณ ๋ฅผ ์์๋ก ์์ฑํ๋ฉด ๋๋ค๊ณ ํ๋ค.
๊ทธ๋ผ ๋จผ์ ํ๋ก์ ํธ ์ ์์ ์์์ ์์ฑํ๋ค.
๊ฐ์(Overview)
์ฃผ์ : ์น๊ตฌ • ์ง์ธ๊ณผ์ ์น๋ชฉ SNS ์์คํ
๊ธฐํ ์๋
ํ์ฌ์ ์์ ๋คํธ์ํน ์๋น์ค๋ ๊ท๋ชจ๊ฐ ํฌ๊ณ ๋ณต์กํด ๊ฐ์ธ์ ์์ ๋ชจ์์ด๋ ์น๋ฐํ ๊ด๊ณ๋ฅผ ๋ด์๋ด๊ธฐ ์ด๋ ต๋ค. ๊ฐ๊น์ด ์น๊ตฌ๋ค๊ณผ์ ์ํต์ ๋จ์ํ๊ณ ์ฌ๋ฏธ์๋ ๊ณต๊ฐ์ด ํ์ํ๋ฉฐ, ๋ฌธ์ ๊ฐ ๋ฐ์์ ๋น ๋ฅด๊ฒ ์กฐ์น๋ฅผ ์ทจํ๋ ๊ด๋ฆฌ์๊ฐ ํ์ํ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ํ์ฌ์ ํ๋ซํผ์ ๊ธฐ๋ฅ์ด ๊ณผ๋ํ๊ฒ ๋ณต์กํ์ฌ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ฅ์ด ์๋์ง ๋ชจ๋ฅธ์ฒด ์ง๋์น๊ฑฐ๋, ์ฌ์ฉ ๋ฐฉ๋ฒ์ด ๋ฒ๊ฑฐ๋ก์ ํฌ๊ธฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๋ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ์ ์ํ ๋์ํ๊ธฐ ์ด๋ ต๊ณ , ๊ด๋ฆฌ์ ์ผํฐ์์ ๋ณต์กํ ์ปจํ์ ๊ฑฐ์ณ์ผ ํ๋ค.
์ด๋ฌํ ๊ฒฝํ์ ํตํด ๋จ์ํ๊ณ ์น๊ทผํ๋ฉฐ, ๋ฌธ์ ๋ฐ์ ์ ์ฆ๊ฐ ๋์ํ ์ ์๋ SNS ์์คํ ์ ํ์์ฑ์ ๋๊ผ๋ค. ๋ณธ ํ๋ก์ ํธ๋ ์ด๋ฅผ ์คํํ๊ธฐ ์ํด React, Docker, ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์ ๊ฐ์ ๊ธฐ์ ํ์ต์ ๊ฒธํ์ฌ ๋์์ ๊ฐ๊น์ด ์น๊ตฌ ๋ฐ ์ง์ธ๋ค๊ณผ ๊ฐ๋ณ๊ฒ ํ์ฉํ ์ ์๋ ์์ ํ๋ซํผ์ ๊ตฌ์ถํ๋๋ฐ ๋ชฉ์ ์ ๋๋ค.
ํด๋ผ์ด์ธํธ ์๊ตฌ์ฌํญ ๋ถ์ -> ์ฌ์ฉ์ ์ ์
: ๊ฐ์์ ์ฌ์ฉ์ ํ๋ฅด์๋ 1~2๋ช ์ ๋ง๋ค์ด์ ์ค๋ช ํ๋ค.
ex) ์น๊ตฌ a๋ ์ฌ์ง ์์ฃผ์ ์ํต์ ํ๊ณ ์ถ์ดํ๋ค.
์น๊ตฌ b๋ ์ฑํ ๊ธฐ๋ฅ์ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
์ ์ค์ผ์ด์ค ์ค๊ณ๋ -> ์ ์ ์๋๋ฆฌ์ค(User Flow)
: ๋ค์ด์ด๊ทธ๋จ ์ธ์๋ ํ ์คํธ๋ก "์ฌ์ฉ์๊ฐ ์ด๋ค ๊ฒฝ๋ก๋ก ์ด๋ค ๊ฒฝํ์ ํ๋์ง" ์์ .
ex) ์ฌ์ฉ์๋ ๋ก๊ทธ์ธ ํ ๋์๋ณด๋์์ ๊ธ์ ์ฐ๊ณ , ์๋ฆผ์ ํตํด ๋๊ธ ๋ฐ์์ ํ์ธํ๋ค.
์ฌ์ฉ ๊ฐ๋ฅ ์ฌ์ดํธ : https://app.diagrams.net/?src=about
์ฌ์ดํธ๋งต
ํ์ฌ ์๊ฐํ๊ณ ์๋ ๊ธฐ๋ฅ๋ค
[๋์๋ณด๋] : ์์ ฏ(ํ์จ, ๊ฐ์ ์ผ๊ธฐ ๊ธฐ๋ก) ๋ฑ
[๊ธฐ๋กํ๊ธฐ] : ๊ฐ์ ์ผ๊ธฐ, ๋ฏธ๋๊ฒ์ ๋ฑ
[์ํตํ๊ธฐ] : ์ค๋์ ํ๋ง๋(๋๋ค ์ฃผ์ ๋์ง๊ธฐ), ๊ฐ์ ์ผ๊ธฐ๊ณต์ , ํ์์บก์๊ฒ์ํ
[์ฑํ ] : ์ฑํ
[์ถ์ตํ๊ธฐ]: ํ์์บก์, ํ์๋ผ์ธ ํ๊ณ (์ค๋๋ก๋ถํฐ 1๋ ์ or ํ๋ฌ ์ ๊ฒ์๊ธ ๋ณด์ฌ์ฃผ๊ธฐ), ์ข์์ ์์นด์ด๋ธ
์ฌ์ดํธ๋งต์ Canva ๋ฑ์ผ๋ก ๊ทธ๋ฆด
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ๋ + API ์ค๊ณ ์ด์
: DB ์์ ๊ฐ๋จํ API ์๋ํฌ์ธํธ ์์๋ฅผ ์ ์ด๋๋ค. ํน์ Swagger ์ด์ฉ.
๊ฐ๋ฐ ํ๊ฒฝ
: ex) React : ์ปดํฌ๋ํธ ๋จ์๋ก ํ๋ฉฐ์ ๊ด๋ฆฌํ๊ธฐ ์ํด์, ๋ํ React ๊ณต๋ถ๋ฅผ ์ํด ์ ํ
: PostegreSQL : ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ด๋ฆฌ์ ์ ๋ฆฌ, ๋ฌด๋ฃ์ฌ์ ๋ถ๋ด ์์ด ์ฌ์ฉ
๋์์ธ(Figma)
ํผ๊ทธ๋ง๋ก ๊ทธ๋ ค์ ์ฌ๋ฆด ๊ฒ
์ฑ๊ณผ์งํ, ๋ฆฌ์คํฌ ๋ฐ ํ๊ณ
: ex) ์ฑ๊ณผ : ์น๊ตฌ(์ฌ์ฉ์) 3๋ช ์ด์์ด ์ค์ ๋ก ๊ธ์ ์ฐ๊ณ ๋๊ธ์ ๋ฌ๋ฉฐ ์ฑํ ์ ํ๋ค. ๊ธฐ์กด SNS๋ณด๋ค ๊ธฐ๋ฅ์ด ๋ง์ด
๊ธฐ๋ฅ ๊ตฌ์ฒดํ
์ถํ ํด๋ผ์ด์ธํธ ์๊ตฌ์ฌํญ ๋ถ์์ ์ถ๊ฐํ ๊ฒ.
๋์๋ณด๋ Dashboard
1. ์์ ฏ
ํ์จ: ์ฌํ๊ฐ๊ณ ์ถ์ ๋๋ผ ํ์จ(ex. ์ผ๋ณธ, ๋๋ง, ํ์ฝฉ etc)
๊ฐ์ ์ผ๊ธฐ ๊ธฐ๋ก : '์ค๋์ ๊ฐ์ ์ ์จ๋ด~'๊ฐ์๊ฑฐ
๊ธฐ๋กํ๊ธฐ Journalํญ
1. ๊ฐ์ ์ผ๊ธฐ (๊ธฐ๋กํญ)
์ค๋ ํ๋ฃจ๋ฅผ ํํํด์ ์น๊ตฌ๋ค ๊ฐ์ ๋งต์ ๋ง๋ค๊ธฐ
(1) ์ค๋ ํ๋ฃจ ๊ฐ์ ์ ์ฌ๋ผ์ด๋๋ก ์ ํ
์ฌ๋ผ์ด๋ ์์ง์ผ ๋ ๋ฐ๋ก ์/๋ ์จ/์จ๋ ๋ฐ๋๋ ์ ๋๋ฉ์ด์
(์ฌ๋ผ์ด๋: ์ฆ๊ฑฐ์(Valence) / ์๋์ง(Arousal) <- input value range๋ก)
์ค์ผ์ผ
valence(์ฆ๊ฑฐ์): -1 ~ +1
arousal(์๋์ง): 0 ~ 1
์(HSL)
Hue: ํ๋(220°)↔์ด๋ก(140°)↔๋
ธ๋(60°)์ผ๋ก ๊ฐ์๋ก ์ฆ๊ฑฐ์ ์ฆ๊ฐ
hue = 220 - 160 * ((valence + 1) / 2)
Saturation: ์๋์ง ๋์์๋ก ์ฑ๋↑
sat = 35 + 45 * arousal
Lightness: ์ค๊ฐ 60% ๊ณ ์ (ํ
๋ง์ ๋ง์ถฐ ์กฐ์ )
๋ ์จ ์์ด์ฝ
(valence≥0.4 & arousal≥0.6) → โ๏ธ๋ง์/๋ฒ์ฉ
(valence≥0.2 & arousal<0.4) → ๐ค๏ธ๊ตฌ๋ฆ ์กฐ๊ธ
(valence<-0.3 & arousal≥0.6) → โ๏ธ๋ฒ๊ฐ(๋ถ์/๋ถ๋
ธ)
(valence<-0.3 & arousal<0.4) → ๐ง๏ธ๋น(์ฐ์ธ)
(|valence|<0.2 & arousal<0.3) → ๐ซ๏ธ์๊ฐ(๋ฉ/ํผ๊ณค)
๊ธฐ๋ณธ → โ๏ธํ๋ฆผ
์ฒด๊ฐ ์จ๋(0~100) : temp = clamp( 50 + 35*valence + 15*(arousal - 0.5), 0, 100 )
์) ์ฆ๊ฑฐ์↑์ด๋ฉด ๋ฐ๋ป, ์ฐ์ธ/์ ์๋์ง๋ฉด ์๋.
(2) ๊ฐ์ ์คํฐ์ปค ์ ํ
์นดํ
๊ณ ๋ฆฌ: ์๋ก(๐ค), ์์(๐ช), ํด์(โ), ์ง์ค(โก), ์ถํ(๐), ์์(๐), ๋น๋ฐ(๐)
์คํฐ์ปค๋ 1๊ฐ ์ด์ ์ ํ ๊ฐ๋ฅํ๊ฒ ๋ณ๊ฒฝ (์ต๋ 3๊ฐ ์ ๋ ์ถ์ฒ)
(3) ๋ฏธ๋ ์ผ๊ธฐ(์ต๋ 1000์) ์์ฑ ํ ์ ์ฅ
(4) ๋ฌ๋ ฅ์ผ๋ก ๋ด๊ฐ ์ ํํ ์ด๋ชจ์ง๋ฅผ ์ ์ฒด ์กฐํํด์ ๋ณผ ์ ์์.
๋ฌ๋ ฅ์ ๊ฐ์ ๋ํ ์ปฌ๋ฌ & ์ ํํ ์คํฐ์ปค ์์ด์ฝ ํ์
๊ฐ ๋ ์ง ํด๋ฆญ ์ ๊ฐ์ ์ผ๊ธฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ์
(5) ๊ณต์ ๋ฒ์ ์ ํ : ์ ์ฒด, ๋๋ง๋ณด๊ธฐ
์ฌ์ฉ ๊ธฐ์
์ฌ๋ผ์ด๋ ๊ธฐ๋ฐ ์ค์๊ฐ ๋ณํ ์ ๋๋ฉ์ด์ : react-spring
๊ฐ์ ์คํฐ์ปค ์ ํ ๊ด๋ จ ๋ก์ง : React ์ํ๊ด๋ฆฌ(useState, useReducer, Context API), ์ค์๊ฐ ๋ฐ์ํ ๋ก์ง ๊ตฌํ
๋ฌ๋ ฅ ๊ฐ์ ์กฐํ: FullCalendar React์ด์ฉ, ์๋ฒ์์ ๋ฌ๋ ฅ์ฉ ๋ฐ์ดํฐ ํํฐ๋ง(๋ ์ง๋ณ, ๊ณต์ ๋ฒ์๋ณ)
๊ณต์ ๋ฒ์ ์ค์ : JWT, Role ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด ๊ตฌํ. ํด๋ผ์ด์ธํธ์์ ๊ถํ ํํฐ๋ง, ์๋ฒ์์ ๋ฐ์ดํฐ ๊ถํ ๊ฒ์ฆ
2. ๋ฏธ๋๊ฒ์
(1) 8Ball API : Question์ ๋ณด๋ด๋ฉด ๋๋คํ ๋ต๋ณ์ด ๋์จ๋ค(๊ฐ์คํธ ์ฑ
๋ ๋๋)
(2) ๋ก๋ ๋ฒํธ ์ถ์ฒ
(3) ๋๋ค ๋ฝ๊ธฐ๋ฅ(์ฌ๋ค๋ฆฌ ํ๊ธฐ, ์ ๋น ๋ฝ๊ธฐ, ๋ฃฐ๋ ๋๋ฆฌ๊ธฐ)
์ฌ์ฉ ๊ธฐ์
api ๊ธฐ๋ฐ ๊ฒ์: axios + useEffet, useQuery(React Query)๋ก APIํธ์ถ. ๋น๋๊ธฐ ์ฒ๋ฆฌ + api ํต์
๋๋ค ๋ฝ๊ธฐ, ๋ฃฐ๋ : Canvasl ํน์ SVG + react spring ์ ๋๋ฉ์ด์ ๋ฐ ์ํ์ ๋ก์ง์ผ๋ก ๋๋คํ ๊ตฌํ
3. ๋์ ๊ฒ์๊ธ
(1) ์นดํ ๊ณ ๋ฆฌ > ๊ฒ์๊ธ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์ ์์ฑ
(2) ๋๋๊ทธ & ๋๋กญ์ผ๋ก ํธ๋ฆฌ ๊ตฌ์กฐ ๋ณ๊ฒฝ
์ฌ์ฉ ๊ธฐ์
CRUD๊ตฌ์กฐ : React Query, axios๋ก ์๋ฒ ํต์ , ์บ์ ๊ด๋ฆฌ, ํ์คํ CRUD
์นดํ
๊ณ ๋ฆฌ ๊ตฌํ : ํ์
์์ ์ฑ๊ณผ ์ฌ๊ท์ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค๊ณ, ํธ๋ฆฌ๋ณํ, react-beautiful-dnd
์ํตํ๊ธฐ community ํญ
1. ๋๋ค ์ฃผ์ ๋์ง๊ธฐ - "์ค๋์ ํ๋ง๋"
์ค๋์ ํ์ด๋ผ์ดํธ๋? ๋ด ์ฑ
์ ์ฌ์ง ๋ณด์ฌ์ฃผ๊ธฐ, ์ด์ ์๊ธด ์ผ ๋ฑ์ ์ฃผ์ ๋ฅผ ๊ฐ์ ธ์์ ์งง์ ๋๊ธ ์์ฑํ๊ธฐ. ๊ธธ๊ณ ๋ถ๋ด์ค๋ฌ์ด ๊ธ ๋์ ์งง๊ณ ์ํธ ์๋ ๋ฐ์์ ์์ฃผ๋ก ์ฐธ์ฌ ์ ๋.
(1) ์์ ์ ์๋ก์ด ์ฃผ์ ๊ฐ ์ด๋ฆผ, ๊ฐ์ ๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๋์ผํ ์ฃผ์ ๋
ธ์ถ
(2) ๋๊ธ์ ์ต๋ 100์, ๋ฏธ๋์ด ์
๋ก๋ x, ์์ฑ ํ ์์ ๋ถ๊ฐ
(3) ํผ๋ ์ ๋ ฌ : ์น๊ตฌ๋ค์ ๋ต๋ณ์ด ๋๋ค์ผ๋ก ์ ๋ ฌ๋์ด ํ์๋จ
์ฌ์ฉ ๊ธฐ์
๋๋ค ์ฃผ์ ๋์ง๊ธฐ : ๋งค์ผ 00:00์ ์๋ก์ด ์ฃผ์ ์์ฑ&DB์ ์ฅ : Node.js์node-cron, springboot์ @Scheduled ์ด์ฉ
2. ๊ฐ์ ์ผ๊ธฐ(์ํต ํญ)
(1) ์ค๋์ ๊ฐ์ ๋ค์ด ์์ฐจํธ(๊ฐ์ ์คํฐ์ปค ๊ธฐ์ค)๋ก ์ค์๊ฐ ์ง๊ณ, ๊ณต๊ฐ/์์ ์คํฐ์ปค๋ก ์ํธ์์ฉ, ์ฃผ๊ฐ ๋ฌด๋ ๋ฆฌ์์ธ๋
(2) “์ค๋์ ๊ฐ์ ์๋ฅ์ด” ์๋ ๋งค์นญ(๊ฐ์ ์ ํ(Valence/Arousal ๊ทผ์ ๋)๋ก ๊ณ์ฐ.)
(3) ๋ด ์น๊ตฌ๋ค์ด ์์ฑํ ๊ฐ์ ์ผ๊ธฐ ๋ณด๊ธฐ, ๋๊ธ + ์ด๋ชจํฐ์ฝ. ์น๊ตฌ๋ค์ ์ต๋ช
์ผ๋ก ๋ณด์
(4) ๊ฐ์ ๋ฐ์ดํฐ ์ํธํ ์ ์ฅ(ํนํ ์ผ๊ธฐ ํ
์คํธ)
์ฌ์ฉ ๊ธฐ์
๊ฐ์ ์๋ฅ์ด ๋งค์นญ: ์๋ฒ์์ Valence/Arousal ๊ธฐ๋ฐ ์ ์ฌ๋ ๊ณ์ฐ(์๊ณ ๋ฆฌ์ฆ)์ ํตํ ์ถ์ฒ ์๊ณ ๋ฆผ์ฆ ๊ตฌํ, ๋ฐ์ดํฐ ๋ถ์์ ์ ๊ทผ
3. ์ต๋ช
์ง๋ฌธํจ(+๋น๋ฐํธ์ง)
(1) ์น๊ตฌํํ
์ต๋ช
์ผ๋ก ์ง๋ฌธ์ ํจ
(2) ์น๊ตฌ๋ก๋ถํฐ ์จ ๋ต๋ณ์ ์์ ฏ์ผ๋ก ๋ณผ ์ ์์
(3) ๋์๊ฒ ์จ ์ต๋ช
์ง๋ฌธ : ์์ ฏ ํด๋ฆญ์ ๋ณด๊ณ ๋ต๋ณ ๊ฐ๋ฅ
์ฌ์ฉ ๊ธฐ์
์ต๋ช ์ง๋ฌธ: ๋ณด์/๊ฐ์ธ์ ๋ณด ๋ณดํธ ์ฒ๋ฆฌ
4. ์น๊ตฌ์์ ์ฑ๋ฆฐ์ง
(1) ์ฑ๋ฆฐ์ง ์์ฑํ๊ธฐ : ์์์ผ, ์ข
๋ฃ์ผ ์ง์ , ์ฃผ์ ์ ์ ํ๊ธฐ(ex. ์ด๋, ๊ณต๋ถ, ๋
์,,,)
(2) ์งํ ํํฉ : (์ฑ๋ฆฐ์ง๊ฐ ์๋ ๊ฒฝ์ฐ) ๋์๋ณด๋์ ์์ ฏ์ผ๋ก ์งํ๋ฅ ํ์, chart๋ก ์กฐํ, ๋งค์ผ ์๋ ์ฒดํฌ์ธ ์๋ฆผ(ํธ์/์ฑ ๋ด ์๋ฆผ ๋ฑ)
(3) ๊ธฐ๋ก ๋ฐฉ์, ์ํธ์์ฉ: ๋ฌ์ฑ ์ฌ๋ถ์ ๋ํด ์ฒดํฌ๋ฐ์ค, ์์ฑํ ์ฑ๋ฆฐ์ง์ ๋๊ธ, ์์ ์ด๋ชจํฐ์ฝ, ๊ฒฉ๋ ค ๋ฉ์์ง ๋ฑ ๊ฐ๋ฅ. ์ฑ๋ฆฐ์ง ์ข
๋ฃ ์ ์ฑ๋ฆฐ์ง ๋ฆฌํฌํธ๋ฅผ ์๋ ์์ฑ(๋ฌ์ฑ๋ฅ ํต๊ณ)
(4) ๋ด๊ธฐ : ์ด๊ธธ ๋ ๋ณด์, ์ง ๋์ ๋ฒ์น์ ์ค์ (์ ํ)
์ฌ์ฉ ๊ธฐ์
์น๊ตฌ์์ ์ฑ๋ฆฐ์ง : Zustand, Redux๋ฑ์ผ๋ก ์ฑ๋ฆฐ์ง๋ณ ์งํ์ํ ๊ด๋ฆฌ, Chart.js๋ฑ์ผ๋ก ํต๊ณ ์๊ฐํ
์ฑํ ํ๊ธฐ Chatํญ
1. ์ค์๊ฐ ์ฑํ
์ฌ์ฉ๊ธฐ์
์ค์๊ฐ ์ฑํ : WebSocket, ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
์ถ์ตํ๊ธฐ Memories ํญ
1. ํ์์บก์ ๊ฒ์ํ
๋ฏธ๋์ ๋์ ์น๊ตฌ์๊ฒ ๋ณด๋ด๋ ๋ฉ์์ง, ์ง๊ธ์ ๋ณผ ์ ์์ง๋ง ์ฝ์๋ ๋ ์ ์๋์ผ๋ก ๊ณต๊ฐ. ๊ณต๊ฐ ์๊ฐ ์น๊ตฌ๋ค๊ณผ ์ค์๊ฐ ๋ฐ์ ๋๋๊ธฐ ๊ฐ๋ฅ
(1) ์์ฑํ๊ธฐ : ์ฌ์ง, ๊ธ, ์์, ์์ฑ ๋ชจ๋ ๊ฐ๋ฅ
(2) ๊ฐ๋ด ๋ ์ง ์ง์ : ๋ฌ๋ ฅ์์ ๋ ์ง ์ ํ, ์ ํ ์ ๋๋ค์ผ๋ก ๊ฐ๋ด, ๊ฐ๋ด ์นด์ดํธ๋ค์ด(๋๋ค ๊ฐ๋ด์ ์นด์ดํธ๋ค์ด x)
(3) ์ ๊ธ ์ํ ํ์ : ์์ฑ์๋ ๋ฏธ๋ฆฌ ๋ชป๋ด
(4) ๊ณต๊ฐ ๋ฒ์ ์ ํ: ๋๋ง ๋ณด๊ธฐ / ํน์ ์น๊ตฌ ๋ณด๊ธฐ / ์ ์ฒด ์น๊ตฌ ๋ณด๊ธฐ
(5) ๊ฐ๋ด ์๋ฆผ : ๊ฐ๋ด ํ๋ฃจ ์ , ๊ฐ๋ด ๋น์ผ์ ํธ์๋ ์๋ฆผ์ผ๋ก ์๋ ค์ค
(6) ๊ฐ๋ด ํ ๋ฐ์ : ๋๊ธ, ์ด๋ชจ์ง ๋ฑ
ํ์ฉ ์์ : ๊ธฐ๋
์ผ ์บก์, ์ฌํ๊ฐ๋๋ (์ฌํ ๊ณํ ๊ธ ๋ฑ), ๊น์ง ์ ๋ฌผ
์ฌ์ฉ ๊ธฐ์
ํ์์บก์ ์์ฝ, ์๋ ๊ฐ๋ด : ์๋ฒ ์ค์ผ์ค๋ง(CronJob ๋๋ ํ) - ๋ฐฑ์๋ ์ค์ผ์ค๋ง, ๋น๋๊ธฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ
๊ฐ๋ด ์๋ฆผ: Push Notification, ์๋ฒ-ํด๋ผ์ด์ธํธ ๋ฑ์ ์์ฝ ์ด๋ฒคํธ ์ฒ๋ฆฌ
2. ์์นด์ด๋ธ
“๋ด๊ฐ ๋๋ฅธ ์ข์์”์ “๋ด๊ฐ ๋ฐ์ ์ข์์”๋ฅผ ํ์ธํ๋ ๋ฉ๋ด. ๋์ ๊ฒ์๊ธ ์ทจํฅ ๋ฑ์ ์ ์ ์์
(1) ์ข์์ ๊ธฐ๋ก ํ์ธ : “๋ด๊ฐ ๋๋ฅธ ์ข์์”๋ฅผ ์ฐ๋/์/์ฃผ ๋จ์๋ก ์กฐํ,
(2) ๋ถ๋งํฌ: ์ข์์ ์ธ ๋ถ๋งํฌ ํ์, ๋์ค์ ๋น ๋ฅด๊ฒ ์กฐํ ๊ฐ๋ฅ
(3) ์ข์์ ๊ธฐ๋ฐ ์ถ์ฒ: ๋ด๊ฐ ‘์ข์์’ํ ๊ฒ์๋ฌผ ์ ํ ๋ถ์(chart์ด์ฉ), ๋น์ทํ ๊ฒ์๋ฌผ ์ถ์ฒ.
์ฌ์ฉ ๊ธฐ์
์์นด์ด๋ธ ‘์ข์์’ํ์ธ : ๋ฐ์ดํฐ ์ง๊ณ, api ์ต์ ํ
์์นด์ด๋ธ ‘๋ถ๋งํฌ’ํ์ธ: ์ฌ์ฉ์ ๋ง์ถค ๊ธฐ๋ฅ, CRUD ์ฒ๋ฆฌ
์ข์์ ๊ธฐ๋ฐ์ ๋๋ค ๊ฒ์๊ธ ์ถ์ฒ : ์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ, ๋ฐ์ดํฐ ๋ถ์
'ToyProjects๐งธ > Dalmuriโญ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Dalmuri] Supabase๋ก ๋๋ค ์ฃผ์ open API ๋ง๋ค๊ธฐ (0) | 2025.11.25 |
|---|---|
| [Dalmuri] Java๋ก Google Cloud Nature Language API ํธ์ถํด์ ๊ฐ์ ๋ค์ด์ด๋ฆฌ ๋ง๋ค๊ธฐ (0) | 2025.10.16 |