Skip to content

Latest commit

ย 

History

History
291 lines (232 loc) ยท 12.2 KB

README.md

File metadata and controls

291 lines (232 loc) ยท 12.2 KB

22-5-team5-Server

๐Ÿš€ Wastory

Tistory ํด๋ก  ์ฝ”๋”ฉ ํ”„๋กœ์ ํŠธ - Wastory์ž…๋‹ˆ๋‹ค.


๐Ÿ‘จโ€๐Ÿ’ป ํ”„๋กœ์ ํŠธ ์ฐธ์—ฌ์ž

๐Ÿ”น ๋ฐฑ์—”๋“œ (Backend)

  • ๋ฐ•์ˆ˜์ธ - GitHub ํ”„๋กœํ•„
    • ๋„๋ฉ”์ธ ์—ฐ๊ฒฐ ํ›„ https ์„ค์ •
    • EC2 ์„œ๋ฒ„ ๋ฐ DB ๊ด€๋ฆฌ(์—…๋ฐ์ดํŠธ ๋ฐ ์œ ์ง€๋ณด์ˆ˜)
    • blog Entity ์„ธ๋ถ€ ์„ค๊ณ„ ๋ฐ API ๊ตฌํ˜„
    • ๋ธ”๋กœ๊ทธ ๋‚ด ๊ธ€(Article) ๊ณต๊ฐœ/๋ณดํ˜ธ/๋น„๊ณต๊ฐœ ์„ค์ • ๊ธฐ๋Šฅ API ๊ตฌํ˜„
    • ๋ธ”๋กœ๊ทธ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ API ๊ตฌํ˜„
    • subscription Entity ์„ค๊ณ„ ๋ฐ API ๊ตฌํ˜„
  • ๋ฐ•์ƒํ˜„ - GitHub ํ”„๋กœํ•„
    • ๋ธ”๋กœ๊ทธ ๋‚ด ๊ธ€(Article) Entity ์„ธ๋ถ€ ์„ค๊ณ„ ๋ฐ API ๊ตฌํ˜„
    • ๊ธ€ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ API ๊ตฌํ˜„
    • AWS S3 image ๊ด€๋ฆฌ ๋ฐ presigned URL ์„ ํ†ตํ•œ ๋ฐฐํฌ
    • Image Entity ๋ฅผ ์ด์šฉํ•ด file_URL ๋ฏธ์‚ฌ์šฉ ์‹œ S3 ์ž๋™ ์‚ญ์ œ ๊ตฌํ˜„
    • like Entity ์„ค๊ณ„ ๋ฐ API ๊ตฌํ˜„
    • hometopic - Article ์—ฐ๊ฒฐ ๋ฐ, hometopic ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์„ค๊ณ„
  • ๊ถŒ์žฌ์˜ - GitHub ํ”„๋กœํ•„
    • ์นดํ…Œ๊ณ ๋ฆฌ(category) Entity ์„ธ๋ถ€ ์„ค๊ณ„ ๋ฐ ๊ด€๋ จ api ๊ตฌํ˜„
    • ๊ธ€ ๋ฐ ๋ฐฉ๋ช…๋ก comment Entity ์„ธ๋ถ€ ์„ค๊ณ„ ๋ฐ ๊ด€๋ จ api ๊ตฌํ˜„
    • ์ž„์‹œ์ €์žฅ ๊ธ€ draft Entity ์„ธ๋ถ€ ์„ค๊ณ„ ๋ฐ ๊ด€๋ จ api ๊ตฌํ˜„
    • hometopic ๋ชจ๋ธ ์„ค๊ณ„
  • ์ž„์ˆ˜ํ˜ธ - GitHub ํ”„๋กœํ•„
    • ์†Œ์…œ ๋กœ๊ทธ์ธ ๋ฐ ์ด๋ฉ”์ผ ์ธ์ฆ ๊ตฌํ˜„
    • ์œ ์ € ๋ฐ ์•Œ๋ฆผ api ๊ตฌํ˜„

๐Ÿ”น ํ”„๋ก ํŠธ์—”๋“œ (Frontend)

  • ์„œ์ข…ํ™˜ - GitHub ํ”„๋กœํ•„
    • ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž…, ๊ณ„์ •๊ด€๋ฆฌ, ๊ธ€์ž‘์„ฑ(RichTextKit ์ ์šฉ)
  • ์‹ ์ค‘์› - GitHub ํ”„๋กœํ•„
    • ๋ฉ”์ธํƒญ, ๊ธ€/๋ธ”๋กœ๊ทธ ์กฐํšŒ, ๋Œ“๊ธ€/๋ฐฉ๋ช…๋ก, View๊ฐ„ navigation

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

