Skip to content

milesand/capstone-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

Capstone-project

์‹คํ–‰๋ฐฉ๋ฒ•

  1. manage.py๊ฐ€ ์œ„์น˜ํ•œ ํด๋”(./app)์— googleAccount.txt ์ถ”๊ฐ€ (์นดํ†ก๋ฐฉ์— ์˜ฌ๋ ค๋“œ๋ฆด๊ฒŒ์š”)
  2. docker-compose.yml์ด ์œ„์น˜ํ•œ ํด๋”(.)์—์„œ:
  • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด๋ผ๋ฉด ./udco up
  • ๋ฐฐํฌ ํ™˜๊ฒฝ์ด๋ผ๋ฉด ./udco -f docker-compose.yml -f docker-compose.prod.yml up
  1. ์•„๋ž˜์— ์ ํ˜€์žˆ๋Š” URL ์‚ฌ์šฉ๋ฐฉ๋ฒ•๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

6/24 ์ˆ˜์ •์‚ฌํ•ญ

์˜ค๋Š˜ ์ž‘์—…ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ๋“œ๋ž˜๊ทธ๋ฐ•์Šค๊ฐ€ ์•ˆ๋ณด์ด๋˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
2. ์‚ฌ์ด๋“œ๋ฐ” ์ถ•์†Œ์‹œ ๋กœ๊ณ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋Š” ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

6/20 ์ˆ˜์ •์‚ฌํ•ญ

์˜ค๋Š˜ ์ž‘์—…ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ํ”„๋กœํ•„์„ ํ™•์ธํ•  ์ˆ˜ ์—†์—ˆ๋˜ ์˜ค๋ฅ˜ ์ˆ˜์ • - ๋ฆฌ์•กํŠธ ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•˜๋‹ค๊ฐ€ ์ƒ๊ธด ์˜ค๋ฅ˜์˜€์Šต๋‹ˆ๋‹ค.
2. fetch ๊ตฌ๋ฌธ์„ axios ๊ตฌ๋ฌธ์œผ๋กœ ๋ณ€๊ฒฝ - ์ฝ”๋“œ์˜ ํ†ต์ผ์„ฑ๊ณผ ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ๋ช‡๋ช‡ fetch ๊ตฌ๋ฌธ์„ axios ๊ตฌ๋ฌธ์œผ๋กœ ๋ฐ”๊ฟจ์Šต๋‹ˆ๋‹ค.

6/17 ์ˆ˜์ •์‚ฌํ•ญ

์˜ค๋Š˜ ์ž‘์—…ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ํ”„๋กœํ•„ ์ปจํ…ํŠธ ์Šคํฌ๋กค์ž‘๋™
2. ํšŒ์›๊ฐ€์ž…์ฐฝ ์Šคํฌ๋กค ๋ฐฐ๊ฒฝ์ƒ‰ ๋ณ€๊ฒฝ
3. ์ปจํ…ํŠธ ์ œ๋ชฉ ์‚ฌ์ด์ฆˆ ์ˆ˜์ •
4. ํŒ€์ปจํ…์ธ  input ์˜ค๋ฅ˜์ˆ˜์ •
5. ์—…๋กœ๋“œ ์ด๋™ ๊ฒฝ๋กœ์„ค์ • modal ๋ฒ„ํŠผ๋“ค ๋‹ค๋ฅธ modal๊ณผ ๊ฐ™๊ฒŒ ํ†ต์ผ
6. ํ”„๋กœํ•„ ์ปจํ…ํŠธ input ํ†ต์ผ
7. ๋ชจ๋‹ฌ ์šฐ์ธก ์ƒ๋‹จ xํ‘œ์‹œ ์‚ญ์ œ
8. ๊ฒ€์ƒ‰์ฐฝ ์‚ฌ์ด์ฆˆ,์œ„์น˜ ์กฐ์ •
9. ํŒŒ์ผ.ํด๋” ์ด๋ฆ„๋ณ€๊ฒฝ์‹œ input ์ˆ˜์ •
10. ์ดˆ๋Œ€ ํด๋ฆญ์‹œ x์ถ• ์Šคํฌ๋กค ์—†์• ๊ธฐ
11. ๊ธธ์ด๊ฐ€ ๋„ˆ๋ฌด ๊ธด modal๋“ค ๊ธธ์ด ์กฐ์ •

ํ•ด์•ผํ•  ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ๋“œ๋ž˜๊ทธ ๋ฐ•์Šค ๋ณด์ด๊ธฐ(css๋กœ ๋ณด์ด๊ฒŒ ํ•˜๋ คํ–ˆ์œผ๋‚˜ ์ž‘๋™์•ˆํ•จ)
2. ์ดˆ๋Œ€ ์žˆ์œผ๋ฉด ์•Œ์ˆ˜์žˆ๋„๋ก ์ฒ˜๋ฆฌ(ex)  ์ดˆ๋Œ€์•„์ด์ฝ˜ ๋ณ€๊ฒฝ, ์ดˆ๋Œ€๋ฉ”์‹œ์ง€ ์—ด๋ ค์ € ์žˆ๋Š” ์ƒํƒœ๋กœ ์‹œ์ž‘)

6/14 ์ˆ˜์ •์‚ฌํ•ญ

์˜ค๋Š˜ ์ž‘์—…ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. React ํŒ€ ๊ด€๋ จ ์ฝ”๋“œ๋“ค์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
2. ํŒ€ ๊ธฐ๋Šฅ๊ณผ ๊ด€๋ จํ•œ ๊ธฐ๋Šฅ๋“ค์˜ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

6/12 ์ˆ˜์ •์‚ฌํ•ญ

์˜ค๋Š˜ ์ž‘์—…ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ๊ณต์œ ์„ค์ •ํ•œ ํด๋”๋ฅผ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์ฆ๊ฒจ์ฐพ๊ธฐ ์„ค์ • ํ–ˆ์„ ๋•Œ, ์›๋ž˜ ์†Œ์œ ์ž์˜ ํŒŒ์ผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฆ๊ฒจ์ฐพ๊ธฐ ํ‘œ์‹œ๋˜๋˜ ํ˜„์ƒ์„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
2. ๋ฆฌ์•กํŠธ ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

   1. Main ํด๋”์˜ content๋“ค์„ Contents ํด๋”์— ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•˜๋„๋ก ๋ณ€๊ฒฝ.
   2. MainFileBrowser.js์— ์žˆ๋˜ modal๋“ค ์ „๋ถ€ modal ํด๋”์— ์ •๋ฆฌํ•จ.

3. ํœด์ง€ํ†ต์— ์žˆ๋Š” ํŒŒ์ผ ์ธ๋„ค์ผ ์•ˆ๋ณด์ด๋Š” ๋ฌธ์ œ -> perm_check_entry_with_teams์—์„œ ํœด์ง€ํ†ต ์•ˆ์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์— ๋Œ€ํ•ด false๋ฅผ ๋ฆฌํ„ดํ•ด์„œ ๋ฐœ์ƒ.
                                       -> perm_check_entry_with_teams์— is_thumbnail_check=False ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ค์ •ํ•˜๊ณ ,
                                          thumbnailAPI์—์„œ perm_check_entry_with_teams๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ True ์ฒดํฌํ•˜๊ฒŒ ํ•˜์—ฌ
                                          ์ธ๋„ค์ผ ์ •๋ณด๋ฅผ ์–ป์„ ๋•Œ๋Š” ํœด์ง€ํ†ต์— ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋”ฐ์ง€์ง€ ์•Š๋„๋ก ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

4. ์ธํ„ฐ๋„ท ํƒญ์— ํ‘œ์‹œ๋˜๋Š” favicon์„ ๋ญ‰๊ฒŒ๋“œ๋ผ์ด๋ธŒ ์•„์ด์ฝ˜์œผ๋กœ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

6/9 ์ˆ˜์ •์‚ฌํ•ญ

์˜ค๋Š˜ ์ž‘์—…ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ํŒ€๋ณ„ ๊ณต์œ ํด๋” ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๋Š” ํ™”๋ฉด์—์„œ, ๊ณต์œ ํด๋”์˜ ์†Œ์œ ์ž ์ด๋ฆ„์„ ๋ณด์—ฌ์ฃผ๋„๋ก ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
2. ์—…๋กœ๋“œ ์ฐฝ์—์„œ ์—…๋กœ๋“œ ์†๋„ ๋ฐ ๋‚จ์€ ์‹œ๊ฐ„, ์ง„ํ–‰๋„๋ฅผ ๋ณด์—ฌ์ฃผ๋„๋ก ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
3. ํœด์ง€ํ†ต์„ ๋น„์šฐ๋Š” ์ž‘์—…์—์„œ RecycleEntry๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์—ฐ๊ฒฐ๋œ DirectoryEntry๊ฐ€ ๊ฐ™์ด ์‚ญ์ œ๋˜์ง€ ์•Š๋Š” ํ˜„์ƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. post_delete ์‹œ๊ทธ๋„์„ ํ†ตํ•ด
   ์ œ๊ฑฐํ•ด์ฃผ๋ ค ํ•˜์˜€์œผ๋‚˜ recover์—์„œ RecycleEntry๋ฅผ ์ง€์šฐ๋Š” ๊ณผ์ •์—์„œ ์›๋ณธ ํŒŒ์ผ๋„ ๊ฐ™์ด ์‚ฌ๋ผ์ง€๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์—ฌ ํœด์ง€ํ†ต ๋น„์šฐ๋Š” ์ž‘์—…์—์„œ ์ง์ ‘ 
   ์ˆ˜๋™์œผ๋กœ ์—ฐ๊ฒฐ๋œ directoryEntry ๋ชจ๋ธ ์‚ญ์ œํ•ด์ฃผ๋„๋ก ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
4. ์†Œ์…œ๋กœ๊ทธ์ธ์„ ์‹œ๋„ํ•  ๋•Œ ์ด๋ฏธ ํ•ด๋‹น ์ด๋ฉ”์ผ๋กœ ๊ฐ€์ž…ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ, ๋กœ๊ทธ์ธ ๋ชปํ•˜๋„๋ก ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ถ”ํ›„์— ์—ฐ๋™ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ  ๋™์˜ํ–ˆ์„ ๊ฒฝ์šฐ ๋‘ ์•„์ด๋””๋ฅผ ์—ฐ๋™ํ•˜๋„๋ก ๋ฐ”๊ฟ€ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๋งŒ๋“ค์–ด์ง„ ๋กœ๊ณ ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ์ž‘์—…์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

6/8 ์ˆ˜์ •์‚ฌํ•ญ

์˜ค๋Š˜ ์ž‘์—…ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ด๋ฏธ์ง€๊ฐ€ modal ๋ฐ–์œผ๋กœ ํŠ€์–ด๋‚˜๊ฐ€๋˜ ํ˜„์ƒ์„ ์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
2. ๋ฉ”์ผ ์ธ์ฆ ํ™•์ธ ํŽ˜์ด์ง€๊ฐ€ ์ •๋ ฌ๋˜์–ด์žˆ์ง€ ์•Š์€ ํ˜„์ƒ์„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
3. ๋ชจ๋“  ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” fetch ํ˜น์€ axios ๋ฌธ์—์„œ ์—๋Ÿฌ ๋ฐœ์ƒ์‹œ ๋กœ๋”ฉ ์ƒํƒœ๊ฐ€ ํ•ด์ œ๋˜๋„๋ก ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
4. ๊ณต์œ ํด๋”์— ์žˆ๋Š” ํŒŒ์ผ๋“ค ์ค‘ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์ €์žฅํ•œ ํŒŒ์ผ์„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์—†๋Š” ํ˜„์ƒ์„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
5. ํŽ˜์ด์Šค๋ถ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ํ•˜์–€์ƒ‰์œผ๋กœ ๋ณ€ํ•˜๋Š” ํ˜„์ƒ์„ ์ˆ˜์ •๋žฌ์Šต๋‹ˆ๋‹ค.
6. ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ ํŽ˜์ด์ง€์—์„œ ์—”ํ„ฐ๋ฅผ ๋ˆŒ๋ €์„ ๋–„ ๋น„์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋˜ ํ˜„์ƒ์„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
7. ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์˜ค๋ฅธ์ชฝ ํด๋ฆญํ•œ ๋’ค, ์ด๋™ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํŒŒ์ผ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์ด๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
   ํ˜„์žฌ ์ž์‹ ์ด ์†ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋‚˜, ์ž๊ธฐ ์ž์‹ ์„ ๋ถ€๋ชจ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
