์ ๋ฌผ ๊ณ ๋ฅด๊ธฐ๋ ๋ง์ ์ฌ๋๋ค์๊ฒ ์ด๋ ค์ด ๊ณผ์ ์ ๋๋ค. 125๋ช ์ ์ค๋ฌธ ๊ฒฐ๊ณผ, ์ฌ๋๋ค์ด ์๋๋ฐฉ์ ์ ํธ๋๋ฅผ ์ง์ ๋ฌผ์ด๋ณด์ง ๋ชปํ๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ '์ ๋ฌผ์ ๊ฐ์ฑ์ด ์ฌ๋ผ์ง๊ณ ์ฑ์๊ฐ ์์ด ๋ณด์ผ๊น๋ด' ์์ต๋๋ค.
Picktory๋ ๋ค์๊ณผ ๊ฐ์ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค:
- ์ ๋ฌผ ํ๋ณด ๊ณต์ : ์ฌ๋ฌ ์ ๋ฌผ ์ต์ ์ ํ ๋ฒ์ ๊ณต์ ํ์ฌ ์๋๋ฐฉ์ ์๊ฒฌ์ ์์ฐ์ค๋ฝ๊ฒ ์์ง
- ์ค๋น ๊ณผ์ ๊ณต์ : ์ ๋ฌผ ์ ํ ๊ณผ์ ์ ๊ณ ๋ฏผ๊ณผ ๋ ธ๋ ฅ์ ํจ๊ป ์ ๋ฌํ์ฌ ์ ์ฑ์ ํํ
- ์ ๋ฌผ์ ์๋ฏธ ์ ์ง: ๊น์ง ์ ๋ฌผ์ ์ค๋ ์ ์ ์งํ๋ฉด์๋ ํจ๊ณผ์ ์ธ ์ ๋ฌผ ์ ํ ๊ฐ๋ฅ
- ์ ์ฐํ ๋ต๋ณ ์์คํ : ๋ฐ๋ ์ฌ๋์ด ์์ ๋กญ๊ฒ ์ ๋ฌผ์ ๋ฐ์ํ๊ณ ์๊ฒฌ์ ๋จ๊ธธ ์ ์์
- ๋ณด๋ฐ๋ฆฌ ๊ฐ๋ : ์ฌ๋ฌ ์ ๋ฌผ ์ต์ ์ ํ๋์ ๋ณด๋ฐ๋ฆฌ์ ๋ด์ ์ ๋ฌํ๋ ํน๋ณํ ๊ฒฝํ
- ์บ๋ฆญํฐ ๋ฐฐ๋ฌ๋ถ: ๊ท์ฌ์ด ์บ๋ฆญํฐ๊ฐ ๋ณด๋ฐ๋ฆฌ๋ฅผ ๋ฐฐ๋ฌํ๋ ์ฌ๋ฏธ ์์ ์ถ๊ฐ
- ๊ฐํธํ ๋งํฌ ๊ณต์ : ๊ณ ์ ๋งํฌ๋ก ์ฝ๊ฒ ๋ณด๋ฐ๋ฆฌ ๊ณต์ ๊ฐ๋ฅ
- ์ํ ๊ด๋ฆฌ ์์คํ : DRAFT โ PUBLISHED โ COMPLETED ์ํ ํ๋ฆ์ผ๋ก ํจ์จ์ ์ธ ๊ณผ์ ๊ด๋ฆฌ
- ์นด์นด์ค ์์ ๋ก๊ทธ์ธ: ๊ฐํธํ ๋ก๊ทธ์ธ ๋ฐ ํ์๊ฐ์ ํตํฉ ํ๋ก์ธ์ค
- JWT ๊ธฐ๋ฐ ์ธ์ฆ: ์์ ํ ํ ํฐ ๊ด๋ฆฌ ๋ฐ ์ฌ๋ฐ๊ธ ์์คํ
- ์ ์ ๊ด๋ฆฌ: ํ์ ์ ๋ณด ์กฐํ, ๋ก๊ทธ์์, ํํด ๊ธฐ๋ฅ
- ์์ฑ ๋ฐ ํธ์ง: ๋ค์ํ ๋์์ธ์ ๋ณด๋ฐ๋ฆฌ ์์ฑ ๋ฐ ํธ์ง ๊ธฐ๋ฅ
- ์ ๋ฌผ ๊ด๋ฆฌ: ์ ๋ฌผ ์ถ๊ฐ, ์์ , ์ญ์ ๋ฐ ์ด๋ฏธ์ง ์ ๋ก๋
- ๋ฐฐ๋ฌ ์ค์ : ๋ค์ํ ์บ๋ฆญํฐ๋ก ๋ณด๋ฐ๋ฆฌ ๋ฐฐ๋ฌ ์ค์ ๊ธฐ๋ฅ
- ๊ณ ์ ๋งํฌ: UUID ๊ธฐ๋ฐ ๊ณต์ ๋งํฌ ์์ฑ
- ๋ณด๋ฐ๋ฆฌ ์ด๋: ๋งํฌ๋ฅผ ํตํ ๋ณด๋ฐ๋ฆฌ ์ ๊ทผ ๋ฐ ์ด๋
- ์ ๋ฌผ ์๋ต: ๋ค์ํ ํ๊ทธ๋ฅผ ํตํ ์ ๋ฌผ ์๋ต ๊ธฐ๋ฅ
- ๊ฒฐ๊ณผ ์กฐํ: ๋ณด๋ฐ๋ฆฌ ์ฃผ์ธ์ ์๋ต ๊ฒฐ๊ณผ ์กฐํ ๊ธฐ๋ฅ
- ์ฝ์ ํ์: ์๋ต ํ์ธ ์ํ ํ์ ๊ธฐ๋ฅ
- AWS S3 ํตํฉ: ์ด๋ฏธ์ง ์ ์ฅ ๋ฐ ๊ด๋ฆฌ ์์คํ
- ์ธ๋ค์ผ ์ฒ๋ฆฌ: ์๋ ์ธ๋ค์ผ ์์ฑ ๋ฐ ๊ด๋ฆฌ
- ๋ธ๋์น ์ ๋ต:
main
: ์ ํ ๋ฐฐํฌ๋ฅผ ์ํ ๊ธฐ์ค ๋ธ๋์นdevelop
: ๊ฐ๋ฐ ํตํฉ ๋ธ๋์นfeature/<๊ธฐ๋ฅ๋ช >
: ๊ธฐ๋ฅ ๊ฐ๋ฐ ๋ธ๋์น
- Pull Request ๊ท์น:
- ์ง์
Push
๊ธ์ง: ๋ชจ๋ ์ฝ๋ ๋ณ๊ฒฝ์ PR์ ํตํด ์งํ - PR ๊ณต์ : ํ ๋ด ๊ณต์ ํ์
- ์ง์
- ์ปค๋ฐ ๋ฉ์์ง ๊ตฌ์กฐ:
[<ํ์ >]: <์์ ๋ด์ฉ>
- ์ปค๋ฐ ํ์
:
feat
: ์๋ก์ด ๊ธฐ๋ฅ ๊ตฌํfix
: ๋ฒ๊ทธ ํด๊ฒฐrefactor
: ์ฝ๋ ๋ฆฌํฉํฐ๋งdocs
: ๋ฌธ์ ์์ style
: ์ฝ๋ ์คํ์ผ ๋ณ๊ฒฝtest
: ํ ์คํธ ์ฝ๋ ๊ด๋ จ
- JDK 17+
- MySQL 8.0+
- Gradle
- ๋ ํฌ์งํ ๋ฆฌ ํด๋ก
git clone https://github.com/dnd-side-project/dnd-12th-5-backend.git
cd dnd-12th-5-backend
- ์ ํ๋ฆฌ์ผ์ด์ ๋น๋
./gradlew build
- ์ ํ๋ฆฌ์ผ์ด์ ์คํ
./gradlew bootRun
- API ๋ฌธ์ ์ ๊ทผ
http://localhost:8080/swagger-ui.html
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0'
๊ตฌํ ๋ด์ฉ
- โจ API ๋ฌธ์ํ๋ฅผ ์ํ SwaggerConfig ํด๋์ค ์์ฑ
- ๐ ๏ธ Context path๋ฅผ
/api/v1
๋ก ์ค์ - ๐ Swagger UI path:
/swagger-ui.html
- ๐ API docs path:
/v3/api-docs
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
๊ตฌํ ๋ด์ฉ
- โ๏ธ JPAQueryFactory Bean ๋ฑ๋ก
- ๐ Qํด๋์ค ์๋ ์์ฑ ์ค์
- ๐ Entity ๋ณ๊ฒฝ ์ clean & rebuild ํ์
๊ตฌํ ๋ด์ฉ
- ๐ JWT ์ธ์ฆ ํํฐ ๊ตฌํ
- ๐ก๏ธ API ์๋ํฌ์ธํธ๋ณ ์ ๊ทผ ๊ถํ ์ค์
- ๐ CORS ์ค์
- ํ๋ก ํธ์๋ ๋๋ฉ์ธ ์ค์ ์ดํ ๋ณด์ ๊ฐํ ์์
- HTTP ๋ฉ์๋: GET, POST, PUT, DELETE, OPTIONS
๊ตฌํ ๋ด์ฉ
- โ ํ ํฐ ์ ํจ์ฑ ๊ฒ์ฆ ๋ก์ง
- ๐ ๋ง๋ฃ ํ ํฐ ์ฌ๋ฐ๊ธ ๊ธฐ๋ฅ
- ๐ ํ ํฐ ์๋ช ๋ฐ ์ํธํ ์ฒ๋ฆฌ
- ๐ ๏ธ ์ฌ์ฉ์ ID ๊ธฐ๋ฐ ํด๋ ์ ์ค๊ณ
๊ตฌํ ๋ด์ฉ
- ๐ SecurityConfig ํด๋์ค ์ ๋ฉด ๋ฆฌํฉํ ๋ง
- ๐ก๏ธ JWT ์ธ์ฆ ์ํคํ ์ฒ ์ฌ์ค๊ณ ๋ฐ ์ต์ ํ
- ๐ ์ธ์ฆ ํํฐ ์ฒด์ธ ๊ฐ์ ๋ฐ ๊ณ ๋ํ
- ๐ ๊ถํ ๊ฒ์ฆ ๋ก์ง ๊ฐํ
- ๐ ๏ธ ์๋ํฌ์ธํธ๋ณ ์ธ๋ถํ๋ ์ ๊ทผ ์ ์ด ๊ตฌํ
- ๐ ์ธ์ฆ ์์ธ ์ฒ๋ฆฌ ํ๋ฆ ๊ฐ์
OAuth ์ธ์ฆ ํ๋ก์ฐ
- ๐ซ ์ธ์ฆ ์ฝ๋๋ก ์นด์นด์ค ์ก์ธ์ค ํ ํฐ ๋ฐ๊ธ
- ๐ค ์นด์นด์ค ์ฌ์ฉ์ ์ ๋ณด ์กฐํ
- ๐ JWT ํ ํฐ ๋ฐ๊ธ
ํ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ
- ๐ ํ์๊ฐ์ /๋ก๊ทธ์ธ ํตํฉ ํ๋ก์ธ์ค
- ๐ค ๋ด ์ ๋ณด ์กฐํ
- ๐ช ๋ก๊ทธ์์
- โ ํ์ ํํด (์นด์นด์ค ์ฐ๋ ํด์ ํฌํจ)
๊ตฌํ ๋ด์ฉ
- ๐งน DatabaseCleaner ๊ตฌํ
- โ JUnit 5 BeforeEachCallback ํ์ฉ
- ๐ SecurityContextHolder๋ฅผ ํ์ฉํ ์ธ์ฆ ํ ์คํธ
๊ตฌํ ๋ด์ฉ
- ๐ ์ธ์ฆ ๊ด๋ จ ์์ธ๋ฅผ BaseException์ผ๋ก ํต์ผ
- ๐ ๏ธ ์๋ฌ ์๋ต์ BaseResponseStatus ์ด๊ฑฐํ์ผ๋ก ํ์คํ
- ๐ ํ ํฐ ๋ง๋ฃ ์์ธ ์ฒ๋ฆฌ ๋ก์ง ๊ฐ์
- ๐ ์๋ฌ ๋ฉ์์ง ํ๊ธํ ๋ฐ ์ผ๊ด์ฑ ์ ์ง
๊ตฌํ ๋ด์ฉ
- โจ TokenDto์ refreshTokenExpiresIn ํ๋ ์ถ๊ฐ
- ๐ ๏ธ ๋ฆฌํ๋ ์ ํ ํฐ์ userId ์ ๋ณด ํฌํจ
- ๐ RefreshTokenService์์ ํ ํฐ ์ ๋ฐ์ดํธ ๋ก์ง ์์
- ๐ API ๋ช ์ธ์์ ์ค์ ๊ตฌํ ์ผ์นํ
๊ตฌํ ๋ด์ฉ
- ๐ User ์ํฐํฐ์ reactivate() ๋ฉ์๋ ์ถ๊ฐ
- ๐ ๏ธ AuthService์์ ํํด ์ฌ์ฉ์ ์ฌํ์ฑํ ๋ก์ง ๊ตฌํ
- ๐ ํ์ ํํด ๋ฐ ์ฌ๊ฐ์ ์ ์ฑ ๊ฐ์
- ๐ฅ ์๋น์ค ์ ๊ทผ์ฑ ํฅ์
๊ตฌํ ๋ด์ฉ
- ๐จ ๋ฐฐ๋ฌ๋ถ ์บ๋ฆญํฐ ์ค์ API
- ๐ ๊ณ ์ ๋งํฌ ์์ฑ ํตํฉ
- ๐ฆ Bundle ์ํ ๊ด๋ฆฌ ๊ฐ์ :
DRAFT
(์ด๊ธฐ)PUBLISHED
(๋ฐฐ๋ฌ๋ถ ์ค์ & ๋งํฌ ์์ฑ)
๊ตฌํ ๋ด์ฉ
- ๐ QueryDSL ๊ธฐ๋ฐ ๋ฐ์ดํฐ ์กฐํ
- ๐ ์ ๋ฌผ, ์ด๋ฏธ์ง, ์๋ต ์ ๋ณด ํตํฉ ์กฐํ
- โจ Response ์ํฐํฐ ๊ตฌํ
- ๐ ๏ธ QueryDSL ๊ธฐ๋ฐ ์ปค์คํ ๊ตฌํ์ฒด
๊ตฌํ ๋ด์ฉ
- ๐ท๏ธ GiftResponseTag ๊ด๋ฆฌ ์ฒด๊ณ
- ๐ ๋ค์ค ์ ๋ฌผ ๋ต๋ณ ์ฒ๋ฆฌ
- โ
์ํ ๊ฒ์ฆ:
- ๋ฒ๋ค ์ํ
- ์ ๋ฌผ ๋ชฉ๋ก
- ๊ธฐ์กด ์๋ต ์ฌ๋ถ
- ์๋ต ์๋ฃ ์ฌ๋ถ
๊ตฌํ ๋ด์ฉ
- ๐ ๊ฐ๋ณ ์ ๋ฌผ ์์ธ ์ ๋ณด ์กฐํ
- ๐ผ๏ธ ์ธ๋ค์ผ ๋ฐ ์ด๋ฏธ์ง ๋ชฉ๋ก ๋ถ๋ฆฌ
- ๐ ๊ถํ ๊ฒ์ฆ ๋ฐ ์์ธ ์ฒ๋ฆฌ
๊ตฌํ ๋ด์ฉ
- ๐ DRAFT ์ํ ๋ณด๋ฐ๋ฆฌ ์กฐํ
- โก N+1 ๋ฌธ์ ํด๊ฒฐ์ ์ํ ๋ฒํฌ ์กฐํ
- ๐ผ๏ธ ์ด๋ฏธ์ง ์ฒ๋ฆฌ:
- ์ธ๋ค์ผ ๋ถ๋ฆฌ
- ์ด๋ฏธ์ง ๋ชฉ๋ก ๋งคํ
๊ตฌํ ๋ด์ฉ
- ๐ ๋งํฌ ๊ธฐ๋ฐ ์ ๋ฌผ ์๋ต ๊ฒฐ๊ณผ ์กฐํ API ์ถ๊ฐ
- ๐ ๋ก๊ทธ์ธ ์์ด ๋ณด๋ฐ๋ฆฌ ๋งํฌ๋ก ๊ฒฐ๊ณผ ์กฐํ ๊ฐ๋ฅ
- ๐ COMPLETED ์ํ์ธ ๋ณด๋ฐ๋ฆฌ๋ง ์กฐํ ๊ฐ๋ฅํ๋๋ก ์ ํ
- ๐ฆ ์ ๋ฌผ ์ด๋ฆ, ์ธ๋ค์ผ, ๊ตฌ๋งค ๋งํฌ, ์๋ต ํ๊ทธ ๋ฐํ ๊ตฌํ
๊ตฌํ ๋ด์ฉ
- ๐ PATCH API ๊ตฌํ์ผ๋ก ํจ์จ์ฑ ๊ฐ์
- ๐ BundleNameUpdateRequest DTO ์์ฑ
- ๐ ๏ธ ๋ณด๋ฐ๋ฆฌ ์ด๋ฆ๋ง ์์ ํ๊ธฐ ์ํ ๋ณ๋ API ๋ถ๋ฆฌ
- ๐ DRAFT ์ํ์์๋ง ์ด๋ฆ ์์ ๊ฐ๋ฅํ๋๋ก ์ ํ
๊ตฌํ ๋ด์ฉ
- ๐ TokenDto ๊ตฌ์กฐ ์ ๋ฉด ๊ฐํธ ๋ฐ ํ์คํ
- ๐ ํ ํฐ ํด๋ ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ต์ ํ
- ๐ ๏ธ ํ ํฐ ์์ฑ/๊ฒ์ฆ ํ๋ฆ ๊ฐ์ ์ผ๋ก ์์ ์ฑ ์ฆ๊ฐ
- ๐ API ๋ช ์ธ์์์ ๋ถ์ผ์น ํด์
๊ตฌํ ๋ด์ฉ
- ๐ JWT ํํฐ์ ์ ๋ฌผ ์๋ต API ๊ฒฝ๋ก ์ถ๊ฐ
- ๐ท๏ธ ๋ณ๊ฒฝ๋ UI์ ๋ง์ถฐ GiftResponseTag enum ๊ฐ ์ ๋ฐ์ดํธ
- ๐ ๏ธ "์ ๋ง ์ต๊ณ ์์" ํ๊ทธ ์ถ๊ฐ
- ๐ 403 Forbidden ์ค๋ฅ ํด๊ฒฐ
๊ตฌํ ๋ด์ฉ
- ๐ RefreshTokenRepository ๊ตฌํ์ฒด ์ต์ ํ
- ๐๏ธ ํ ํฐ ์ ์ฅ ๋ฐ ๊ฒ์ ์ฑ๋ฅ ๊ฐ์
- ๐ ํ ํฐ ์กฐํ ๋ฉ์๋ ํจ์จํ
- ๐ ํ ํฐ ์ค๋ณต ์ ์ฅ ๋ฒ๊ทธ ์์
๊ตฌํ ๋ด์ฉ
- ๐ ํ ํฐ ๊ด๋ จ ์๋ฌ ๋ก๊น ์์คํ ๊ตฌ์ถ
- ๐ ๋๋ฒ๊น ๊ฐ๋ฅ์ฑ ํฅ์
- ๐ ๋ฆฌํ๋ ์ ํ ํฐ ์๋ฌ ์์ธ ์ถ์ ์ฉ์ด
- ๐ ๊ฐ๋ฐ ๋ฐ ์ด์ ํ๊ฒฝ์์์ ๋ฌธ์ ํด๊ฒฐ ์ง์
๊ตฌํ ๋ด์ฉ
- โฑ๏ธ ์ก์ธ์ค ํ ํฐ ๋ฐ ๋ฆฌํ๋ ์ ํ ํฐ ์ ์ ์๊ฐ ์ค์
- ๐ ์ธ์ ๊ด๋ฆฌ ์ต์ ํ
- ๐ ๏ธ ์ฌ์ฉ์ ๋ก๊ทธ์ธ ์ํ ์ ์ง ๊ฐ์
- ๐ ํ ํฐ ๋ณด์์ฑ ๊ฐํ
๊ตฌํ ๋ด์ฉ
- ๐จ design_type ํ๋ ์ถ๊ฐ
- ๐๏ธ ๋ฐฐ๋ฌ๋ถ SVG ๋ณ๊ฒฝ์ ์ํ ์์ ์ ๋ณด ์ ๊ณต
๊ตฌํ ๋ด์ฉ
- ๐๏ธ ์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง๋ฅผ ์ธ๋ค์ผ๋ก ์ฌ์ฉ
- ๐ ์ด๋ฏธ์ง URL ์ฒ๋ฆฌ ๋ฐฉ์ ํต์ผ
- ๐ API ์๋ต ํ์ ์ผ๊ด์ฑ ํ๋ณด
๊ตฌํ ๋ด์ฉ
- ๐ ๋ณด๋ฐ๋ฆฌ ์กฐํ API ์๋ต์ ID ํฌํจ
- ๐ ๋ต๋ณ ์ ์ฅ API ์ฐ๋ ๊ฐ์
๊ตฌํ ๋ด์ฉ
- ๐ SecurityConfig์ PATCH ๋ฉ์๋ ํ์ฉ ์ค์ ์ถ๊ฐ
- ๐ ๏ธ CORS ๊ด๋ จ ์ค์ ๋ณด๊ฐ
- ๐ ๋ณด๋ฐ๋ฆฌ ์ด๋ฆ ์์ API 403 ์๋ฌ ํด๊ฒฐ
- ๐ ํ๋ก ํธ์๋์์ ์ํํ ํต์ ์ง์
๊ตฌํ ๋ด์ฉ
- ๐ ์ ๋ฌผ ์ต์ ๊ฐ์ ์๊ตฌ์ฌํญ์ 1๊ฐ๋ก ๋ณ๊ฒฝ
- ๐ ๏ธ BundleRequest DTO ๊ฒ์ฆ ๋ก์ง ์์
- ๐ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฉ์์ง ์ ๋ฐ์ดํธ
- ๐ฅ ์ฌ์ฉ์ ๊ฒฝํ ๊ฐ์
๊ตฌํ ๋ด์ฉ
- ๐ ์์ธ ํ์ ์ IllegalStateException์์ BaseException์ผ๋ก ๋ณ๊ฒฝ
- ๐ ๏ธ ํ ์คํธ ๋ก์ง๊ณผ ์ค์ ๊ตฌํ ์ผ์นํ
- โ BaseResponseStatus ๊ฒ์ฆ ๋ก์ง ์ถ๊ฐ
- ๐ ํ ์คํธ ์คํจ ๋ฌธ์ ํด๊ฒฐ
๊ตฌํ ๋ด์ฉ
- ๐ ResponseServiceTest ํด๋์ค ์์
- ๐ ๏ธ Bundle ์ํฐํฐ์ ํ ์คํธ ์ฝ๋ ์ฌ์ด์ ๋ถ์ผ์น ํด๊ฒฐ
- โ ๋ ํฌ์งํ ๋ฆฌ ๋ฉ์๋ ์ด๋ฆ ์ผ์นํ
- ๐ ํ ์คํธ ์คํจ ์์ธ ํด๊ฒฐ
๊ตฌํ ๋ด์ฉ
- ๐ ์ค๋ค์ดํฌ ์ผ์ด์ค์์ ์นด๋ฉ ์ผ์ด์ค๋ก ๋ณ๊ฒฝ
- ๐ ๏ธ Java ์ฝ๋ ์คํ์ผ ์ปจ๋ฒค์ ์ ์ฉ
- ๐ ์ผ๊ด๋ ์ฝ๋ ์คํ์ผ ์ ์ฐฉ
- ๐ ๋ค์ด๋ฐ์ผ๋ก ์ธํ ์ค๋ฅ ์์
๊ตฌํ ๋ด์ฉ
- ๐
delivery_character_type
โdeliveryCharacterType
๋ฑ์ผ๋ก ๋ณํ - ๐ ๏ธ Java ๋ค์ด๋ฐ ์ปจ๋ฒค์ ์ค์
- ๐ ํ๋ก ํธ์๋์์ ์ธํฐํ์ด์ค ์ผ๊ด์ฑ ์ ์ง
- ๐งฐ ์ฝ๋ ๊ฐ๋ ์ฑ ํฅ์
๊ตฌํ ๋ด์ฉ
- ๐ bundleId์ ๋งํฌ(UUID)์ ๊ฐ๋ ๋ช ํํ ๋ถ๋ฆฌ
- ๐ ๏ธ API ์์ฒญ ๋ฐ ์๋น์ค ๋ก์ง ๊ฐ์
- ๐ ๊ฒ์ฆ ๋ก์ง ๋ถ๋ฆฌ๋ก ์ฝ๋ ํ์ง ํฅ์
- ๐งฐ ์ ์ง๋ณด์์ฑ ๊ฐ์