๐Ÿ”น ๋ฐฑ์—”๋“œ (Backend)

FastAPI MySQL Python

fastapi = "^0.115.0"  # Python ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ์›น ํ”„๋ ˆ์ž„์›Œํฌ
sqlalchemy = "^2.0.35"  # ORM (Object Relational Mapper)
aiomysql = "^0.2.0"  # MySQL ๋น„๋™๊ธฐ ๋“œ๋ผ์ด๋ฒ„
alembic = "^1.13.3"  # ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋„๊ตฌ
pyjwt = "^2.10.1"  # JWT (JSON Web Token) ์ธ์ฆ ์ฒ˜๋ฆฌ
pydantic-settings = "^2.5.2"  # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ฐ ์„ค์ • ๊ด€๋ฆฌ
redis = "^5.2.1"  # Redis ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๐Ÿ”น ํ”„๋ก ํŠธ์—”๋“œ (Frontend)

๐Ÿ“ฑ ํ”Œ๋žซํผ

  • iOS (์ง€์› ๋ฒ„์ „: iOS 18.0 ์ด์ƒ)

๐Ÿ’ป ๊ฐœ๋ฐœ ์–ธ์–ด

Swift

๐Ÿ›  ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • UI: SwiftUI / UIKit
  • ๋„คํŠธ์›Œํฌ: Alamofire
  • ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ: Kingfisher
  • ๋ฆฌ์น˜ ํ…์ŠคํŠธ: RichTextKit

๐Ÿ”„ ์›Œํฌํ”Œ๋กœ์šฐ

์›Œํฌํ”Œ๋กœ

๐ŸŽจ ํ”„๋กœ์ ํŠธ ๋ทฐ

๐Ÿ“Œ Wastory ํ”„๋กœ์ ํŠธ์˜ ์ฃผ์š” ํ™”๋ฉด ๊ตฌ์„ฑ์ž…๋‹ˆ๋‹ค.

๐Ÿ  1. ๋žœ๋”ฉ ํŽ˜์ด์ง€

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ดˆ๊ธฐ์— ๋“ค์–ด๊ฐ€๋Š” ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.
  • ์นด์นด์˜คํ†ก์„ ํ†ตํ•œ ์†Œ์…œ ๋กœ๊ทธ์ธ / ์ด๋ฉ”์ผ ์ธ์ฆ์„ ํ†ตํ•œ ๋กœ๊ทธ์ธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

แ„‰แ…ตแ„Œแ…กแ†จ

๐Ÿ”‘ 2. ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€

- ์นด์นด์˜คํ†ก ์†Œ์…œ ๋กœ๊ทธ์ธ

  • ์นด์นด์˜คํ†ก ์—ฐ๊ฒฐ์„ ํ†ตํ•œ ์†Œ์…œ ๋กœ๊ทธ์ธ์ด ์ง„ํ–‰
  • ์นด์นด์˜คํ†ก ๋ฏธ๊ฐ€์ž… ํšŒ์›์ด๋ผ๋ฉด, ์ž๋™์œผ๋กœ ํšŒ์›๊ฐ€์ž… ์—ฐ๊ฒฐ

- ์ด๋ฉ”์ผ ์ธ์ฆ ๋กœ๊ทธ์ธ

  • ๊ฐ„ํŽธ ๋กœ๊ทธ์ธ ์ •๋ณด ์ €์žฅ์„ ํ†ตํ•ด, ์ง€๋‚œ ๋กœ๊ทธ์ธ ์ •๋ณด ์œ ์ง€
  • ํšŒ์›๊ฐ€์ž… ๋ทฐ๋กœ ์ด๋™ ๊ฐ€๋Šฅ

๋กœ๊ทธ์•„์›ƒํ•˜์ง€ ์•Š์€ ์ง€๋‚œ ๋กœ๊ทธ์ธ ๊ธฐ๋ก์ด ์žˆ๋‹ค๋ฉด, ์ถ”๊ฐ€์ ์ธ ๋กœ๊ทธ์ธ ํ•„์š” ์—†์ด ์•ฑ์— ์ ‘์† ๊ฐ€๋Šฅ!

๋กœ๊ทธ์ธ 1 ๋กœ๊ทธ์ธ 2