8. ๊ฒ€์ƒ‰๊ธฐ๋Šฅ์— ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด DirectoryEntry ๋ชจ๋ธ์— get_browser_path ๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ”์†Œ๋“œ๋Š” ํ˜„์žฌ ํŒŒ์ผ์ด ์‚ฌ์ดํŠธ ์ƒ์—์„œ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ๋ฆฌํ„ดํ•ด์ค๋‹ˆ๋‹ค.
9. ๊ฒ€์ƒ‰๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰๊ธฐ๋Šฅ์€ ํ˜„์žฌ ์ž์‹ ์ด ์žˆ๋Š” ํด๋” ์•ˆ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ ๋ฐ ํด๋”๋“ค์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
   ๊ฒ€์ƒ‰๊ฒฐ๊ณผ์—์„œ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์˜ค๋ฅธ์ชฝ ์ •๋ณด์ฐฝ์—์„œ ์‹ค์ œ ๊ฒฝ๋กœ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉฐ, ๊ณต์œ ํด๋”์— ์žˆ๋Š” ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•  ๋•Œ๋Š” ๊ณต์œ ํด๋”๋ฅผ ๋ฃจํŠธ๋กœ ํ•œ ๊ฒฝ๋กœ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
   ๊ฒ€์ƒ‰์ฐฝ์„ ๋นˆ์นธ์œผ๋กœ ๋‘๊ณ  ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
   ๊ฒ€์ƒ‰์€ ๊ฒ€์ƒ‰ ๋””๋ ‰ํ† ๋ฆฌ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋ชจ๋“  ํ•˜์œ„ ํด๋” ๋ฐ ํŒŒ์ผ๋“ค์„ ๋‹จ์ˆœํ•œ BFS ํƒ์ƒ‰์„ ํ†ตํ•ด ์ด๋ฆ„์— ํ‚ค์›Œ๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๋ฉฐ, ๋”ฐ๋ผ์„œ ํšจ์œจ์ด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ถ”ํ›„์— ๊ฐœ์„ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

6/4 ์ˆ˜์ •์‚ฌํ•ญ

์˜ค๋Š˜ ์ž‘์—…ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ, ํŒŒ์ผ ์•„์ด์ฝ˜ ํ‘œ์‹œ, ์ด๋ฏธ์ง€ ๋ฐ ๋™์˜์ƒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ธฐ๋Šฅ์„ ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.  
2. ๋ฆฌ์•กํŠธ ์ฝ”๋“œ์—์„œ ๋ช‡๋ช‡ ๋น„ํšจ์œจ์ ์ธ ๋ถ€๋ถ„๋“ค์„ ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
3. ํŒŒ์ผ ๋ชฉ๋ก์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์‹œ๊ฐ„๋™์•ˆ ๋ณด์—ฌ์ค„ ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
4. File ๋ชจ๋ธ์— is_video ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ’์„ ํ†ตํ•ด ๋™์˜์ƒ ํŒŒ์ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋™์˜์ƒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
5. ํ™ˆ ํ™”๋ฉด์— ์ƒˆ๋กœ์šด ํด๋”๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™ˆ์—์„œ ํด๋” ์ƒ์„ฑ์„ ๋ˆŒ๋Ÿฌ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
6. ์—…๋กœ๋“œ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์„ค์ •๋˜๋Š” ๊ธฐ๋ณธ ๊ฒฝ๋กœ(ํด๋” ์•„๋ฌด๊ฒƒ๋„ ํด๋ฆญ ์•ˆํ–ˆ์„ ๋•Œ)๋ฅผ ํ˜„์žฌ ํด๋”๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„๋กœ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ  ๊ฒฐ์ • ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ฐ”๋กœ ํ˜„์žฌ ํด๋”์— ํŒŒ์ผ์„ ์—…๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ž์œผ๋กœ ํ•  ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. Amazon AWS ์„œ๋ฒ„๋ฅผ ํ†ตํ•œ ๋ฐฐํฌ ํ…Œ์ŠคํŠธ
2. ๋„๋ฉ”์ธ ์—ฐ๊ฒฐ ๋ฐ HTTPS ์—ฐ๋™
3. ๋Œ€์šฉ๋Ÿ‰ ๋™์˜์ƒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ…Œ์ŠคํŠธ
4. ์—…๋กœ๋“œ์ค‘ ์—…๋กœ๋“œ ์ฐฝ์„ ๋‹ซ์•˜์„ ๋•Œ ์˜ค๋ฅธ์ชฝ ์•„๋ž˜์— ๋‚จ์€ ์‹œ๊ฐ„ ๋ณด์—ฌ์ฃผ๊ธฐ
5. ๊ณต์œ  ํด๋” ๊ธฐ๋Šฅ ๊ตฌํ˜„
6. ์ฆ๊ฒจ์ฐพ๊ธฐ, ํœด์ง€ํ†ต ๊ธฐ๋Šฅ ์ถ”๊ฐ€
7. ํŒŒ์ผ์„ ์˜ค๋ฅธ์ชฝ ํด๋ฆญํ–ˆ์„ ๋•Œ ๋‚˜์˜ค๋Š” ๋ฉ”๋‰ด์ธ ์ด๋™, ๊ณต์œ  ์„ค์ •, ์‚ญ์ œ, ์ด๋ฆ„๋ณ€๊ฒฝ ๊ธฐ๋Šฅ ๊ตฌํ˜„    

6/2 ์ˆ˜์ •์‚ฌํ•ญ

  1. ํ”„๋กœํ•„ ํ™•์ธ ๋ฐ ์ˆ˜์ •, ํšŒ์›ํƒˆํ‡ด UI๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ž‘๋™๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    1. ์ƒ๋‹จ ๋ฉ”๋‰ด๋ฐ”์—์„œ ์‚ฌ๋žŒ ๋ชจ์–‘ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ๋’ค, ํ”„๋กœํ•„ ํ™•์ธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
    2. ์‚ฌ์šฉ์ž ํ™•์ธ์„ ์œ„ํ•ด ์†Œ์…œ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ ํ–ˆ์„ ๊ฒฝ์šฐ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ, ์ผ๋ฐ˜ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ ํ–ˆ์„ ๊ฒฝ์šฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    3. ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž…๋ ฅํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ ํ™”๋ฉด์—์„œ ํ”„๋กœํ•„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ํ™”๋ฉด์—์„œ ๋‹‰๋„ค์ž„๊ณผ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ๊ณ„์ •์€ ์ถ”๊ฐ€๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    4. ์•„๋ž˜์˜ ํšŒ์›ํƒˆํ‡ด ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด modal์„ ํ†ตํ•ด ํšŒ์›ํƒˆํ‡ด ์ฐฝ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ด ์ฐฝ์—์„œ '์ง€๊ธˆํƒˆํ‡ด' ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํšŒ์› ํƒˆํ‡ด๊ฐ€ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.
    5. ๋Œ์•„๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ™ˆ ํ™”๋ฉด์œผ๋กœ ํ†จ์•„๊ฐ‘๋‹ˆ๋‹ค.
  2. ์†Œ์…œ ๊ณ„์ •์˜ ์•„์ด๋””๋ฅผ google_<๊ตฌ๊ธ€ ID>, facebook_<ํŽ˜์ด์Šค๋ถ ID>์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์ผ ๊ธฐ์กด์— ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์–ด ๋†“์€ ์†Œ์…œ ๊ณ„์ •์ด ์žˆ์—ˆ์„ ๊ฒฝ์šฐ, /api/deleteAll์„ ํ†ตํ•ด ๋ชจ๋“  ๊ณ„์ •์„ ์‚ญ์ œํ•œ ๋’ค ๋‹ค์‹œ ์ง„ํ–‰ํ•ด์ฃผ์„ธ์š”.

6/1 ์ˆ˜์ •์‚ฌํ•ญ

  1. ํ”„๋กœํ•„ ์ˆ˜์ • ๋ฐ ํšŒ์› ํƒˆํ‡ด API๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    1. ํ”„๋กœํ•„ ์ˆ˜์ •
    • /api/user๋กœ PUT ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ํ˜„์žฌ ์‚ฌ์šฉ์ž์˜ ํ”„๋กœํ•„(๋น„๋ฐ€๋ฒˆํ˜ธ, ๋‹‰๋„ค์ž„)์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PUT ์š”์ฒญ์˜ body๋Š” curPassword(ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ), newPassword(๋ฐ”๊ฟ€ ๋น„๋ฐ€๋ฒˆํ˜ธ), nickname(๋‹‰๋„ค์ž„)์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๋ฐ”๊ฟ€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” 8์ž ์ด์ƒ 15์ž ์ดํ•˜์˜ ์˜์–ด ๋Œ€์†Œ๋ฌธ์ž ๋ฐ ์ˆซ์ž, ๋‹‰๋„ค์ž„์€ 2์ž ์ด์ƒ 15์ž ์ดํ•˜์˜ ํ•œ๊ธ€ ๋ฐ ์˜์–ด ๋Œ€์†Œ๋ฌธ์ž, ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์†Œ์…œ ๊ณ„์ •์€ curPassword์™€ newPassword๋ฅผ ๋นˆ์นธ์œผ๋กœ ๋ณด๋‚ด๋ฉด ๋˜๊ณ , ์ผ๋ฐ˜ ๊ณ„์ •์€ curPassword๋Š” ํ•„์ˆ˜, ๋‚˜๋จธ์ง€ ๋‘ ํ•„๋“œ๋Š” ๋ฐ”๊ฟ€ ๋ถ€๋ถ„๋งŒ ๊ฐ’์„ ๋„ฃ๊ณ  ๋ฐ”๊พธ์ง€ ์•Š์„ ๋ถ€๋ถ„์€ ๋นˆ์นธ์œผ๋กœ ํ•ด์„œ ์š”์ฒญ ๋ณด๋‚ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    1. ํšŒ์› ํƒˆํ‡ด
    • /api/user๋กœ DELETE ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ํ˜„์žฌ ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์„œ๋ฒ„์—์„œ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. body์—๋Š” password(ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ) ํ•„๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋™์ž‘ํ•˜์ง€ ์•Š๋˜ ๋ฒ„ํŠผ ์Šคํ”ผ๋„ˆ๋ฅผ ์ •์ƒ์ ์œผ๋กœ ๊ณ ์ณค์Šต๋‹ˆ๋‹ค.

  3. ๋ฉ”์ผ ์žฌ๋ฐœ์†ก ํ™”๋ฉด์— ๋กœ๊ทธ์•„์›ƒ ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  4. "shared-dir" branch์˜ ์—…๋ฐ์ดํŠธ ๋‚ด์—ญ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋””๋ฒ„๊น…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 5/31 ์ˆ˜์ •์‚ฌํ•ญ


  1. ํŒŒ์ผ ๋ธŒ๋ผ์šฐ์ €์˜ ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ ํŒŒ์ผ ์‚ญ์ œ ๋ฒ„ํŠผ ๋””์ž์ธ์„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค,
  2. ํŒŒ์ผ๋ช… ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ๋ช… ์ค‘๋ณต ์ฒดํฌ๋ฅผ ํ•œ ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์—์„œ๋งŒ ์ฒดํฌํ•˜๋„๋ก ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  3. React ์ฝ”๋“œ์˜ ๋ชจ๋“  fetch ๋ฐ axios ๋ฌธ์— ํ˜„์žฌ์˜ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์ฒดํฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์‹œ๊ฐ„์ด ์ง€๋‚˜ ๋กœ๊ทธ์ธ ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜๋ฉด ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ๋กœ๊ทธ์ธ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  4. ์‚ฌ์ด๋“œ๋ฐ”์— ์žˆ๋Š” ๋‚จ์€ ๊ณต๊ฐ„์„ ํ‘œ์‹œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ง‰๋Œ€์˜ ์ƒ‰๋„ 3๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„์—ˆ๋Š”๋ฐ, ๋‚จ์€๊ณต๊ฐ„์ด 40% ์ดํ•˜์ผ ๋•Œ๋Š” ํŒŒ๋ž€์ƒ‰, 40%์ด์ƒ 70% ์ดํ•˜์ผ ๋•Œ๋Š” ๋…ธ๋ž€์ƒ‰, ๊ทธ ์ด์ƒ์ผ ๋•Œ๋Š” ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•˜๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  5. ์—…๋กœ๋“œ ํŒŒ์ผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํŒŒ์ผ ๋ฐ ํด๋”๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์”ฉ ์„ ํƒํ•˜์—ฌ ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•ž์œผ๋กœ ํ•ด์•ผํ•  ์ผ๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ํœด์ง€ํ†ต ๊ธฐ๋Šฅ
  2. ํŒŒ์ผ ์ฆ๊ฒจ์ฐพ๊ธฐ ๊ธฐ๋Šฅ
  3. ํŒŒ์ผ ๊ฒ€์ƒ‰๊ธฐ๋Šฅ
  4. ํšŒ์› ํƒˆํ‡ด ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ
  5. ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋”๋ธ”ํด๋ฆญ ํ–ˆ์„ ๋•Œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ
  6. ๋™์˜์ƒ ํŒŒ์ผ ๋”๋ธ”ํด๋ฆญ ํ–ˆ์„ ๋•Œ ์ŠคํŠธ๋ฆฌ๋ฐ ๊ธฐ๋Šฅ ์ œ๊ณต
  7. ์„œ๋ฒ„ ํ…Œ์ŠคํŠธ

