| doc_type | fe_feature_wardrobe |
|---|---|
| source_of_truth | AIBE5_FinalProject_Team4_FE |
| last_updated | 2026-06-10 |
์ด ๋ฌธ์๋ ์ฌ์ฉ์ ์ท์ฅ ํ๋ฉด์์ ๋ณด์ ์ท๊ณผ ๋ฏธ๋ณด์ ์ท์ ์กฐํํ๊ณ ๊ด๋ฆฌํ๋ ๊ธฐ์ค์ ์ ๋ฆฌํฉ๋๋ค.
๊ด๋ จ ๊ณตํต ๋ฌธ์:
- feature-index.md
- requirements-definition.md
- glossary.md
- invariants.md
- catalog.md
- frontend-api-usage.md
์ท์ฅ ํ๋ฉด์ ์ฌ์ฉ์๊ฐ ์ค์ ๋ณด์ ํ ์ท๊ณผ ์์ง ๋ณด์ ํ์ง ์์ ๊ด์ฌ/์ถ์ฒ ์ท์ ํจ๊ป ๊ด๋ฆฌํ๋ ํ๋ฉด์ ๋๋ค.
| ๊ฐ๋ | FE ํ์ ๊ธฐ์ค |
|---|---|
OWNED |
๋ณด์ ์ท |
WISHLIST |
๋ฏธ๋ณด์ ์ท, ๊ด์ฌ ์ํ |
WARDROBE_CLOTHES |
์ฌ์ฉ์ ์ท์ฅ์ ์ฐ๊ฒฐ๋ ์ท ์ ๋ณด |
CLOTHES |
์ท ์์ฒด์ ๊ณตํต ์ ๋ณด |
๋ณด์ /๋ฏธ๋ณด์ ์ํ๋ CLOTHES๊ฐ ์๋๋ผ WARDROBE_CLOTHES.ownership_status ๊ธฐ์ค์ผ๋ก ํ๋จํฉ๋๋ค.
์ท์ฅ ํ๋ฉด์ ์๋ ์ ๋ณด๋ฅผ ํ์ํฉ๋๋ค.
- ๋ณด์ ์ท
- ๋ฏธ๋ณด์ ์ท
- ์นดํ ๊ณ ๋ฆฌ/ํ์ /์์/์คํ์ผ ํํฐ
- ์ท ๋ชฉ๋ก
- ์ท ์์ธ ์ ๋ณด
- ์ฆ๊ฒจ์ฐพ๊ธฐ ์ํ
- ๋ฏธ๋ณด์ ์์ ๋ณด์ ์ ํ ์ก์
- ์ญ์ (์ท์ฅ ์ฐ๊ฒฐ ํด์ ) ์ก์
| ์ธ๋ถ๊ธฐ๋ฅ ID | ๊ธฐ๋ฅ | API ๊ธฐ์ค |
|---|---|---|
WARDROBE-001 |
์ฌ์ฉ์๋ณ ๋จ์ผ ์ท์ฅ | GET /api/v1/wardrobes/users/{userId} |
WARDROBE-002 |
์ท์ฅ ํต๊ณ | GET /api/v1/wardrobes/users/{userId}/statistics |
WARDROBE-003~WARDROBE-008 |
๋ณด์ ์ท ์กฐํ/์์ธ/์์ /์ญ์ /์ฆ๊ฒจ์ฐพ๊ธฐ | GET /api/v1/users/{userId}/clothes, GET /api/v1/clothes/{clothesId}, PATCH /api/v1/clothes/{clothesId}, DELETE /api/v1/clothes/{clothesId} |
WARDROBE-009 |
๋ฏธ๋ณด์ ์ท ์กฐํ | GET /api/users/{userId}/wishlist-clothes |
WARDROBE-010 |
๋ฏธ๋ณด์ ์์ ๋ณด์ ์ ํ | PATCH /api/v1/clothes/{clothesId}/convert-to-owned |
WARDROBE-002๋ ๊ณตํต ๊ธฐ๋ฅ ์ ์์ ์ฌ์ฉ์ ์ท์ฅ์ ๋ฑ๋ก๋ ๋ณด์ /๋ฏธ๋ณด์ ์ท ํต๊ณ ์กฐํ์
๋๋ค.
| ํต๊ณ ๊ธฐ์ค | ํฌํจ ๋ฒ์ |
|---|---|
| ์ท์ฅ ์ ์ฒด ๋ฑ๋ก ์ | OWNED, WISHLIST ๋ชจ๋ ํฌํจ |
| ๋ณด์ ์ท ์ | OWNED |
| ๋ฏธ๋ณด์ ์ท ์ | WISHLIST |
์ท์ฅ ์ ์ฒด ์์ฝ์์ ์ ์ฒด ๋ฑ๋ก ์๋ฅผ ๋ค๋ฃฐ ๋๋ OWNED์ WISHLIST๋ฅผ ๋ชจ๋ ๊ณ ๋ คํฉ๋๋ค. ๋ณด์ ์ท ์ ์ฉ ์์น๋ฅผ ์ท์ฅ ์ ์ฒด ์๋ก ์ฌ์ฉํ์ง ์์ต๋๋ค.
ํต๊ณ ๋ฒ์, API ์๋ต ํ๋, ํ๋ฉด ํ์ ๊ธฐ์ค์ด ๋ฐ๋๋ฉด feature-index.md, frontend-api-usage.md, ์ด ๋ฌธ์๋ฅผ ๊ฐ์ PR์์ ์์ ํฉ๋๋ค.
๊ธฐ์ค:
WISHLIST์ํ์ธ ์ท๋งOWNED๋ก ์ ํํ ์ ์์ต๋๋ค.- ์ ํ ํ ๋ณด์ ์ท ๋ชฉ๋ก์ ํ์๋์ด์ผ ํฉ๋๋ค.
- ์ ํ ํ ๋ฏธ๋ณด์ ๋ชฉ๋ก์์๋ ์ ๊ฑฐ๋๊ฑฐ๋ ์ํ ๋ณ๊ฒฝ์ด ๋ฐ์๋์ด์ผ ํฉ๋๋ค.
- ๊ฐ์ ์ท์ ๊ณตํต ์ ๋ณด๋ ์ค๋ณต ์์ฑํ์ง ์์ต๋๋ค.
์นดํ ๊ณ ๋ฆฌ, ์์ดํ ํ์ , ์์, ์คํ์ผ์ catalog.md์ code ๊ฐ์ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค.
FE ํ์ ๋ฌธ๊ตฌ๋ ๋ณ๋ ๋งคํ์ ๋ ์ ์์ง๋ง, API ์์ฒญ/์๋ต ๊ฐ์ ๋ฌธ์์ code๋ฅผ ๋ฐ๋ฆ ๋๋ค.
| ์ํ | ํ๋ฉด ๊ธฐ์ค |
|---|---|
| loading | ์ท์ฅ ์์ฝ๊ณผ ๋ชฉ๋ก ์์ญ์ skeleton/spinner ํ์ |
| empty | ํ์ฌ ํญ/ํํฐ ๋ฒ์์ ํ์ํ ์ท์ด ์์ ๋ ์ท์ด ์์ต๋๋ค. ๋ฌธ๊ตฌ์ ์ท ๋ฑ๋ก ์ง์
ํ๋ ์ ๊ณต |
| error | ๋ชฉ๋ก ์กฐํ ์คํจ ๋ฉ์์ง ๋๋ ์ฌ์๋ ํ๋ ์ ๊ณต |
- ์ด๊ธฐ ๋ฐ๋ชจ์ฉ ์ท ๋ชฉ๋ก mock์ ํ์ฉํฉ๋๋ค.
- API๊ฐ ์ฐ๊ฒฐ๋ ๋ค์๋
ownershipStatus๊ธฐ์ค์ผ๋ก ๋ณด์ /๋ฏธ๋ณด์ ๋ฅผ ๊ตฌ๋ถํฉ๋๋ค. - mock ์ ํ ๋ฒํผ์ด ์ค์ ์ ํ ์๋ฃ์ฒ๋ผ ๋ณด์ด์ง ์๋๋ก ํฉ๋๋ค.
- ์ค์ API ์ฐ๋ ์ฝ๋์์
isWishlist๊ฐ์ FE ์์ boolean๋ง์ผ๋ก ๋ณด์ /๋ฏธ๋ณด์ ์ ์ฅ ๊ธฐ์ค์ ๋์ฒดํ์ง ์์ต๋๋ค.
- ๋ณด์ /๋ฏธ๋ณด์ ์ํ๋
ownershipStatus๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌํฉ๋๋ค. - ๋ฏธ๋ณด์ ์์ ๋ณด์ ์ ํ์ ์๋ฒ ์ํ ์ ํ API์ ์ฐ๊ฒฐํฉ๋๋ค.
- ๊ณตํต ์ท ์ ๋ณด์ ์ฌ์ฉ์ ์ท์ฅ ์ ๋ณด๋ฅผ UI์์ ํผ๋ํ์ง ์๋๋ก ํ์ํฉ๋๋ค.
- API ์์ฒญ์๋ ์นดํ๋ก๊ทธ code ๊ธฐ์ค๊ณผ ๋ค๋ฅธ ์์ ๋ฌธ์์ด์ ๋ณด๋ด์ง ์์ต๋๋ค.
- ๋น ์ํ์ ์ค๋ฅ ์ํ์์๋ ์ฌ์ฉ์๊ฐ ์ทจํ ๋ค์ ํ๋์ ์ ๊ณตํฉ๋๋ค.
- ์ท์ฅ ํญ, ๋ณด์ /๋ฏธ๋ณด์ ์ํ ๊ธฐ์ค, ์ ํ ํ๋ฆ, API ์ฐ๋ ๊ธฐ์ค์ด ๋ฐ๋๋ฉด ์ด ๋ฌธ์๋ฅผ ๊ฐ์ PR์์ ์์ ํฉ๋๋ค.