๐Ÿ“ 3. ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€

  • ํšŒ์›๊ฐ€์ž…
    • ์„œ๋น„์Šค ์•ฝ๊ด€ ๋™์˜ ์ดํ›„, ํšŒ์›๊ฐ€์ž… ์ง„ํ–‰ ๊ฐ€๋Šฅ
    • ์ด๋ฉ”์ผ์„ ํ†ตํ•ด 8์ž ์ธ์ฆ๋ฒˆํ˜ธ ๊ธฐ์ž…์„ ํ†ตํ•œ ์ธ์ฆ
    • ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ • ์‹œ, ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์ž…๋ ฅ์„ ํ†ตํ•œ ํ™•์ธ
    • ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต ์‹œ, ๋‚˜๋งŒ์˜ ๋ธ”๋กœ๊ทธ ์ฃผ์†Œ ์„ค์ • ๊ฐ€๋Šฅ
ํšŒ์›๊ฐ€์ž…1 ํšŒ์›๊ฐ€์ž…2
ํšŒ์›๊ฐ€์ž…3 ํšŒ์›๊ฐ€์ž…4
ํšŒ์›๊ฐ€์ž…5 ํšŒ์›๊ฐ€์ž…6

๐Ÿก 4. ๋ฉ”์ธ ํŽ˜์ด์ง€

ํ™ˆ ํƒญ

  • today wastory
    • ์˜ค๋Š˜ ํ•˜๋ฃจ ์กฐํšŒ์ˆ˜๊ฐ€ ์ƒ์œ„ 5๊ฐœ์˜ ๊ฒŒ์‹œ๊ธ€ ์ „๋‹ฌ(๋น„๊ณต๊ฐœ๊ธ€, ๋ณดํ˜ธ๊ธ€์€ ์ œ์™ธ)
  • weekly wastory
    • ์ผ์ฃผ์ผ ๊ธฐ์ค€ ์กฐํšŒ์ˆ˜๊ฐ€ ์ƒ์œ„ 5๊ฐœ์˜ ๊ฒŒ์‹œ๊ธ€ ์ „๋‹ฌ(๋น„๊ณต๊ฐœ๊ธ€, ๋ณดํ˜ธ๊ธ€์€ ์ œ์™ธ)
  • category ๋ณ„ ์ธ๊ธฐ๊ธ€
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ hometopic(category) ์˜ ์กฐํšŒ์ˆ˜ ์ƒ์œ„ 7๊ฐœ์˜ ๊ฒŒ์‹œ๊ธ€ ์ „๋‹ฌ
  • Focus View(J์˜ ์ฃผ๋ง ๊ณ„ํš/์˜คํ›„์—๋Š” ์ปคํ”ผ ํ•œ ์ž”)
    • J์˜ ์ฃผ๋ง ๊ณ„ํš
      • category ์ค‘, ๊ตญ๋‚ด์—ฌํ–‰/ํ•ด์™ธ์—ฌํ–‰/์บ ํ•‘,๋“ฑ์‚ฐ/๋ง›์ง‘ ์˜ ์กฐํšŒ์ˆ˜ ์ƒ์œ„ 5๊ฐœ ๊ฒŒ์‹œ๊ธ€ ์ „๋‹ฌ
    • ์˜คํ›„์—๋Š” ์ปคํ”ผ ํ•œ ์ž”
      • category ์ค‘, ์นดํŽ˜ ๋””์ €ํŠธํŠธ ์˜ ์กฐํšŒ์ˆ˜ ์ƒ์œ„ 5๊ฐœ ๊ฒŒ์‹œ๊ธ€ ์ „๋‹ฌ
ํ™ˆ1 ํ™ˆ2 ํ™ˆ3

ํ”ผ๋“œ ํƒญ

  • ๊ตฌ๋…์ค‘์ธ ๋ธ”๋กœ๊ทธ์˜ ์ตœ์‹  ๊ฒŒ์‹œ๋ฌผ
  • ๋‚ด๊ฐ€ ๊ตฌ๋…ํ•˜๋Š”, ๋‚˜๋ฅผ ๊ตฌ๋…ํ•˜๋Š” ๋ธ”๋กœ๊ทธ ๋ฆฌ์ŠคํŠธ
ํ”ผ๋“œ1 แ„‘แ…ตแ„ƒแ…ณ2 แ„‘แ…ตแ„ƒแ…ณ3