5/30 ์ˆ˜์ •์‚ฌํ•ญ

์—…๋กœ๋“œ UI์— ์—…๋กœ๋“œ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ์—…๋กœ๋“œ ๊ฒฝ๋กœ ์„ค์ •์ฐฝ ํŒŒ์ผ ๋ธŒ๋ผ์šฐ์ €

์—…๋กœ๋“œํ•  ํด๋”๋ฅผ ์„ ํƒํ•œ ๋’ค ์™„๋ฃŒ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์—…๋กœ๋“œ ์ฐฝ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ

root ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜๋กœ ์ƒˆ ๋””๋ ‰ํ† ๋ฆฌ๋“ค์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ์— ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ํด๋” ๋‚ด์— ๋™์ผํ•œ ์ด๋ฆ„์˜ ํด๋”๋Š” ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋„๋ก ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œ ๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œ

ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋“ค์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. root ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์‚ญ์ œ๊ฐ€ ์ œํ•œ๋˜๋ฉฐ, ๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œ์‹œ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ ํŒŒ์ผ๋“ค๋„ ๊ฐ™์ด ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

  1. ํŒŒ์ผ ์‚ญ์ œ ํŒŒ์ผ ์‚ญ์ œ

ํ˜„์žฌ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ํŒŒ์ผ์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์—…๋กœ๋“œ ํ™•์ธ ์—…๋กœ๋“œ ํŒŒ์ผ ํ™•์ธ

์—…๋กœ๋“œ๊ฐ€ ๋๋‚œ ๋’ค ๋‹ค์‹œ ์—…๋กœ๋“œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์„ค์ •ํ•œ ๊ฒฝ๋กœ์— ์ €์žฅ๋œ ํŒŒ์ผ๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ์™ธ์— ๋‹ค๋ฅธ ์ž‘์—…์‚ฌํ•ญ๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ๋กœ๊ทธ์ธ์‹œ ์ œ๊ณตํ•˜๋Š” ์ •๋ณด์— ๋ฃจํŠธ dir์˜ id ์ถ”๊ฐ€. ์ด๋Š” ์ถ”๊ฐ€์ ์ธ ์„œ๋ฒ„ ์š”์ฒญ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ์ž„.
2. ์—…๋กœ๋“œ UI์˜ ํŒŒ์ผ ๋ธŒ๋ผ์šฐ์ € ์ƒ์—์„œ ํ˜„์žฌ ์ €์žฅ์ค‘์ธ ํŒŒ์ผ ๋ฐ ํด๋” ํ™•์ธ ๊ฐ€๋Šฅ.
3. ํŒŒ์ผ ๋ธŒ๋ผ์šฐ์ € ์ƒ์—์„œ ์ƒˆ ํด๋” ๋งŒ๋“ค๊ธฐ ๊ฐ€๋Šฅ.
4. ํด๋” ์ด๋ฆ„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ.
5. ํŒŒ์ผ ๋ฐ ํด๋” ์‚ญ์ œ ๊ฐ€๋Šฅ. ํด๋” ์‚ญ์ œํ•˜๋ฉด ํด๋” ์•ˆ์— ์žˆ๋˜ ํ•˜์œ„ ํŒŒ์ผ ๋ฐ ํด๋”๋“ค๋„ ๊ฐ™์ด ์‚ญ์ œ.
   ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์‚ญ์ œ ๋ชปํ•˜๊ฒŒ ๋ง‰์Œ(React, django ์–‘์ชฝ์œผ๋กœ ์ฒดํฌ).
6. ํŒŒ์ผ ์—…๋กœ๋“œ ์‹œ๊ฐ„ ํ‘œ์‹œ
7. ํŒŒ์ผ ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฒ€์ƒ‰์ฐฝ์„ ํ†ตํ•ด ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ €์žฅ์ค‘์ธ ํŒŒ์ผ๋“ค์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Œ.
8. directoryEntry์˜ file_count์— dir_count ๊ฐ’๊นŒ์ง€ ํ•ฉ์ณ์„œ ๊ณ„์‚ฐ๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์—ฌ directory ๋ชจ๋ธ์˜ 
   add ๋ฉ”์†Œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์ธ file_count์˜ ๊ธฐ๋ณธ๊ฐ’์„ 0์œผ๋กœ ๋ณ€๊ฒฝ, ๊ทธ์— ๋”ฐ๋ผ FlowUploadStartView์—์„œ ์‚ฌ์šฉํ•˜๋Š” add ๋ฉ”์†Œ๋“œ์— file_count=1 ํŒŒ๋ผ๋ฏธํ„ฐ ์ถ”๊ฐ€

์•ž์œผ๋กœ ํ•ด์•ผํ•  ์ผ๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ํด๋”๋ช…์— ํŠน์ˆ˜๋ฌธ์ž ๋ชป๋“ค์–ด๊ฐ€๊ฒŒ ๋ง‰์•„์•ผํ•จ. (๋ฌธ์ž์—ด ํŒŒ์‹ฑ ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜ ์ƒ๊น€.)
2. ๋™์ผ์ด๋ฆ„ ์ œํ•œ์„ ํ•œ ํด๋” ์•ˆ์—์„œ๋งŒ ์ฒดํฌํ•˜๋Š”๊ฒŒ ์ข‹์„๊ฒƒ ๊ฐ™์Œ. ํ˜„์žฌ๋Š” ์„œ๋กœ ๋‹ค๋ฅธํด๋”์— ์žˆ๋Š” ํŒŒ์ผ๋“ค๋„ ์ด๋ฆ„์ด ๊ฐ™์œผ๋ฉด ์•ˆ๋จ.
3. ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ

5/29 ์ˆ˜์ •์‚ฌํ•ญ

master ๋ธŒ๋žœ์น˜ ๋ฐ team-content ๋ธŒ๋žœ์น˜์™€ ๋ณ‘ํ•ฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ณผ์ •์—์„œ, ์•„๋ž˜์™€ ๊ฐ™์€ ์ˆ˜์ •์‚ฌํ•ญ๋“ค์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

    1. Home.js์—์„œ TeamContent.js๋กœ username์ด ์•„๋‹Œ props ๋„˜๊ธฐ๋Š” ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝ
    2. ํŒ€ ๋ชฉ๋ก์˜ ํŒ€์žฅํ•ญ๋ชฉ์— ๋‹‰๋„ค์ž„๊ณผ ์•„์ด๋””๋ฅผ ๊ฐ™์ด ํ‘œ์‹œํ•˜๋„๋ก ๋ณ€๊ฒฝ
    3. ํŒ€์„ ์ƒˆ๋กœ ๋งŒ๋“ค์—ˆ์„ ๋•Œ, ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  loadTeamList()๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ”๋กœ ๋กœ๋“œํ•˜๋„๋ก ๋ณ€๊ฒฝ -> ์ด๋Š” toast ๋ฉ”์‹œ์ง€๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
    4. ์ดˆ๋Œ€๋ฉ”์„ธ์ง€์— ๋‚˜์˜ค๋Š” ํŒ€ ์•„์ด๋”” ํŒ€๋ช…์œผ๋กœ ๋ณ€๊ฒฝ
    5. ์‚ฌ์šฉ์ž ์ •๋ณด์ฐฝ ์•„๋ž˜์— ๊ด„ํ˜ธ์น˜๊ณ  ์•„์ด๋”” ๊ฐ™์ด ๋ณด์ด๊ฒŒ ์„ค์ •
    6. ์•„์ด๋”” ๊ฒ€์ƒ‰์‹œ, ์ด๋ฏธ ํŒ€์— ๊ฐ€์ž…๋˜์–ด ์žˆ๋Š” ์‚ฌ์šฉ์ž๋Š” ๊ฒ€์ƒ‰ ์•ˆ๋˜๊ฒŒ ๋ณ€๊ฒฝ
    7. ์ดˆ๋Œ€๋ฉ”์‹œ์ง€ ์•Œ๋ฆผ์ฐฝ์— ์ดˆ๋Œ€ ๋ฉ”์‹œ์ง€ ๊ฐฏ์ˆ˜ ํ‘œ์‹œ
    8. ํŒ€ ์ˆ˜์ • ์ฐฝ์—์„œ ํŒ€์žฅ ๋ฐ ํŒ€์› ์ด๋ฆ„ ๋‹‰๋„ค์ž„์œผ๋กœ ํ‘œ์‹œ๋˜๋„๋ก ์ˆ˜์ •, ๋‹‰๋„ค์ž„์€ ์ค‘๋ณต ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๊ด„ํ˜ธ์น˜๊ณ  ์•„์ด๋””๋„ ๊ฐ™์ด ํ‘œ์‹œํ•˜๊ฒŒ ํ•จ.
    9. ๋ชจ๋“  ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ toast ๋ฉ”์‹œ์ง€(์šฐํ•˜๋‹จ์— ๋‚˜์˜ค๋Š” ๋ฉ”์‹œ์ง€)๋กœ ๋ณ€๊ฒฝ. toast ๋ฉ”์‹œ์ง€๋ฅผ ์›นํŽ˜์ด์ง€ ๋ชจ๋“  ๊ณณ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์œ„์น˜๋ฅผ App.js๋กœ ์˜ฎ๊น€.
    10. Toast ๋ฉ”์‹œ์ง€ ๊ฐœ์„ 
    11. settings.py DATABASE์—์„œ serializable ์˜ต์…˜ ์ œ๊ฑฐ.

5/28 ์ˆ˜์ •์‚ฌํ•ญ

  1. 5์›” 27์ผ ๋ฐœ๊ฒฌํ•œ ์—…๋กœ๋“œ ๊ด€๋ จ UI ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

    1. ์—…๋กœ๋“œ ๋„์ค‘ ์—…๋กœ๋“œ ์ฐฝ์„ ๋‹ซ์•˜์„ ๋•Œ ์—…๋กœ๋“œ๊ฐ€ ๊ณ„์† ์ง€์†๋˜๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€? ๋ฉˆ์ถœ๊ฒƒ์ธ๊ฐ€? -> ์—…๋กœ๋“œ๊ฐ€ ์ง€์†๋˜๋„๋ก ๋ณ€๊ฒฝ, ์ˆ˜ํ–‰์ค‘์ด๋˜ ์—…๋กœ๋“œ ์ง„ํ–‰์‚ฌํ•ญ์€ ์—…๋กœ๋“œ ๋ฒ„ํŠผ์„ ๋‹ค์‹œ ๋ˆŒ๋Ÿฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ. ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์—…๋กœ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋œ ๋’ค ์—…๋กœ๋“œ๊ฐ€ ๋๋‚˜๋ฉด ์˜ค๋ฅธ์ชฝ ์•„๋ž˜์— ์—…๋กœ๋“œ ์™„๋ฃŒ ์•Œ๋ฆผ์ด ๋œธ.
    2. ๋ชจ๋“  ์—…๋กœ๋“œ๋ฅผ ์ทจ์†Œํ•˜๋ฉด ๋‹ค์‹œ ์—…๋กœ๋“œ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ์ฐฝ์œผ๋กœ ๋ฐ”๋€Œ๋Š”๋ฐ, ์ด๊ฒŒ ์ž‘๋™์„ ์•ˆํ•จ. -> ํ•ด๊ฒฐ
    3. UI ๋‹ค๋“ฌ๊ธฐ -> ์Šคํฌ๋กค๋ฐ”๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ๋งŽ์€ ์ˆ˜์˜ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•  ๋•Œ ๊ฐ€์‹œ์„ฑ์„ ๋†’์ž„. ๊ฐ ์—…๋กœ๋“œ ํŒŒ์ผ๋“ค์„ ๋ฆฌ์ŠคํŠธ์˜ ํ˜•ํƒœ๋กœ ์ •๋ฆฌํ•จ.
    4. ํ•œ ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ์žˆ๋Š” ๋™์ผํ•œ ํŒŒ์ผ ์ด๋ฆ„ ์ฒ˜๋ฆฌํ•ด์•ผํ•จ. -> ํ•ด๊ฒฐ
  2. readme์˜ ๊ธฐ๋ก ๋ฐฉ์‹์„ ์ตœ์‹  ์—…๋ฐ์ดํŠธ ๋‚ด์šฉ์ด ์œ„๋กœ ๊ฐ€๊ฒŒ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.

  3. ๋‹‰๋„ค์ž„ ์ผ๋ถ€๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž ์ž์‹  ๋ฐ ์ด๋ฉ”์ผ ์ธ์ฆํ•˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž๋Š” ๊ฒ€์ƒ‰๋Œ€์ƒ์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. URL์€ /api/search-user/<๊ฒ€์ƒ‰๋‚ด์šฉ> ์ž…๋‹ˆ๋‹ค.