๊ธ€ ์ž‘์„ฑ ํƒญ

  • ๊ธ€์ž ์„œ์‹ ๋ณ€๊ฒฝ
  • ์ด๋ฏธ์ง€ ์ฒจ๋ถ€
  • ๋˜๋Œ๋ฆฌ๊ธฐ ๋ฐ ์•ž์œผ๋กœ๊ฐ€๊ธฐ

แ„€แ…ณแ†ฏแ„Œแ…กแ†จแ„‰แ…ฅแ†ผ1

  • ์ž„์‹œ ์ €์žฅ ๋ฐ ์ €์žฅ๋œ ๊ธ€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

แ„€แ…ณแ†ฏแ„Œแ…กแ†จแ„‰แ…ฅแ†ผ2

  • ์นดํ…Œ๊ณ ๋ฆฌ ์„ค์ • ๊ฐ€๋Šฅ
  • ๊ธ€ ๊ณต๊ฐœ, ๋ณดํ˜ธ, ๋น„๊ณต๊ฐœ ์—ฌ๋ถ€ ์„ค์ • ๊ฐ€๋Šฅ
  • ํ™ˆ์ฃผ์ œ ์„ค์ • ๊ฐ€๋Šฅ
  • ๋Œ“๊ธ€ ๊ณต๊ฐœ์—ฌ๋ถ€ ์„ค์ • ๊ฐ€๋Šฅ

แ„€แ…ณแ†ฏแ„Œแ…กแ†จแ„‰แ…ฅแ†ผ3

์•Œ๋ฆผ ํƒญ

  • ์•Œ๋ฆผ ํ‘œ์‹œ ๋ฐ ์•Œ๋ฆผ ์ข…๋ฅ˜๋ณ„๋กœ ์กฐํšŒ ๊ฐ€๋Šฅ
  • ๊ตฌ๋…ํ•œ ๋ธ”๋กœ๊ทธ์˜ ์ƒˆ ๊ธ€ ๋ฐœํ–‰ ์•Œ๋ฆผ
  • ์ž์‹ ์˜ ๋ธ”๋กœ๊ทธ์˜ ๊ตฌ๋…์ž ์ถ”๊ฐ€ ์•Œ๋ฆผ
  • ์ž์‹ ์˜ ๊ธ€์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€ ํ˜น์€ ์ž์‹ ์˜ ๋Œ“๊ธ€์˜ ๋‹ต๊ธ€ ์ถ”๊ฐ€ ์•Œ๋ฆผ
  • ์ž์‹ ์˜ ๋ธ”๋กœ๊ทธ์˜ ๋ฐฉ๋ช…๋ก ํ˜น์€ ์ž์‹ ์˜ ๋ฐฉ๋ช…๋ก์˜ ๋‹ต๊ธ€ ์ถ”๊ฐ€ ์•Œ๋ฆผ

แ„‹แ…กแ†ฏแ„…แ…ตแ†ท

๋‚ด ๋ธ”๋กœ๊ทธ ํƒญ

  • ๋ธ”๋กœ๊ทธ ๊ธ€ ์กฐํšŒ

แ„‚แ…ขแ„‡แ…ณแ†ฏแ„…แ…ฉแ„€แ…ณ1

  • ๋‚ด ๋ธ”๋กœ๊ทธ ์„ค์ •
  • ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ ์„ค์ • ๊ฐ€๋Šฅ

แ„‚แ…ขแ„‡แ…ณแ†ฏแ„…แ…ฉแ„€แ…ณ2

  • ์นดํ…Œ๊ณ ๋ฆฌ ๊ด€๋ฆฌ (์ถ”๊ฐ€๊ธฐ๋Šฅ!) (์ƒ์œ„, ํ•˜์œ„ ์นดํ…Œ๊ณ ๋ฆฌ ์ง€์ • ๊ฐ€๋Šฅ)

แ„‚แ…ขแ„‡แ…ณแ†ฏแ„…แ…ฉแ„€แ…ณ3

โœ๏ธ 5. ๊ธ€ ์กฐํšŒ ํŽ˜์ด์ง€

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

แ„€แ…ณแ†ฏ แ„Œแ…ฉแ„’แ…ฌ1

  • ๋ธ”๋กœ๊ทธ ๋‚ด ๋™ ์นดํ…Œ๊ณ ๋ฆฌ ๊ฒŒ์‹œ๋ฌผ & ์ธ๊ธฐ๊ธ€ ํ™•์ธ ๊ฐ€๋Šฅ
    • ๋”๋ณด๊ธฐ ํด๋ฆญ ์‹œ ๋ธ”๋กœ๊ทธ ์กฐํšŒ ๋ทฐ๋กœ ์ด๋™ํ•ด ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ ๊ธ€๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ์Œ
    • ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋ธ”๋กœ๊ทธ์˜ ๊ฒฝ์šฐ ๋ธ”๋กœ๊ทธ ์ •๋ณด์— ๊ตฌ๋…ํ•˜๊ธฐ ๋ฒ„ํŠผ์ด ์ƒ๊ฒจ ๊ตฌ๋… ์ถ”๊ฐ€/์ทจ์†Œ ๊ฐ€ ๊ฐ€๋Šฅํ•จ