์•ž์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๊ธฐ๋Šฅ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. 1. ํŒŒ์ผ ์—…๋กœ๋“œ์‹œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•˜์—ฌ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. 2. ์—…๋กœ๋“œ ์™„๋ฃŒ ์•Œ๋ฆผ์— CSS๋ฅผ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—…๋กœ๋“œ ์˜ˆ์‹œ ์—…๋กœ๋“œ-UI

5/27 ์ˆ˜์ •์‚ฌํ•ญ

  1. ์—…๋กœ๋“œ UI๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์ธ ํŽ˜์ด์ง€ ์—…๋กœ๋“œ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ๋ฅผ ํ†ตํ•œ ๋‹ค์ค‘ ์—…๋กœ๋“œ ๋ฐ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์„ ํ†ตํ•œ ๋‹ค์ค‘ ์—…๋กœ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํŒŒ์ผ ์—…๋กœ๋“œ๋Š” ์ผ์‹œ์ •์ง€ํ•˜๊ฑฐ๋‚˜ ์žฌ์‹œ์ž‘, ์—…๋กœ๋“œ ๋ชฉ๋ก์—์„œ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”ํ›„ ์ƒ๊ฐํ•ด ๋ณผ ์ ๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.
 1. ์—…๋กœ๋“œ ๋„์ค‘ ์—…๋กœ๋“œ ์ฐฝ์„ ๋‹ซ์•˜์„ ๋•Œ ์—…๋กœ๋“œ๊ฐ€ ๊ณ„์† ์ง€์†๋˜๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€? ๋ฉˆ์ถœ๊ฒƒ์ธ๊ฐ€?
 2. ๋ชจ๋“  ์—…๋กœ๋“œ๋ฅผ ์ทจ์†Œํ•˜๋ฉด ๋‹ค์‹œ ์—…๋กœ๋“œ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ์ฐฝ์œผ๋กœ ๋ฐ”๋€Œ๋Š”๋ฐ, ์ด๊ฒŒ ์ž‘๋™์„ ์•ˆํ•จ.
 3. UI ๋‹ค๋“ฌ๊ธฐ
 4. ํ•œ ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ์žˆ๋Š” ๋™์ผํ•œ ํŒŒ์ผ ์ด๋ฆ„ ์ฒ˜๋ฆฌํ•ด์•ผํ•จ.
  1. ํŒŒ์ผ ๋“ฑ๋ก modal

ํŒŒ์ผ ๋“ฑ๋ก

  1. ์—…๋กœ๋“œ ์ง„ํ–‰

์ง„ํ–‰ 1

  1. ์™„๋ฃŒ

์™„๋ฃŒ

5/26 ์ˆ˜์ •์‚ฌํ•ญ

  1. Storage ์•ฑ์— ์ƒˆ๋กœ ์—…๋ฐ์ดํŠธ๋œ ๋‚ด์—ญ๋“ค์„ ์ ์šฉํ•˜๊ณ , ๋””๋ฒ„๊น…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋””๋ฒ„๊น… ๊ณผ์ •์—์„œ ์ˆ˜์ •ํ•œ ์ฝ”๋“œ๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    1. Partial_upload ๋ชจ๋ธ is_expired ๋ฉ”์†Œ๋“œ ์•ˆ์— ์žˆ๋Š” time_since_upload ์ˆ˜์ • => now์™€ self.last_receive_time ํ˜•์‹ ๋‹ฌ๋ผ์„œ ๋นผ๊ธฐ๊ฐ€ ์•ˆ๋จ.
    2. PartialUpload ๋ชจ๋ธ is_complete => is_completed๋กœ ์ˆ˜์ •. signals.py์™€ ๋งž์ถค.
    3. ์ธ๋„ค์ผ ์ƒ์„ฑ๋ถ€๋ถ„(287๋ฒˆ ์ค„)์—์„œ ์™„์„ฑ ํŒŒ์ผ ๊ฒฝ๋กœ๋กœ file_path ์žฌ์„ค์ •

5/25 ์ˆ˜์ •์‚ฌํ•ญ

  1. ๋‹ค์ค‘ ์—…๋กœ๋“œ์‹œ์— ๋ฐœ์ƒํ•˜๋˜ asynchronous call ๋ฌธ์ œ๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•˜์—ฌ ๋‹ค์‹œ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๊ธด ํ–ˆ์ง€๋งŒ, ๋˜๋‹ค์‹œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ๋‹ค์ค‘ ๋‹ค์šด๋กœ๋“œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„์„ ์œ„ํ•ด nginx docker base image๋ฅผ levelonestl/nginx-mod-zip์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž‘๋™ ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    1. ๋กœ๊ทธ์ธํ•œ ๋’ค /file-test๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

    2. ์—…๋กœ๋“œ ๋ฒ„ํŠผ์„ ์ด์šฉํ•˜์—ฌ ํŒŒ์ผ๋“ค์„ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    3. ๋‹ค์šด๋กœ๋“œ ์•„๋ž˜์˜ ์ž…๋ ฅ์ฐฝ์— ํŒŒ์ผ๋“ค์˜ ID๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ID๊ฐ€ ํ•˜๋‚˜์ผ๋•Œ๋Š” ๊ธฐ์กด ๋ฐฉ์‹์œผ๋กœ, ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๋•Œ๋Š” downloadFiles.zip ์œผ๋กœ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ์•„์ด๋”” ํ™•์ธ์€ /api/file-list ๋กœ ๊ฐ€์‹œ๋ฉด ๊ฐ ํŒŒ์ผ๋“ค์˜ ์ •๋ณด๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ _id ๊ฐ’์„ ์Œ๋”ฐ์˜ดํ‘œ ๋นผ๊ณ  ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ๋•Œ๋Š” {file1 : , file2 : , file3 : , ...} ํ˜•์‹์œผ๋กœ /api/download์— POST ์š”์ฒญ์„ ๋ณด๋‚ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    4. downloadFiles.zip ํŒŒ์ผ์„ ํ†ตํ•ด ์ž…๋ ฅํ–ˆ๋˜ ID๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŒŒ์ผ๋“ค์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ˆ˜์ •๊ณผ์ •์—์„œ ๊ธฐ์กด์— ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•˜๊ธฐ ์ „ fetch call์„ ํ†ตํ•ด ํ•ด๋‹น id๋ฅผ ๊ฐ€์ง€๋Š” ํŒŒ์ผ ์ด๋ฆ„์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ฑฐํ–ˆ๋Š”๋ฐ, ์ด๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ๋“ค์–ด๊ฐ”์„ ๋•Œ ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์˜ ์ด๋ฆ„ ๋ฐ ์ธ๋„ค์ผ ์ •๋ณด๋ฅผ ํ•œ๋ฒˆ์— ๋ฐ›์•„์˜ค๋ฏ€๋กœ ๋‹ค์šด๋กœ๋“œ ๊ณผ์ •์—์„œ ๊ตณ์ด ๋‹ค์‹œ ๋ฐ›์•„์˜ฌ ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ filename_here๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ํ†ต์ผ์‹œ์ผœ ๋†“์•˜๊ณ , ๋ฉ”์ธํŽ˜์ด์ง€์™€ ๊ฒฐํ•ฉํ•  ๋•Œ ์ด ๋ถ€๋ถ„์— ํŒŒ์ผ์˜ ์‹ค์ œ ์ด๋ฆ„์„ ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    1. ์—…๋กœ๋“œ ์ฐฝ

    ์—…๋กœ๋“œ์ฐฝ

    1. ๋‹ค์šด๋กœ๋“œ ์ž…๋ ฅ์ฐฝ

    ๋‹ค์šด๋กœ๋“œ ์ž…๋ ฅ์ฐฝ

    1. ์••์ถ• ํŒŒ์ผ

    ์••์ถ•ํŒŒ์ผ

5/23 ์ˆ˜์ •์‚ฌํ•ญ

  1. DB๋ฅผ mongoDB์—์„œ postgreSQL๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝํ•œ ์ด์œ ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    1. ๊ฐ ์‚ฌ์šฉ์ž๊ฐ€ UserStoarge๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ฐœ์ƒํ–ˆ๋˜ race condition ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” transaction.atomic() ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ–ˆ๋Š”๋ฐ, django์™€ mongoDB๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๋ชจ๋“ˆ๋“ค์€ ์ด ํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    2. django์—์„œ mongoDB๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— transaction.atomic() ํ•จ์ˆ˜ ์ด์™ธ์—๋„ ์ถ”ํ›„์— ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด์— ๋”ฐ๋ผ, docker DB๋‹จ์˜ ์ˆ˜์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  2. React์˜ flow.js์—์„œ ๋ฐœ์ƒํ–ˆ๋˜ asynchronous call ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

5/21 ์ˆ˜์ •์‚ฌํ•ญ

  1. ์—…๋กœ๋“œ ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€์— ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์šด๋กœ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ…Œ์ŠคํŠธํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    1. ๋กœ๊ทธ์ธ์„ ํ•œ ๋’ค, localhost/file-test๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    2. '์—…๋กœ๋“œ' ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์—…๋กœ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    3. localhost/api/file-list ๋กœ ์ด๋™ํ•˜์—ฌ ์—…๋กœ๋“œํ•œ ํŒŒ์ผ์˜ ๋ชจ๋ธ์„ ํ™•์ธํ•œ ๋’ค, ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ํŒŒ์ผ์˜ _id ๋ถ€๋ถ„์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค(์Œ๋”ฐ์˜ดํ‘œ ๋นผ๊ณ ).
    4. ๋‹ค์‹œ localhost/file-test๋กœ ์ด๋™ํ•˜์—ฌ ์ž…๋ ฅ์ฐฝ์— ๋ณต์‚ฌํ•œ _id๋ฅผ ์ž…๋ ฅํ•œ ๋’ค, ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
    5. ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋‹ค์šด๋กœ๋“œ ๊ธฐ๋Šฅ์„ ๊ธฐ์กด์˜ Download ์•ฑ์—์„œ Storage ์•ฑ์œผ๋กœ ์ด๋™์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. ๊ทธ์— ๋”ฐ๋ผ download ์•ฑ์€ ์‚ญ์ œํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  3. ์‚ฌ์šฉ์ž๊ฐ€ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ๋“ค์˜ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” API๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. /api/file-list์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  4. /api/users์—์„œ ์‚ฌ์šฉ์ž ์ •๋ณด์— ์ถ”๊ฐ€๋กœ ๊ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ์—ฐ๊ฒฐ๋œ UserStorage ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๊ฒŒ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ’์„ ํ†ตํ•ด์„œ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ID๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋ฐœ๊ฒฌํ•œ ๋ฌธ์ œ์ ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํŒŒ์ผ ์—…๋กœ๋“œ ์ฐฝ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ์„ ์„ ํƒํ•˜์—ฌ ์—…๋กœ๋“œํ–ˆ์„ ๋•Œ, ํŒŒ์ผ ์—…๋กœ๋“œ์™€ ํŒŒ์ผ ๋ชจ๋ธ ์ƒ์„ฑ์€ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์ง€๋งŒ UserStorage ๋ชจ๋ธ์˜ file_count ๊ฐ’์ด ์ œ๋Œ€๋กœ ์—…๋ฐ์ดํŠธ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ ์ด ๊ฐ’์— ์˜ํ–ฅ์„ ๋ฐ›๋Š” file_size_total๋„ ์ œ๋Œ€๋กœ ์—…๋ฐ์ดํŠธ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•ž์œผ๋กœ ๊ฐœ๋ฐœํ•  ๊ฒƒ๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์„ ํ†ตํ•œ ํŒŒ์ผ ์—…๋กœ๋“œ -> flow.js์—์„œ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์‰ฝ๊ฒŒ ์ œ์ž‘ ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

5/20 ์ˆ˜์ •์‚ฌํ•ญ

  1. ์—…๋กœ๋“œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ์„ ํ•œ ๋’ค localhost/upload-test๋กœ ์ด๋™ํ•˜์‹œ๋ฉด ์—…๋กœ๋“œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—…๋กœ๋“œ๋œ ํŒŒ์ผ์€ django ์ƒ์˜ /file/complete/<์‚ฌ์šฉ์ž ์ด๋ฆ„>/ ํด๋” ๋ฐ‘์— ์ €์žฅ๋˜๋ฉฐ, ์ธ๋„ค์ผ์€ /file/complete/<์‚ฌ์šฉ์ž ์ด๋ฆ„>/thumbnail/ ํด๋” ๋ฐ‘์— ํŒŒ์ผ ๋ช…๊ณผ ๋™์ผํ•œ ์ด๋ฆ„.jpg์˜ ํ˜•ํƒœ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์„œ๋ฒ„ ๊ธฐ์ค€์œผ๋กœ๋Š” capstone-project/file ํด๋” ์•„๋ž˜์— ํŒŒ์ผ๋“ค์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ 2GB๊นŒ์ง€์˜ ํŒŒ์ผ๋“ค๋„ ์ •์ƒ์ ์œผ๋กœ ์—…๋กœ๋“œ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์œผ๋ฉฐ, ์ƒ๊ฐํ•ด๋ณผ ์ ์œผ๋กœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    1. ์—…๋กœ๋“œ ์†๋„ ๋ฌธ์ œ chunk ํฌ๊ธฐ๋ฅผ ๊ธฐ์กด ์„ค์ •๊ฐ’์ธ 1MB๋กœ ํ–ˆ์„ ๋–„ ์—…๋กœ๋“œ ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋Š๋ ค chunk ํฌ๊ธฐ๋ฅผ 100MB๋กœ ๋Š˜๋ ธ์Šต๋‹ˆ๋‹ค. chunk ํฌ๊ธฐ๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ์†๋„๋Š” ๋Š˜์–ด๋‚˜๊ฒ ์ง€๋งŒ, ๊ทธ๋งŒํผ ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€ํ•˜๋Ÿ‰์ด ๋งŽ์•„์ง„๋‹ค๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ ์ ์ ˆํ•œ ๊ฐ’์œผ๋กœ ์กฐ์ •์ด ํ•„์š”ํ•ด๋ณด์ž…๋‹ˆ๋‹ค.

    2. ํŒŒ์ผ ์‚ญ์ œ ๋ฐ ๊ฐ ์‚ฌ์šฉ์ž๋“ค์˜ ํ˜„์žฌ ์ €์žฅ ์šฉ๋Ÿ‰, ๋‚จ์€ ์šฉ๋Ÿ‰ ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” API ํ•„์š”

    3. ๊ฐœ๋ฐœ๋‹จ๊ณ„์—์„œ React ๋‹จ์—์„œ ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ด์ฃผ๋Š” ํ—ค๋”๋ฅผ ์ฝ์ง€ ๋ชปํ•ด body์— ๋‹ด์•„ URL์„ ๋ณด๋‚ด๋Š”๋ฐ, ์‹ค์ œ ์„œ๋ฒ„์—์„œ ๊ตฌ๋™ํ•  ๋–ˆ ์›๋ž˜๋Œ€๋กœ ๋Œ๋ ค๋†“์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

5/19 ์ˆ˜์ •์‚ฌํ•ญ

  1. ๋™์˜์ƒ ์ธ๋„ค์ผ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋ฐฉ๋ฒ•์€ ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ธ๋„ค์ผ ๊ธฐ๋Šฅ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋™์˜์ƒ ์ธ๋„ค์ผ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด moviepy ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด django dockerfile์— apk add ffmpeg๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  2. ๋‹ค์šด๋กœ๋“œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ณด์™„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์šด๋กœ๋“œ ํ…Œ์ŠคํŠธ ์ฐฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ํŒŒ์ผ ์ด๋ฆ„์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๊ณ , ํ•ด๋‹น ํŒŒ์ผ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํŒŒ์ผ ๋ชจ๋ธ์ด ์กด์žฌํ•˜๋ฉด ๊ทธ ๋ชจ๋ธ์˜ id๋ฅผ ํŒŒ์ผ ์ด๋ฆ„์œผ๋กœ ๊ฐ€์ง€๋Š” ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋กœ๊ทธ์ธํ•œ ๋’ค /api/download/aaa๋กœ ์ด๋™ํ•˜์—ฌ ํŒŒ์ผ ์ด๋ฆ„์„ ๋“ฑ๋กํ•ด์ฃผ๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ /file/complete/<์‚ฌ์šฉ์ž ์•„์ด๋””>/ ์•„๋ž˜์— ํ•ด๋‹น ํŒŒ์ผ์˜ id์™€ ํ™•์žฅ์ž๋ฅผ ์ด๋ฆ„์œผ๋กœ ๊ฐ€์ง€๋Š” ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ณผ์ •์„ ๋งˆ์นœ ๋’ค, /download-test๋กœ ์ด๋™ํ•˜์—ฌ ํŒŒ์ผ ์ด๋ฆ„์„ ์ ๊ณ  ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๋‹ค์šด๋กœ๋“œ ์—ฌ๋ถ€๋งŒ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ์ค‘์ด๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์€ ์‚ฌ์ „์ž‘์—…์ด ํ•„์š”ํ•˜๋ฉฐ, ์—…๋กœ๋“œ ๊ตฌํ˜„์ด ์™„๋ฃŒ๋˜๋ฉด ๊ทธ๋•Œ ์ƒ์„ฑ๋˜๋Š” ํŒŒ์ผ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์˜ ์ž‘์—…์ด ์ž๋™์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๊ฒŒ ๊ตฌํ˜„ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

5/18 ์ˆ˜์ •์‚ฌํ•ญ

  1. ์ธ๋„ค์ผ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž‘๋™ ๋กœ์ง์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    1. storage/views.py์—์„œ ํŒŒ์ผ ์—…๋กœ๋“œ๋ฅผ ๋งˆ์นœ ๋’ค, ํ•ด๋‹น ํŒŒ์ผ์ด ์ด๋ฏธ์ง€ ํŒŒ์ผ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    2. ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ผ๋ฉด ๊ทธ๋Œ€๋กœ ๋‚˜๋จธ์ง€ ์—…๋กœ๋“œ ๋กœ์ง์„ ์ง„ํ–‰ํ•˜๊ณ , ๋งž๋‹ค๋ฉด thumbnail.py์˜ MakeThumbnail ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธ๋„ค์ผ์„ ์ œ์ž‘ํ•œ ๋’ค, ํ•ด๋‹น ํŒŒ์ผ์„ file/complete/์‚ฌ์šฉ์ž๋ช…/thumbnail/ ์— ํŒŒ์ผID.jpg์˜ ํ˜•ํƒœ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค(Nginx ์ƒ์—์„œ๋Š” media/files/์‚ฌ์šฉ์ž๋ช…/thumbnail ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.). MakeThumbnail ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, width์™€ height ๊ฐ’์„ ๋„˜๊ฒจ์คŒ์œผ๋กœ์จ ์ธ๋„ค์ผ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    3. ์ธ๋„ค์ผ์ด ์ €์žฅ๋œ ๊ฒฝ๋กœ๋ฅผ ์—…๋กœ๋“œ response์˜ body์— thumbnail_url : {url} ํ˜•ํƒœ๋กœ ์‹ค์–ด์„œ response๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
    4. ํ•ด๋‹น url๋กœ ์ ‘์†ํ•˜๋ฉด ์„œ๋ฒ„์— ์ €์žฅ๋œ ์ธ๋„ค์ผ ์•„์ด์ฝ˜์ด ๋ณด์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ด์šฉํ•ด ๋ฆฌ์•กํŠธ์ชฝ์—์„œ ์ธ๋„ค์ผ ์ด๋ฏธ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    storage์•ฑ์˜ view.py์— ์žˆ๋Š” ThumbnailTestAPI์™€ thumbnail ์•ฑ์€ ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ, ์ œ๊ฑฐํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์ธ๋„ค์ผ ์ด๋ฏธ์ง€ ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€๋Š” localhost/thumb-test์— ๊ฐ€์‹œ๋ฉด ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ sungs201๋กœ ์„ค์ •ํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค (์ด๋Š” ํ…Œ์ŠคํŠธ์šฉ ์„ค์ •์œผ๋กœ, ์ถ”ํ›„์— ์—…๋กœ๋“œ ๊ตฌํ˜„์ด ์™„๋ฃŒ๋˜๋ฉด ์—…๋กœ๋“œํ•œ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.).

5/16 ์ˆ˜์ •์‚ฌํ•ญ

  1. ํŒ€์— ์ดˆ๋Œ€๋ฐ›์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ดˆ๋Œ€๋ฅผ ์ˆ˜๋ฝํ•˜๋Š” ๊ธฐ๋Šฅ ๋ฐ ๊ฑฐ์ ˆํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  2. ๊ณต์œ ํด๋” ์„ค์ • ๋ฐ ํ•ด์ œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

5/15 ์ˆ˜์ •์‚ฌํ•ญ

  1. ํŒ€ ๊ด€๋ จ API๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. API๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    1. ์ƒˆ๋กœ์šด ํŒ€์„ ์ƒ์„ฑํ•˜๊ณ , ์ „์ฒด ํŒ€์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    2. ํŒ€ id๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ํŒ€์˜ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ํŒ€์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ(ํŒ€์žฅ๋งŒ), ํŒ€ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํŒ€์žฅ๋งŒ).
    3. ์ƒˆ๋กœ์šด ํŒ€์›์„ ์ดˆ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํŒ€์žฅ๋งŒ). ์ถ”ํ›„์— ํŒ€์›์—๊ฒŒ ์ดˆ๋Œ€๊ถŒํ•œ์„ ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์„ ์ดˆ๋Œ€ํ•œ ํŒ€๋“ค์˜ ์ด๋ฆ„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ์ดˆ๋Œ€๋ฅผ ์ˆ˜๋ฝํ•˜์—ฌ ํŒ€์— ๋“ค์–ด๊ฐ€๋Š” ๊ธฐ๋Šฅ์€ ๋ฏธ๊ตฌํ˜„ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
    4. ๊ฐ ํŒ€์›๋“ค์€ ๊ณต์œ ํด๋”๋ฅผ ์„ค์ •ํ•˜๊ณ  ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฏธ๊ตฌํ˜„ ์ƒํƒœ์ด๋ฉฐ ๋””๋ ‰ํ† ๋ฆฌ ๋ชจ๋ธ์ด ๋งŒ๋“ค์–ด์ง€๋Š” ๋Œ€๋กœ ๊ตฌํ˜„ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

5/14 ์ˆ˜์ •์‚ฌํ•ญ

  1. ๋™๋ช…์ด์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. User ๋ชจ๋ธ์— ๋‹‰๋„ค์ž„ ํ•„๋“œ๊ฐ€ ์ƒˆ๋กœ ์ƒ๊ฒผ์œผ๋ฉฐ, ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ํ•  ๋–„๋Š” ๋‹‰๋„ค์ž„์— ์ด๋ฆ„์„, id์—๋Š” ํ•ด๋‹น ์†Œ์…œ ์„œ๋น„์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” API์—์„œ ๋ฐ›์•„์˜จ id๊ฐ’์„ ์ €์žฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” social๋กœ ํ†ตํ•ฉ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” 15์ž ์ด์ƒ์˜ ์•„์ด๋””๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์†Œ์…œ ๋กœ๊ทธ์ธ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ์•„์ด๋””์™€ ์ค‘๋ณต๋  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค(์†Œ์…œ ๋กœ๊ทธ์ธ ์•„์ด๋””๋Š” 15์ž๋ณด๋‹ค ๊น๋‹ˆ๋‹ค.).

  2. ๋กœ๊ทธ์ธ ํ•„๋“œ์— ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ๋กœ๊ทธ์ธ์„ ์ง„ํ–‰ํ•  ๋•Œ๋Š” ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ๊ธ€์ž ์ˆ˜๋ฅผ 8~15์ž๋กœ ์ œํ•œํ•˜๊ณ , ์˜์–ด, ์ˆซ์ž๋ฅผ ํฌํ•จํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

  3. ์†Œ์…œ๋กœ๊ทธ์ธ์„ ํ–ˆ์„ ๋•Œ ๊ธฐ์กด ๊ฐ€์ž… ํšŒ์› ์ค‘ ๋™์ผํ•œ ์ด๋ฉ”์ผ์„ ์“ฐ๋Š” ํšŒ์›์ด ์žˆ์„ ๊ฒฝ์šฐ, ์ž๋™์œผ๋กœ ๊ณ„์ •์ด ์—ฐ๋™๋˜๋„๋ก ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ํšŒ์› ์ •๋ณด๋Š” ๊ธฐ์กด์— ๊ฐ€์ž…ํ–ˆ๋˜ ๊ณ„์ • ์ •๋ณด๋ฅผ ๋”ฐ๋ผ๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํŒ€ ๊ตฌ์„ฑ ๊ด€๋ จํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒ๊ฐํ•ด๋ณผ ์ ๋“ค์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

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