แ„€แ…ณแ†ฏ แ„Œแ…ฉแ„’แ…ฌ2

๐Ÿ’ฌ 6. ๋Œ“๊ธ€ ์ž‘์„ฑ ๋ฐ ์กฐํšŒ ํŽ˜์ด์ง€

  • ์‹ค์‹œ๊ฐ„ ๋Œ“๊ธ€ ์ž‘์„ฑ ๋ฐ ๋Œ€๋Œ“๊ธ€ ์ง€์›
  • ์ž‘์„ฑ์ž ์ •๋ณด ๋ฐ ์ž‘์„ฑ์ผ ํ‘œ์‹œ
  • ๋น„๋ฐ€ ๋Œ“๊ธ€ ๊ฐ€๋Šฅ

แ„ƒแ…ขแ†บแ„€แ…ณแ†ฏ

๐ŸŒ 7. ๋ธ”๋กœ๊ทธ ์กฐํšŒ ํŽ˜์ด์ง€

  • ๋ธ”๋กœ๊ทธ ๊ธ€ ์กฐํšŒ ๋ฐ ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„๋กœ ์กฐํšŒ ๊ฐ€๋Šฅ

แ„‡แ…ณแ†ฏแ„…แ…ฉแ„€แ…ณ แ„Œแ…ฉแ„’แ…ฌ1

  • ๋ธ”๋กœ๊ทธ ์ธ๊ธฐ๊ธ€ ์กฐํšŒ์ˆ˜, ๋Œ“๊ธ€์ˆ˜, ๊ณต๊ฐ์ˆ˜ ์ˆœ์œผ๋กœ ์กฐํšŒ ๊ฐ€๋Šฅ

แ„‡แ…ณแ†ฏแ„…แ…ฉแ„€แ…ณ แ„Œแ…ฉแ„’แ…ฌ2

  • ๋ธ”๋กœ๊ทธ ๋‚ด ๊ธ€ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ
    • ์šฐ์ธก์˜ ์ „์ฒด๊ฒ€์ƒ‰์„ ๋ˆ„๋ฅผ์‹œ ์ „์ฒด ๊ฒ€์ƒ‰๊ฐ€๋Šฅ

แ„‡แ…ณแ†ฏแ„…แ…ฉแ„€แ…ณ แ„‚แ…ข แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ

๐Ÿ“– 8. ๋ฐฉ๋ช…๋ก ์ž‘์„ฑ ๋ฐ ์กฐํšŒ ํŽ˜์ด์ง€

  • ์ž์œ ๋กญ๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋‚จ๊ธฐ๊ณ  ์—ด๋žŒ ๊ฐ€๋Šฅ
  • ์ž‘์„ฑ์ž ์ •๋ณด ๋ฐ ์ž‘์„ฑ์ผ ํ‘œ์‹œ
  • ๋น„๋ฐ€ ๋ฐฉ๋ช…๋ก ๊ฐ€๋Šฅ

แ„‡แ…กแ†ผแ„†แ…งแ†ผแ„…แ…ฉแ†จ

๐Ÿ” 9. ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€

  • ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ

แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ1

  • ๊ธ€ ๊ฒ€์ƒ‰ (์ œ๋ชฉ ๋ฐ ๋‚ด์šฉ)

แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ2

  • ๋ธ”๋กœ๊ทธ ๊ฒ€์ƒ‰ (์ด๋ฆ„)

แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ3

๐Ÿ‘ค 10. ๊ณ„์ • ๊ด€๋ฆฌ ํŽ˜์ด์ง€

  • ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ, ๋กœ๊ทธ์•„์›ƒ, ๊ณ„์ • ํƒˆํ‡ด ๊ฐ€๋Šฅ
  • ์นด์นด์˜ค ๋กœ๊ทธ์ธ ์œ ์ €๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ

แ„€แ…จแ„Œแ…ฅแ†ผ แ„‰แ…ฅแ†ฏแ„Œแ…ฅแ†ผ