5/13 ์ˆ˜์ •์‚ฌํ•ญ

  1. ๋ฒ„ํŠผ ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋กœ ๋ณด๋‚ธ fetch ๋ช…๋ น์ด ๋๋‚  ๋™์•ˆ, ๋ฒ„ํŠผ์€ ๋กœ๋”ฉ ์ƒํƒœ๊ฐ€ ๋˜์–ด ๋ˆŒ๋ฆฌ์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. fetch ๋ช…๋ น์ด ๋๋‚˜๋ฉด ๋ฒ„ํŠผ์€ ๋‹ค์‹œ ํ™œ์„ฑํ™” ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.
  2. ํŽ˜์ด์Šค๋ถ ๋กœ๊ทธ์ธ ์—ฐ๋™์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„ ๊ณผ์ •์—์„œ GoogleAccount.txt์˜ ๋‚ด์šฉ์ด ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค.(์นดํ†ก๋ฐฉ์— ๋‹ค์‹œ ์˜ฌ๋ ค๋“œ๋ฆด๊ฒŒ์š”) ํŽ˜์ด์Šค๋ถ ์—ฐ๋™ ๊ณผ์ •์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์ œ์ ๋“ค์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
    1. ๋™๋ช…์ด์ธ ๋ฌธ์ œ 1-1. ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ๊ณผ ํŽ˜์ด์Šค๋ถ ๋กœ๊ทธ์ธ์„ ๋™์‹œ์— ์‚ฌ์šฉํ•  ๋•Œ, ์ด ์‚ฌ์šฉ์ž๊ฐ€ ๋™์ผํ•œ ์‚ฌ์šฉ์ž๋ผ๋Š” ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•  ๊ฒƒ์ธ๊ฐ€? 1-2. ์ด๋ฆ„์ด ๊ฐ™์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ ํ•  ๋•Œ, ์ด ์‚ฌ๋žŒ์„ ๋‹ค๋ฅธ ๋™๋ช…์ด์ธ๋“ค๊ณผ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•  ๊ฒƒ์ธ๊ฐ€? -> ๋™๋ช…์ด์ธ ์‚ฌ์šฉ์ž๋ฅผ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์•ˆ์ด ํ•„์š”ํ•จ.

    2. ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ๊ณผ ํŽ˜์ด์Šค๋ถ ๋กœ๊ทธ์ธ์„ ๋™์‹œ์— ์‚ฌ์šฉํ•  ๋•Œ, ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์–ด๋–ป๊ฒŒ ์•Œ์•„๋‚ด์–ด ๋กœ๊ทธ์ธ์„ ํ•ด์•ผํ• ๊นŒ? -> ๊ธฐ์กด ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์€ ๊ตฌ๊ธ€ API์—์„œ ๋ณด๋‚ด์ฃผ๋Š” id๋ฅผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ํŽ˜์ด์Šค๋ถ์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๋Š”๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. User ๋ชจ๋ธ์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•Œ์•„๋‚ด์–ด ๋กœ๊ทธ์ธํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ƒ๊ฐํ•ด๋ดค์ง€๋งŒ, ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์•”ํ˜ธํ™”๋˜์–ด์žˆ์–ด django ๋‚ด์—์„œ๋„ ํ™•์ธ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ผ๋‹จ ๋ชจ๋“  ์†Œ์…œ ๋กœ๊ทธ์ธ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ 'social' ๋กœ ์„ค์ •ํ•˜์—ฌ ์ž„์‹œ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์ง€๋งŒ, ๋กœ๊ทธ์ธ ์ฐฝ์— ์ด๋ฆ„๊ณผ social๋งŒ ์ž…๋ ฅํ•ด๋„ ๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ•ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฐฉ์•ˆ์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. (๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ 2๊ฐœ ์ €์žฅํ•œ๋‹ค๋˜๊ฐ€, ์ƒˆ๋กœ์šด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋˜๊ฐ€)

5/12 ์ˆ˜์ •์‚ฌํ•ญ

์•„์ด๋””/๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ ๊ตฌํ˜„์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์ œ์ ๋“ค์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ์ด๋ฉ”์ผ ์žฌ์ „์†ก์ด๋‚˜ ํšŒ์›๊ฐ€์ž…, ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ ์ˆ˜ํ–‰ ์‹œ ์„œ๋ฒ„์—์„œ fetchํ•  ๋™์•ˆ ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฌ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. fetchํ•˜๋Š” ๋™์•ˆ์—๋Š” ๋ฒ„ํŠผ์ด ๋น„ํ™œ์„ฑํ™”๋˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ์•ˆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. (๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ๋ผ๋˜๊ฐ€)
  2. ์•„์ด๋”” ์ฐพ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ๊ฐ„ํ—์ ์œผ๋กœ ํŽ˜์ด์ง€๊ฐ€ ๋‹ค์šด๋˜๋Š” ํ˜„์ƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

5/8 ์ˆ˜์ •์‚ฌํ•ญ

์•„์ด๋””/๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ์— ์‚ฌ์šฉํ•  API๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. api/forgot์œผ๋กœ POST ๋ช…๋ น์„ ๋ณด๋‚ด๋ฉด ID๋‚˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์ฃผ์„ธ์š”. {'IDorPassword' : 'id' ๋˜๋Š” 'password', username : ์‚ฌ์šฉ์ž ๋‹‰๋„ค์ž„(๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ์„ ๋•Œ๋งŒ, ID ์ฐพ์„๋• ๋นˆ์นธ์œผ๋กœ), email : ์‚ฌ์šฉ์ž ์ด๋ฉ”์ผ} ์•„์ด๋”” ์ฐพ๊ธฐ๋Š” response์˜ idํ•„๋“œ์—์„œ ๊บผ๋‚ด์“ฐ๋ฉด ๋˜๊ณ , ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ๋Š” ์ด๋ฉ”์ผ์ฃผ์†Œ๋กœ ์ž„์‹œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ ํžŒ ๋ฉ”์ผ์ด ๋ฐœ์†ก๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋กœ๊ทธ์ธํ•˜์—ฌ ์ถ”ํ›„์— ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฐ”๊พธ๋˜๊ฐ€ ํ•˜๋ฉด ๋ ๊ฒƒ๊ฐ™์Šต๋‹ˆ๋‹ค.

5/7 ์ˆ˜์ •์‚ฌํ•ญ

  1. ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜์—ฌ ๋กœ๊ทธ์ธ ํผ์— ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„ ๊ณผ์ •์—์„œ ๋ช‡ ๊ฐ€์ง€ ์–ด๋ ค์› ๋˜ ์ ๋“ค์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
    1. Django ์„œ๋ฒ„ ๋‚ด๋ถ€์˜ ํŠน์ • view์—์„œ ๋‹ค๋ฅธ view๋กœ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฌธ์ œ - ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์„ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ ์„œ๋ฒ„์— ๋™์ผํ•œ ์ด๋ฉ”์ผ์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ๊ทธ ์‚ฌ์šฉ์ž๋กœ ๋กœ๊ทธ์ธ์‹œํ‚ค๊ณ , ์•„๋‹ˆ๋ฉด ํšŒ์›๊ฐ€์ž…์‹œํ‚ค๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๊ณ„์ •์ด ์กด์žฌํ•˜๋Š”์ง€ ํŒ์ •ํ•œ ๋’ค login view ๋˜๋Š” registration view๋กœ request๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์ƒˆ๋กญ๊ฒŒ GoogleLoginAPI๋ผ๋Š” view๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค๊ณ , /api/google URL๊ณผ ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ LoginAPI์™€ RegistrationAPI๋ฅผ ์ƒ์†๋ฐ›๊ฒŒ ํ•˜์—ฌ ํŒ์ • ํ›„์— ์ ์ ˆํ•œ view์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    2. ๊ตฌ๊ธ€ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ–ˆ์„ ๋•Œ ๋กœ๊ทธ์•„์›ƒ์„ ์ˆ˜ํ–‰ํ•ด๋„ ๋‹ค์‹œ ๋กœ๊ทธ์ธ์ด ๋˜๋˜ ๋ฌธ์ œ - ๊ธฐ์กด์— ๊ตฌ๊ธ€์—์„œ ์ œ๊ณตํ•˜๋Š” gapi.auth2.render()๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋งŒ๋“ค๋ฉด ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์ด ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ๊ตฌ๊ธ€ ๊ณ„์ • ๋กœ๊ทธ์ธ ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•˜๊ณ , ๊ตฌ๊ธ€๊ณ„์ •์ด ๋กœ๊ทธ์ธ ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ๋กœ๊ทธ์ธ์ด ๋˜๋˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ง์ ‘ custom button์„ ๋งŒ๋“ค๊ณ , onClick ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ๋ Œ๋”๋ง ๋  ๋•Œ๊ฐ€ ์•„๋‹Œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ๋กœ๊ทธ์ธ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด gapi.auth2.getAuthInstance()๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ๊ณ„์ • ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , gapi.auth2.signIn()์„ ํ†ตํ•ด ๊ตฌ๊ธ€ ์„œ๋ฒ„์— ๋กœ๊ทธ์ธ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด googleUser ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„ ์ด ๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ์ธ getAuthResponse๋ฅผ ํ†ตํ•ด access token์„ ๋ฝ‘์•„๋‚ด๊ณ , /api/google๋กœ POST ์š”์ฒญ์„ ๋ณด๋‚ด ์„œ๋ฒ„์—์„œ ์œ ํšจ์„ฑ์„ ํŒ์ •ํ•œ ๋’ค ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

  2. ๋„์ปค ์„œ๋น„์Šค์˜ ํ”„๋กœ์„ธ์Šค ์œ ์ €๊ฐ€ root ๋Œ€์‹  ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด, docker-compose ๋ช…๋ น ๋Œ€์‹  ./udco๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

5/5 ์ˆ˜์ •์‚ฌํ•ญ

  1. ํšŒ์›๊ฐ€์ž… ํผ์˜ ๊ฐ ์ž…๋ ฅ ํ•„๋“œ์˜ ์ž…๋ ฅ๊ฐ’์„ ๊ฒ€์ฆํ•˜๊ณ , ์œ ํšจํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ž…๋ ฅ ํ•„๋“œ ์•„๋ž˜์— ์กฐ๊ฑด์„ ํ‘œ์‹œํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค . signup

  2. ๋ฉ”์ผ ์žฌ์ „์†ก ํŽ˜์ด์ง€ ๋ฐ ์ธ์ฆ ํŽ˜์ด์ง€์™€ ์„œ๋ฒ„๋ฅผ ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

5/4 ์ˆ˜์ •์‚ฌํ•ญ

  1. ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ ํ–ˆ์„ ๋•Œ, ๋กœ๊ทธ์ธ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜๋Š” ํ˜„์ƒ์„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  2. ๋กœ๊ทธ์ธ ํ™•์ธ ํŽ˜์ด์ง€๋ฅผ /๋กœ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํŽ˜์ด์ง€์—์„œ ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž์˜ ์•„์ด๋””๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5/3 ์ˆ˜์ •์‚ฌํ•ญ

  1. ๋ฉ”์ผ ์ธ์ฆ์„ ๋ฐ›์ง€ ์•Š์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ ํ–ˆ์„ ๋•Œ, ๋ฉ”์ผ ์ธ์ฆ์„ ๋ฐ›๊ฒŒ ํ•˜๋Š” ์•ˆ๋‚ด ํŽ˜์ด์ง€๋ฅผ ์ œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ธ์ฆ ๋ฉ”์ผ์„ ๋‹ค์‹œ ์ „์†ก๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. JWT ํ† ํฐ ์ €์žฅ ๋ฐฉ์‹์„ local storage์—์„œ httponly cookie๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ๋ณด์•ˆ์ƒ httponly cookie๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๋” ์•ˆ์ „ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. local storage์— ์ €์žฅํ•˜๋ฉด xss๊ณต๊ฒฉ์— ์ทจ์•ฝํ•ด์ง€๊ณ , httponly cookie์— ์ €์žฅํ•˜๋ฉด xss ๊ณต๊ฒฉ์€ ๋ง‰์„ ์ˆ˜ ์žˆ์ง€๋งŒ csrf ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•ด์ง‘๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ csrf ๊ณต๊ฒฉ์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋” ๋ง‰๊ธฐ ์‰ฌ์šฐ๋ฏ€๋กœ, ์ƒ์šฉ ์„œ๋น„์Šค์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ httponly cookie์— JWT ํ† ํฐ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

URL ์‚ฌ์šฉ๋ฒ•

๋ฆฌ์•กํŠธ ํผ

URL ์„ค๋ช…
/ ๋ฉ”์ธ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์ €์žฅ์ค‘์ธ ํŒŒ์ผ๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
/login ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€, ๋กœ๊ทธ์ธ ์„ฑ๊ณต ์‹œ /login-test๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฉ๋‹ˆ๋‹ค.
/signup ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.
/mail-resend ๋ฉ”์ผ์ธ์ฆ์„ ๋ฐ›์ง€ ์•Š์€ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ–ˆ์„ ๋•Œ, ์ด ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€์—์„œ ๊ฐ€์ž… ์‹œ์— ๋“ฑ๋กํ•œ ์ด๋ฉ”์ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , ์ธ์ฆ ๋ฉ”์ผ์„ ๋‹ค์‹œ ์ „์†ก๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
/mail-validation/* ๋“ฑ๋กํ•œ ์ด๋ฉ”์ผ์— ์จ์žˆ๋Š” URL ํ†ตํ•ด ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์ผ ์ธ์ฆ ๊ด€๋ จ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.
/forgot-id ์•„์ด๋”” ์ฐพ๊ธฐ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. ๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•œ ๋’ค ํ™•์ธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด /display-id ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฉ๋‹ˆ๋‹ค.
/display-id ์•„์ด๋”” ์ฐพ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.
/forgot-password ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. ์•„์ด๋””์™€ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ด๋ฉ”์ผ ์ฃผ์†Œ๋กœ ์ž„์‹œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. /return-to-login ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฉ๋‹ˆ๋‹ค.
/return-to-login ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ์ด ์žˆ๋Š” ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.
/team ํŒ€ ๊ด€๋ จ ์ž‘์—…๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค.
/profile ์‚ฌ์šฉ์ž์˜ ํ”„๋กœํ•„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.
/sharing ๊ณต์œ  ํด๋”๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ตฌํ˜„์ค‘์ž…๋‹ˆ๋‹ค.
/trash ํœด์ง€ํ†ต์— ๋“ค์–ด๊ฐ„ ํŒŒ์ผ๋“ค์„ ํ™•์ธํ•˜๊ณ  ๋ณต์›ํ•˜๊ฑฐ๋‚˜ ์™„์ „ํžˆ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
/favorite ์ฆ๊ฒจ์ฐพ๊ธฐ ์„ค์ •ํ•œ ํŒŒ์ผ๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

API

127.0.0.1/api ๋’ค์— ์•„๋ž˜์˜ URL์„ ๋ถ™์ด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๊ณ„์ • ๊ด€๋ จ API

POST GET DELETE PUT
/users - ์ „์ฒด ์‚ฌ์šฉ์ž ์ถœ๋ ฅ - -
/user - ํ•ด๋‹น ํšŒ์›์˜ ์ •๋ณด ์ถœ๋ ฅ ํ•ด๋‹น ํšŒ์›์˜ ์ •๋ณด ์ œ๊ฑฐ ํ”„๋กœํ•„ ๋ณ€๊ฒฝ(๋น„๋ฐ€๋ฒˆํ˜ธ, ๋‹‰๋„ค์ž„, ์ „ํ™”๋ฒˆํ˜ธ)
/registration ํšŒ์›๊ฐ€์ž… - - -
/jwt-login ์ผ๋ฐ˜ ๋กœ๊ทธ์ธ - - -
/social-login ์†Œ์…œ ๊ณ„์ • ๋กœ๊ทธ์ธ - - -
/logout ๋กœ๊ทธ์•„์›ƒ - - -
/forgot ์•„์ด๋””/๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ - - -
/send-auth-email ์ธ์ฆ ๋ฉ”์ผ ๋ณด๋‚ด๊ธฐ - - -
/jwt-refresh JWT ํ† ํฐ ์žฌ๋ฐœ๊ธ‰ - - -
/jwt-verify JWT ํ† ํฐ ์œ ํšจ์„ฑ ํ™•์ธ - - -
/active/str:uidb64/str:token - ์ธ์ฆ๋ฉ”์ผ์— ์‚ฌ์šฉํ•˜๋Š” URL - -
/check-password ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ - - -
/check-email ์‚ฌ์šฉ์ž ์ด๋ฉ”์ผ ํ™•์ธ - - -
  • GET /api/user์™€ DELETE /api/user๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DELETE ์š”์ฒญ์˜ body์—๋Š” password(ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ)๊ฐ€ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. PUT ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ํ˜„์žฌ ์‚ฌ์šฉ์ž์˜ ํ”„๋กœํ•„(๋น„๋ฐ€๋ฒˆํ˜ธ, ๋‹‰๋„ค์ž„)์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PUT ์š”์ฒญ์˜ body๋Š” curPassword(ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ), newPassword(๋ฐ”๊ฟ€ ๋น„๋ฐ€๋ฒˆํ˜ธ), nickname(๋‹‰๋„ค์ž„)์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๋ฐ”๊ฟ€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” 8์ž ์ด์ƒ 15์ž ์ดํ•˜์˜ ์˜์–ด ๋Œ€์†Œ๋ฌธ์ž ๋ฐ ์ˆซ์ž, ๋‹‰๋„ค์ž„์€ 2์ž ์ด์ƒ 15์ž ์ดํ•˜์˜ ํ•œ๊ธ€ ๋ฐ ์˜์–ด ๋Œ€์†Œ๋ฌธ์ž, ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์†Œ์…œ ๊ณ„์ •์€ curPassword์™€ newPassword๋ฅผ ๋นˆ์นธ์œผ๋กœ ๋ณด๋‚ด๋ฉด ๋˜๊ณ , ์ผ๋ฐ˜ ๊ณ„์ •์€ curPassword๋Š” ํ•„์ˆ˜, ๋‚˜๋จธ์ง€ ๋‘ ํ•„๋“œ๋Š” ๋ฐ”๊ฟ€ ๋ถ€๋ถ„๋งŒ ๊ฐ’์„ ๋„ฃ๊ณ  ๋ฐ”๊พธ์ง€ ์•Š์„ ๋ถ€๋ถ„์€ ๋นˆ์นธ์œผ๋กœ ํ•ด์„œ ์š”์ฒญ ๋ณด๋‚ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  • POST /api/register ๋Š” HTTP body์— json ํ˜•์‹์œผ๋กœ username, password, email ํ•„๋“œ๋ฅผ ํ•„์ˆ˜๋กœ ๋„˜๊ฒจ์ค˜์•ผ ํ•˜๋ฉฐ, phone_num ํ•„๋“œ๋Š” ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

  • POST /api/jwt-login์€ HTTP body์— json ํ˜•์‹์œผ๋กœ username, password๋ฅผ ๋„˜๊ฒจ์ค˜์•ผ ํ•˜๋ฉฐ, ์„œ๋ฒ„๋Š” response๋กœ HttpOnly ์†์„ฑ์„ ์ง€๋‹Œ ์ฟ ํ‚ค์— JWT ํ† ํฐ์„ ๋‹ด์•„์„œ ๋ณด๋‚ด์ค๋‹ˆ๋‹ค. ํ•œ๋ฒˆ ๋กœ๊ทธ์ธํ–ˆ์„ ๋•Œ ํ† ํฐ์˜ ์œ ํšจ์‹œ๊ฐ„์€ 30๋ถ„์ž…๋‹ˆ๋‹ค.

  • POST /api/jwt-refresh๋Š” HTTP body์— json ํ˜•์‹์œผ๋กœ token : <๋ฐœ๊ธ‰๋ฐ›์€ ํ† ํฐ>์„ ๋„ฃ์–ด์ฃผ๋ฉด ์œ ํšจ ์‹œ๊ฐ„์ด ๊ฐฑ์‹ ๋œ ์ƒˆ๋กœ์šด ํ† ํฐ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐœ๊ธ‰๋ฐ›์€ ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜๋ฉด ์ƒˆ๋กœ์šด ํ† ํฐ์„ ๋ฐ›์„ ์ˆ˜ ์—†์œผ๋‹ˆ, ๋งŒ๋ฃŒ ๋˜๊ธฐ ์ „์— ์ด URL์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค(ํŽ˜์ด์ง€์— ๋ฒ„ํŠผ์„ ๋”ฐ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ ํ•˜๋ฉด ๋ ๊ฒƒ๊ฐ™์•„์š”).

  • POST /api/jwt-verify๋Š” ํ˜„์žฌ ํด๋ผ์ด์–ธํŠธ ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” HttpOnly ์ฟ ํ‚ค ์•ˆ์— ์žˆ๋Š” jwt ํ† ํฐ์˜ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • POST /api/logout์„ ํ†ตํ•ด ๋กœ๊ทธ์•„์›ƒ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํด๋ผ์ด์–ธํŠธ ๋ธŒ๋ผ์šฐ์ €์—์„œ JWT ํ† ํฐ์ด ์ €์žฅ๋œ ์ฟ ํ‚ค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

  • /active/str:uidb64/str:token์€ ์ธ์ฆ๋ฉ”์ผ์šฉ URL๋กœ, ์ด๋ฉ”์ผ ์ธ์ฆ์—๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • /check-password ๋ฐ /check-email์€ ํ”„๋กœํ•„ ํ™•์ธ์„ ์œ„ํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋‚˜ ์ด๋ฉ”์ผ์„ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์‚ฌ์ดํŠธ ๊ณ„์ •์šฉ, ์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ์†Œ์…œ ๊ณ„์ • ์šฉ์ž…๋‹ˆ๋‹ค. ๊ฐ๊ฐ password, email ํ•„๋“œ์— ๊ฐ’์„ ๋„ฃ๊ณ  POST ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํŒ€ ๊ด€๋ จ API

POST GET DELETE PUT
/team ์ƒˆ๋กœ์šด ํŒ€ ์ƒ์„ฑ ์ „์ฒด ํŒ€ ์ •๋ณด ํ™•์ธ - -
/team-management/<ํŒ€ id> - ํŒ€ ์ •๋ณด ์ถœ๋ ฅ(ํŒ€๋ช…, ํŒ€์žฅ, ํŒ€์›๋ชฉ๋ก, ๊ณต์œ ํด๋” ๋ชฉ๋ก) ํŒ€ ์‚ญ์ œ(ํŒ€์žฅ๋งŒ ๊ฐ€๋Šฅ) ํŒ€ ์ด๋ฆ„ ๋ณ€๊ฒฝ
/team/<ํŒ€ id>/invitation - - - ์ƒˆ๋กœ์šด ํŒ€์› ์ดˆ๋Œ€ (ํŒ€์žฅ๋งŒ ๊ฐ€๋Šฅ)
/team/<ํŒ€ id>/acceptance - - ์ดˆ๋Œ€ ๊ฑฐ๋ถ€ ์ดˆ๋Œ€ ์ˆ˜๋ฝ
/team/<ํŒ€ id>/secession - - - ํŒ€์—์„œ ํƒˆํ‡ด
/team/<ํŒ€ id>/sharing ๊ณต์œ ํด๋” ์„ค์ • - ๊ณต์œ ํด๋” ํ•ด์ œ -
/join-team - ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ ์†ํ•œ ํŒ€ ๋ชฉ๋ก ์ถœ๋ ฅ - -
/serach-user/<ํŒ€ id>/<๊ฒ€์ƒ‰๋‹จ์–ด> - ๊ฒ€์ƒ‰ ๋‹จ์–ด์— ๋‹‰๋„ค์ž„์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ pk, ๋‹‰๋„ค์ž„, ์ด๋ฉ”์ผ ๋ฐ˜ํ™˜ - -
  • /team์œผ๋กœ์˜ POST ์š”์ฒญ์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ํŒ€์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, GET ์š”์ฒญ์„ ํ†ตํ•ด ํ˜„์žฌ ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ์ „์ฒด ํŒ€์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. POST์š”์ฒญ์˜ body์—๋Š” teamName(ํŒ€ ์ด๋ฆ„), teamLeader(ํŒ€ ๋งŒ๋“ ์‚ฌ๋žŒ)์ด ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • /team/<ํŒ€ id>์œผ๋กœ์˜ GET ์š”์ฒญ์„ ํ†ตํ•ด ํ•ด๋‹น ํŒ€์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, DELETE ์š”์ฒญ์„ ํ†ตํ•ด ํ•ด๋‹น ํŒ€์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • /team/<ํŒ€ id>/invitation์œผ๋กœ์˜ PUT ์š”์ฒญ์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž๋ฅผ ํŒ€์œผ๋กœ ๋“ค์–ด์˜ค๋„๋ก ์ดˆ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๋Œ€๋ฐ›์€ ์‚ฌ์šฉ์ž๋Š” ์•„๋ž˜์˜ /team/<ํŒ€ id>/acceptance URL์„ ํ†ตํ•˜์—ฌ ์ดˆ๋Œ€๋ฅผ ์ˆ˜๋ฝํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • /team/<ํŒ€ id>/acceptance์œผ๋กœ์˜ PUT ์š”์ฒญ์„ ํ†ตํ•ด ์ดˆ๋Œ€๋ฅผ ์ˆ˜๋ฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, DELETE ์š”์ฒญ์„ ํ†ตํ•ด ์ดˆ๋Œ€๋ฅผ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • /team/<ํŒ€ id>/secession์œผ๋กœ์˜ PUT ์š”์ฒญ์„ ํ†ตํ•ด ์†Œ์†๋œ ํŒ€์—์„œ ํƒˆํ‡ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • /team/<ํŒ€ id>/sharing์œผ๋กœ์˜ POST ์š”์ฒญ์„ ํ†ตํ•ด ๊ณต์œ ํด๋”๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, DELETE ์š”์ฒญ์„ ํ†ตํ•ด ์„ค์ •๋œ ๊ณต์œ ํด๋”๋ฅผ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. POST ์š”์ฒญ body์—๋Š” ๊ณต์œ  ํด๋”๋กœ ์„ค์ •ํ•  ๋””๋ ‰ํ† ๋ฆฌ์˜ ID๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • /team/join-team์œผ๋กœ์˜ GET ์š”์ฒญ์„ ํ†ตํ•ด ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ ์†ํ•œ ํŒ€ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • /search-user/<ํŒ€ id>/<๊ฒ€์ƒ‰๋‹จ์–ด>๋กœ์˜ GET ์š”์ฒญ์„ ํ†ตํ•ด ๊ฒ€์ƒ‰๋‹จ์–ด๊ฐ€ ๋‹‰๋„ค์ž„์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ pk, ๋‹‰๋„ค์ž„, ์ด๋ฉ”์ผ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํŒ€์žฅ ๋ฐ ์ด๋ฏธ ํŒ€์— ์†ํ•ด์žˆ๋Š” ์‚ฌ์šฉ์ž๋Š” ๊ฒ€์ƒ‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ ๊ด€๋ จ API

POST GET DELETE PUT
/file/ - ํ˜„์žฌ ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŠน์ • ํŒŒ์ผ์˜ ์ •๋ณด ์ถœ๋ ฅ ํŒŒ์ผ ์‚ญ์ œ ํŒŒ์ผ ์˜ต์…˜ ๋ณ€๊ฒฝ
/file-list - ํ˜„์žฌ ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ „์ฒด ํŒŒ์ผ ์ •๋ณด ์ถœ๋ ฅ - -
/upload/flow ํŒŒ์ผ ์—…๋กœ๋“œ ๋งํฌ ์ƒ์„ฑ - - -
/upload/flow/ chunk ์ „์†ก ํŠน์ • chunk๋ฅผ ์ด๋ฏธ ์ „์†ก๋ฐ›์•˜๋Š”์ง€ ํ™•์ธ - -
/download ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ - - -
/mkdir ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ - - -
/directory/ - ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ ํ•˜์œ„ ํด๋” ๋ฐ ํŒŒ์ผ ์ •๋ณด ์ถœ๋ ฅ ๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œ ๋””๋ ‰ํ† ๋ฆฌ ์˜ต์…˜ ๋ณ€๊ฒฝ
/thumbnail/ ์ธ๋„ค์ผ ์ƒ์„ฑ - - -
/partial/ - - ํŠน์ • partial upload file ์ œ๊ฑฐ. ์—…๋กœ๋“œ๋ฅผ ์ค‘๋‹จํ•  ๋•Œ ์‚ฌ์šฉ -
/multi-entry - - ํŒŒ์ผ์ด๋‚˜ ํด๋”๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์„ ํƒํ•˜์—ฌ ํ•œ๋ฒˆ์— ์‚ญ์ œ -
/favorite ์ฆ๊ฒจ์ฐพ๊ธฐํ•œ ํŒŒ์ผ ๋ชฉ๋ก ํ™•์ธ - - -
/recycle - ์‚ฌ์šฉ์ž์˜ ํœด์ง€ํ†ต ๋‚ด์šฉ ์ถœ๋ ฅ ํœด์ง€ํ†ต ๋น„์šฐ๊ธฐ -
/recover ํŒŒ์ผ ๋ณต์› - - -
/replacement - - - ํŒŒ์ผ์ด๋‚˜ ํด๋” ๊ฒฝ๋กœ ๋ณ€๊ฒฝ
/preview - ์ด๋ฏธ์ง€ ๋ฐ ๋™์˜์ƒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์— ์‚ฌ์šฉํ•  ํŒŒ์ผ ๊ฒฝ๋กœ ๋ฐ˜ํ™˜ - -
/search/str:pk/str:keyword - ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•œ ํŒŒ์ผ ๋ฐ ํด๋” ๊ฒ€์ƒ‰ - -
/sharing/(?P[0-9a-z-]{36} - - ๊ณต์œ  ์„ค์ • ํ•ด์ œ ๊ณต์œ  ์„ค์ •
  • /file/

    • GET ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด, ํ˜„์žฌ ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŠน์ • ํŒŒ์ผ์˜ ์ •๋ณด๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • DELETE ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ํ•ด๋‹น ํŒŒ์ผ์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • PUT ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ํ•ด๋‹น ํŒŒ์ผ์˜ ์˜ต์…˜์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์€ ํŒŒ์ผ ์ด๋ฆ„(name ํ•„๋“œ)๊ณผ ์ฆ๊ฒจ์ฐพ๊ธฐ ์—ฌ๋ถ€(favorite ํ•„๋“œ)์ž…๋‹ˆ๋‹ค.
  • /file-list๋กœ GET ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ํ˜„์žฌ ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ „์ฒด ํŒŒ์ผ ์ •๋ณด๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • /upload/flow๋Š” ์—…๋กœ๋“œ ์‹œ์ž‘ ์ „์— ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด์–ด ์‚ฌ์šฉ์ž์—๊ฒŒ ํ• ๋‹น๋œ ๊ณต๊ฐ„์— ํŒŒ์ผ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. POST ์š”์ฒญ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • /upload/flow/๋Š” chunk๋ฅผ ์ „์†กํ•˜๊ฑฐ๋‚˜ ํŠน์ • chunk๋ฅผ ์ด๋ฏธ ์ „์†ก๋ฐ›์•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” flow.js์—์„œ ๋‹ด๋‹นํ•˜๋ฏ€๋กœ ์ง์ ‘ ์š”์ฒญ์„ ๋ณด๋‚ผ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

  • /download/๋กœ GET ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ๊ทธ ํŒŒ์ผ ID๋ฅผ ๊ฐ€์ง„ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • /mkdir์— POST ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์œ ํ•œ ์ƒˆ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. HTTP body๋Š” ๋‹ค์Œ ํ•„๋“œ๋ฅผ ํฌํ•จํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค:

    • parent: ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋  ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ. ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฒฝ๋กœ๋‚˜(/, /parent_dir ๋“ฑ) ID(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) ํ˜•์‹์œผ๋กœ ์ง€์ • ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    • name: ์ƒˆ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„. ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— ๊ฐ™์€ ์ด๋ฆ„์˜ ๋””๋ ‰ํ† ๋ฆฌ๋‚˜ ํŒŒ์ผ์ด ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • /directory/

    • GET ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ํ•ด๋‹น id๋ฅผ ๊ฐ€์ง„ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜๋˜๋Š” ์ •๋ณด์˜ ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

      • 'pk`: ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์˜ ID.
      • 'owner': ๋””๋ ‰ํ† ๋ฆฌ ์†Œ์œ ์ž์˜ ID.
      • 'name': ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„.
      • 'parent': ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์˜ ID.
      • subdirectories: ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์„ ํ‚ค, id๋ฅผ ๊ฐ’์œผ๋กœ ํ•˜๋Š” ๋”•์…”๋„ˆ๋ฆฌ.
      • files: ๋””๋ ‰ํ† ๋ฆฌ์— ๋“  ํŒŒ์ผ์˜ ๋ชฉ๋ก; ์ด๋ฆ„์„ ํ‚ค๋กœ ํ•˜๋ฉฐ, /file/ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ’์œผ๋กœ ํ•˜๋Š” ๋”•์…”๋„ˆ๋ฆฌ.
      • partial_uploads: ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์— ์ง„ํ–‰์ค‘์ธ ์—…๋กœ๋“œ์˜ ๋ชฉ๋ก; ์ด๋ฆ„์„ ํ‚ค๋กœ ํ•˜๋ฉฐ, id๋ฅผ ๊ฐ’์œผ๋กœ ํ•˜๋Š” ๋”•์…”๋„ˆ๋ฆฌ.

      ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

      {
        "pk": "12f79f24-5521-4274-9de4-a77eda8a1fa5",
        "owner": "aca27a1e-c940-4f91-b490-92a404209848",
        "name": "Pictures",
        "parent": "86882148-dba7-46ad-814b-ce6389a1c1d0",
        "subdirectories": {
          "2020-03": "5de3a6a2-58ea-4385-9d6f-6d898e610279",
          "2020-04": "88063b0f-7cf6-4829-b949-0353c725ca81"
        },
        "files": {
          "wallpaper.png": {
            "pk": "f840d10f-1149-4919-ba4b-895a9ca5df98",
            "size": 253952,
            "uploaded_at": "2020-01-29T12:34:56.000000Z",
            "has_thumbnail": true
          }
        },
        "partial_uploads": {
          "cat.jpeg": "df66ea02-61bf-405f-85ea-94ee497089d5"
        }
      }
    • DELETE ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

    • PUT ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์˜ ์˜ต์…˜์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์€ ์ด๋ฆ„(name ํ•„๋“œ), ์ฆ๊ฒจ์ฐพ๊ธฐ ์—ฌ๋ถ€(favorite ํ•„๋“œ)์ž…๋‹ˆ๋‹ค.

  • /favorite์— GET ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ํ˜„ ์‚ฌ์šฉ์ž๊ฐ€ ์ฆ๊ฒจ์ฐพ๊ธฐํ•œ ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋””๋ ‰ํ† ๋ฆฌ์™€ ํŒŒ์ผ์˜ ํ˜•์‹์€ /directory/ ์—”๋“œํฌ์ธํŠธ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • /recycle

    • GET ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์‚ฌ์šฉ์ž์˜ ํœด์ง€ํ†ต ๋‚ด์šฉ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์€ directories์™€ files ํ‚ค๋ฅผ ๊ฐ€์ง€๋Š” ๋”•์…”๋„ˆ๋ฆฌ์ด๋ฉฐ, ๊ฐ ํ‚ค์— ๋Œ€ํ•œ ๊ฐ’์€ ์ด๋ฆ„์„ ํ‚ค, ๊ทธ ์ด๋ฆ„์„ ๊ฐ€์ง€๋Š” ๋””๋ ‰ํ† ๋ฆฌ/ํŒŒ์ผ์˜ ID ๋ชฉ๋ก์„ ๊ฐ’์œผ๋กœ ํ•˜๋Š” ๋”•์…”๋„ˆ๋ฆฌ์ž…๋‹ˆ๋‹ค.
    • DELETE ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์‚ฌ์šฉ์ž์˜ ํœด์ง€ํ†ต์„ ๋น„์›๋‹ˆ๋‹ค.
  • /recover์— POST ๋ช…๋ น์„ ๋ณด๋‚ด๋ฉด ํœด์ง€ํ†ต์˜ ํŒŒ์ผ์„ ๋ณต๊ตฌํ•ฉ๋‹ˆ๋‹ค. POST body๋Š” JSON ํ˜•์‹์˜ ๋ฆฌ์ŠคํŠธ์—ฌ์•ผ ํ•˜๋ฉฐ, ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ ๊ฐ’์€ ๋ณต๊ตฌํ•˜๋ ค๋Š” ๋””๋ ‰ํ† ๋ฆฌ/ํŒŒ์ผ์˜ ID, ๋˜๋Š” ID์™€ ๋ณต๊ตฌ ํ›„ ๋””๋ ‰ํ† ๋ฆฌ/ํŒŒ์ผ์ด ์œ„์น˜ํ•  ๋””๋ ‰ํ† ๋ฆฌ์˜ ID ์Œ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

    [
      "SOME_UUID",
      ["ANOTHER_UUID", "DIRECTORY"]
    ]

์‚ฌ์šฉ์˜ˆ

  1. ์ „์ฒด ์œ ์ € ๋ชฉ๋ก ์ถœ๋ ฅ 1  ์ „์ฒด ์œ ์ € ๋ชฉ๋ก ์ถœ๋ ฅ

  2. ํšŒ์›๊ฐ€์ž… 2  ํšŒ์› ๊ฐ€์ž…

  3. ๋ฉ”์ผ ์ธ์ฆ ํ•˜์ง€ ์•Š๊ณ  ๋กœ๊ทธ์ธ ์‹œ๋„ํ•  ๋•Œ 3  ๋ฉ”์ผ ์ธ์ฆ ๋ฏธ์ˆ˜ํ–‰

  4. ์ธ์ฆ ๋ฉ”์ผ 4  ์ธ์ฆ ๋ฉ”์ผ

  5. ๋ฉ”์ผ์— ์žˆ๋Š” URL์„ ํ†ตํ•œ ๊ณ„์ • ํ™œ์„ฑํ™” 5  ๋ฉ”์ผ ํ™œ์„ฑํ™”

  6. ๋กœ๊ทธ์ธ ์„ฑ๊ณต 6  ๋กœ๊ทธ์ธ ์„ฑ๊ณต

  7. ํ”„๋กœํ•„ ๋ณด๊ธฐ ํ”„๋กœํ•„ ๋ณด๊ธฐ

  8. ํšŒ์› ํƒˆํ‡ด ํšŒ์› ํƒˆํ‡ด

About

Capstone project for UOS CS department, 2020

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •