๐ ์น ์ฌ์ฉ๋ฒ
ํ์ ๋งค๋ฌผ / ๋ง๋จ / ๋งค์นญ ๊ด๋ฆฌ๋ ๋ชจ๋ ์ฌ๊ธฐ์์. ๋ชจ๋ฐ์ผ ํฐ์์๋ ์ ๋์ํฉ๋๋ค (ํ๋จ ํญ๋ฐ).
๐ก ๊ฟํ ํ๋ : ํ ํ๋ฉด์ ์ถ๊ฐํ๊ธฐ (์ฑ์ฒ๋ผ ์ฐ๊ธฐ)
ํฐ์์ ๋งค๋ฒ URL ์น ํ์ ์์ด ํ ํ๋ฉด์ ํํฌ ํํธ ์์ด์ฝ ๐ ์ถ๊ฐํด๋๋ฉด ์ผ๋ฐ ์ฑ์ฒ๋ผ ์ผ๊ธฐ/๋๊ธฐ ๊ฐ๋ฅ.
iOS (์ฌํ๋ฆฌ)
- ์ฌํ๋ฆฌ์์ meetcute URL ์ ์ (์:
https://abc.trycloudflare.com) - ํ๋จ ๊ฐ์ด๋ฐ ๊ณต์ ๋ฒํผ โฌ๏ธ
- ์คํฌ๋กค โ "โ ํ ํ๋ฉด์ ์ถ๊ฐ"
- ์ด๋ฆ ํ์ธ โ ์ถ๊ฐ
Android (ํฌ๋กฌ)
- ํฌ๋กฌ์์ URL ์ ์
- ์ฐ์๋จ โฎ โ "ํ ํ๋ฉด์ ์ถ๊ฐ"
์ผ๋ฐ ์ฑ ๊ฐํผ๋ ๋ญ๊ฐ ๋ค๋ฅธ๊ฐ์?
- URL ๋ฐ๊ฐ ์ ๋ณด์ (ํ์คํฌ๋ฆฐ)
- ํํฌ ํํธ ๐ ์์ด์ฝ
- ์ฑ ์ค์์ฒ์ ๋ฐ๋ก ์นด๋๋ก ๋ ์ ๋ค๋ฅธ ์ฑ ์ ํ ๋น ๋ฆ
- ๋ชจ๋ฐ์ผ ๋คํฌ๋ชจ๋ / ์ธ์ดํ์์ด๋ฆฌ์ด ์๋ ์ธ์
โ ๏ธ ์์๋ ์
- URL ์ด ๋ฐ๋๋ฉด (cloudflared ์ฌ์์ ์ quick mode ๋ฑ) ์์ด์ฝ์ ์ URL ๋ก ๊ฐ์ "์ฌ์ดํธ ๋ชป ์ฐพ์" ๋ธ
- URL ๋ฐ๋๋ฉด ํ ๋ ๊ทธ๋จ์ผ๋ก ์๋ ์๋ฆผ ์ด โ ๊ทธ๋ ์ URL ๋ก ๋ค์ "ํ ํ๋ฉด์ ์ถ๊ฐ" ํ๋ฉด ๋จ
- ์๊ตฌ URL ์ฐ๋ ค๋ฉด named tunnel ์ ์ (์ด์ ๊ฐ์ด๋ โ ์ธ๋ถ ๋ ธ์ถ ์ฐธ์กฐ)
1. ๋ฉ๋ด ํ๋์
| ์์น | ๋ฌด์ |
|---|---|
๐ ํ (/) |
๋์๋ณด๋ ยท ์ ๊ท/์ ์๋ ๋งค๋ฌผ ยท ์งํ ์ค ๋งค์นญ ยท ์ต๊ทผ ํ๋ |
๐ฅ ๋งค๋ฌผ (/persons) |
๋ฑ๋ก/๊ฒ์/ํํฐ/์ํ ๋ฑ์ง |
๐ ๋ง๋จ (/encounters) |
๋ชจ๋ ๋ง๋จ ๊ธฐ๋ก + ๊ฒฐ๊ณผ๋ณ ํํฐ |
๐ ํธํ์ฑ (/compatibility) |
๋ ๋งค๋ฌผ ๋น ๋ฅธ ๋น๊ต |
๐จ ์์ฒญ (/requests) |
๋ค๋ฅธ ๋ง๋ด๋ํํ ๋ณด๋ธ/๋ฐ์ ์๊ฐ ์์ฒญ |
๐ค ๋ด์ ๋ณด (/settings) |
๋๋ค์, ํ ๋ ๊ทธ๋จ, DB ์ํ |
๋งค๋ด์ผ (/manual) |
์ด ๋ฌธ์ |
2. ๋งค๋ฌผ(=์๊ฐํด์ค ์ฌ๋) ๋ฑ๋ก
๋ฑ๋ก ํ๋ฆ
- ๋งค๋ฌผ ๋ชฉ๋ก โ + ์ ๋งค๋ฌผ
- ์ฑ๋ณ (๋ฑ๋ก ํ ๋ณ๊ฒฝ ๋ถ๊ฐ โ
public_id๋ฐ๊ธ ๊ธฐ์ค) - ํ์ 5์นธ: ์ด๋ฆยท์ฌ๋๊ณณยท์ง์ฅยท๋์ดยทํค
- ์ฌ์ง 1~5์ฅ (jpg/png/webp/heic โ EXIF ์๋ ํ์ )
- ์ด์ํ / ๋ฉ๋ชจ๋ "์ถ๊ฐ ์ ๋ณด (์ ํ)" ํผ์ณ์ ์ ๋ ฅ ๋๋ ๋ฑ๋ก ํ ์์ ์์
ID ๊ท์น
- M-001 / F-001 / X-001 ํ์์ผ๋ก ์๋ ๋ฐ๊ธ
- ๊ฐ์ ์ฑ๋ณ ๋ด์์ max+1, ์ญ์ ํด๋ ์ฌ์ฌ์ฉ ์ ๋จ
์ด๋ฆ(๋ฉ๋ชจ์ฉ) โ ๋ค๋ฅธ ๋ง๋ด๋ํํ ์ ๋ณด์ฌ์
- "์ด๋ฆ" ํ๋๋ ๋ณธ์ธ์ด ๋ถ๋ฅด๊ธฐ ํธํ ๋ฉ๋ชจ์ฉ
- owner ๋ณธ์ธ๊ณผ ์ฑ ์์๋ง ํ์ (๋ค๋ฅธ ๋ง๋ด๋ ํ๋ฉด์ public_id ๋ง)
- ์ค๋ช ๊ทธ๋๋ก ๋ฐ์๋ ๋ฌด๋ฐฉ (๋ค๋ฅธ ์ฌ๋ํํ ์ ๋ณด์)
3. ๋งค๋ฌผ ์ํ (์๋ ๊ณ์ฐ)
| ๋ฑ์ง | ํ๋จ ๊ธฐ์ค |
|---|---|
| ๐ข ์๊ฐ ๊ฐ๋ฅ | ๋ง๋จ ๊ธฐ๋ก ์๊ฑฐ๋ ๋ชจ๋ ์ข ๋ฃ |
| ๐ก ์งํ ์ค | PENDING/CONTINUING ๋ง๋จ 1๊ฐ ์ด์ |
| ๐ ๋งค์นญ๋จ | MATCHED ๋ง๋จ 1๊ฐ ์ด์ |
์ํ๋ ์ ์ฅ X ยท ํญ์ ๋ง๋จ ๊ธฐ๋ก์ผ๋ก๋ถํฐ ์๋ ๊ณ์ฐ. ๋งค๋ฌผ ์์ ์ผ๋ก ์ง์ ๋ชป ๋ฐ๊ฟ.
4. ๋ง๋จ ๊ธฐ๋ก (Encounter)
์ ๋ง๋จ
/encounters/new๋๋ ๋งค๋ฌผ ์์ธ์ + ์ ๋ง๋จ- ๋ ๋งค๋ฌผ ์ ํ + ๋ง๋ ๋ ์ง + ๊ฒฐ๊ณผ(PENDING ๊ธฐ๋ณธ) + ๋ฉ๋ชจ
๊ฒฐ๊ณผ ์ข ๋ฅ
| ๊ฐ | ์๋ฏธ | ์ํ ์ํฅ |
|---|---|---|
| PENDING | ๋ง๋จ ์กํ / ๊ฒฐ๊ณผ ๋ฏธ์ | โ ์งํ ์ค |
| CONTINUING | ๊ณ์ ๋ง๋๋ ์ค | โ ์งํ ์ค |
| MATCHED | ๋งค์นญ ์ฑ๊ณต (์ฌ๊ท๊ธฐ๋ก) | โ ๋งค์นญ๋จ |
| ENDED_A | A๊ฐ ๊ฑฐ์ | (์ด๋ ฅ๋ง) |
| ENDED_B | B๊ฐ ๊ฑฐ์ | (์ด๋ ฅ๋ง) |
| MUTUAL_END | ์์ชฝ ๋ค ๋ ธ | (์ด๋ ฅ๋ง) |
๊ฒฐ๊ณผ ๋ณ๊ฒฝ ์ด๋ ฅ (๐ ์๋)
outcome ์ด ๋ฐ๋ ๋๋ง๋ค ์๋ ์ด๋ฒคํธ 1๊ฑด์ฉ ๊ธฐ๋ก โ ๋งค๋ฌผ ์์ธ / ๋ง๋จ ํธ์ง ํ์ด์ง์ ์๊ฐ์ ํ์๋ผ์ธ. - ๋ณ๊ฒฝ ์ฌ์ ๋ฉ๋ชจ๋ฅผ ์ ๋ ฅ๋์ ์งง๊ฒ ์ ์ผ๋ฉด ๊ฐ์ด ๋ฐํ - notes-only ์์ ์ ์ด๋ฒคํธ ์ ๋ง๋ฆ (์์ ๋ฐฉ์ง) - ๋๊ฐ ๋ฐ๊ฟจ๋์ง ๋๋ค์์ผ๋ก ๊ธฐ๋ก
์: "PENDING (์ต์ด ๋ฑ๋ก) โ CONTINUING (1์ฐจ ์๋จ) โ MATCHED (์ฌ๊ท๊ธฐ๋ก ํจ)" ๊ฐ์ ์คํ ๋ฆฌ๊ฐ ์๊ฐ์์ผ๋ก ์์.
5. ๋งค๋ฌผ ํ๋ ์ถ์
๋งค๋ฌผ ์์ธ์ ์๋ ํ์: - ์ด ๋ง๋จ / ๋งค์นญ / ์งํ ์ค / ๋ง์ง๋ง ํ๋ ์นด๋ - ๋ง๋จ ์ด๋ ฅ ํ์๋ผ์ธ - ๐ ์ ๋ณด ๋ณ๊ฒฝ ์ด๋ ฅ โ age/์ฌ๋๊ณณ/์ง์ฅ/ํค/์ด์ํ/๋ฉ๋ชจ/์ด๋ฆ ์์ ์ ์๋ ์ค๋ ์ท, beforeโafter ์๊น ํ์, ํธ์ง์ ๋๋ค์
๋งค๋ฌผ ๋ชฉ๋ก ํํฐ
์๋จ /persons ํํฐ:
- ํ๋: ์งํ ์ค / 30์ผ+ ๋ฏธํ๋ / ํ ๋ฒ๋ ๋ง๋จ X
- ์ ๋ ฌ: ๋ฑ๋ก์ / ์ต๊ทผ ํ๋์ / ์ค๋ ์ ์๋์
- owner: ๋ด ๋งค๋ฌผ / ๋ฏธ์ง์ / ํน์ ๋ง๋ด๋
5.5 ๋งค๋ฌผ ๊ณต๊ฐ ๋ฒ์ ๐
๋งค๋ฌผ ๋ฑ๋กํ ์ฌ๋(owner)์ด ๋งค๋ฌผ ์์ ํ๋ฉด์์ ๊ณต๊ฐ ๋ฒ์๋ฅผ ์ ํ ์ ์์ด์:
- ๋ชจ๋ ๊ณต๊ฐ (๊ธฐ๋ณธ) โ ๋ชจ๋ ๋ง๋ด๋๊ฐ ๋ณผ ์ ์์
- ํน์ ๋ง๋ด๋๋ง โ ์ ํํ ๋ง๋ด๋ + ๋ + ์ฑ ์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
๋น๊ณต๊ฐ๋ก ์ค์ ํ๋ฉด: - ๋งค๋ฌผ ๋ชฉ๋ก์์ ์ ์ธ๋์ด ๋ณด์ (ํ๋ฝ ์ ๋ admin) - ๋งค๋ฌผ ์์ธ ํ์ด์ง 403 - ๋งค๋ฌผ ์์ธ ํค๋์ ๐ ๋น๊ณต๊ฐ ๋ฑ์ง (owner / ์ฑ ์์์๊ฒ๋ง ํ์)
๊ณต๊ฐ ๋ฒ์ ๋ณ๊ฒฝ์ owner ๋ณธ์ธ ๋๋ ์ฑ ์์๋ง ๊ฐ๋ฅ. ๋ค๋ฅธ ๋ง๋ด๋๋ ์ค์ UI ์์ฒด ์ ๋ณด์.
6. ๋ค๋ฅธ ๋ง๋ด๋์ ๋งค๋ฌผ์ ์๊ฐ ์์ฒญ ๋ณด๋ด๊ธฐ ๐จ
๊ฐ์ด ์ฐ๋ ๋ง๋ด๋๊ฐ 2๋ช
+ ์ผ ๋:
1. ๋ค๋ฅธ ๋ง๋ด๋ ์์ ๋งค๋ฌผ ์์ธ โ ๐จ ์๊ฐ ์์ฒญ ๋ฒํผ
2. ๋ด ๋งค๋ฌผ ์ค ์ด๋ ๊ฒ ์๊ฐ? + ๋ฉ๋ชจ โ ๋ณด๋ด๊ธฐ
3. ์๋ ๋ง๋ด๋๊ฐ /requests ์์ ํ์ธ โ ๋ณธ์ธ์ด IRL๋ก ๋งค๋ฌผ์ ๋ฌผ์ด๋ด
4. ์๋ฝ โ ๋ง๋จ ๊ธฐ๋ก(PENDING) ์๋ ์์ฑ, ์์ชฝ ๋งค๋ฌผ ํ์๋ผ์ธ์ ์ฆ์ ๋
ธ์ถ
5. ๊ฑฐ์ โ ์ฌ์ ๋ฉ๋ชจ์ ํจ๊ป ๋ณด๋ธ์ด์๊ฒ ์๋ฆผ
์์ฒญ ์ํ: PENDING / ACCEPTED / DECLINED / WITHDRAWN
์๊ธฐ ๋งค๋ฌผ๋ผ๋ฆฌ ๋งค์นญ์ ์์ฒญ X โ ๊ทธ๋ฅ
/encounters/new์์ ๋ ๋งค๋ฌผ ๊ณจ๋ผ ๋ฐ๋ก ๊ธฐ๋ก.
7. ํธํ์ฑ ์ฒดํฌ
/compatibility ๋๋ ๋งค๋ฌผ ์์ธ์ ํธํ์ฑ ์ฒดํฌ:
- ๋ ๋งค๋ฌผ ์ ํ
- ์ด์ ๋ง๋จ ๊ธฐ๋ก / ์ฑ๋ณ / ๋์ด ์ฐจ์ด / ํค ์ฐจ์ด ๋ถ์
- "์ด ๋๋ก ๋ง๋จ ๊ธฐ๋ก ๋ง๋ค๊ธฐ" ๋ฒํผ์ผ๋ก ๋ฐ๋ก ๋ฑ๋ก
8. ๊ฒ์
๋งค๋ฌผ ๋ชฉ๋ก ๊ฒ์์ฐฝ: ID / ์ด๋ฆ / ์ง์ญ / ์ง์ฅ ๋ถ๋ถ ์ผ์น.
9. ๋งค๋ฌผ ์์ ๊ถํ
- ๋ฑ๋กํ admin (owner) ๋ง ์์ /์ญ์
- ์ฑ ์์(๐)๋ ๋ชจ๋ ๋งค๋ฌผ ์์ /์ญ์ (override)
- ๋ฏธ์ง์ ๋งค๋ฌผ์ ๋๊ตฌ๋ (๋ด์๊ฐ๊ฒ)
- ๊ถํ ์๋ ์ฌ๋์๊ฒ ๐ ํ์
10. ์ญ์ ์ ์ฑ
๋งค๋ฌผ ์ญ์ โ ํ๋ ์ญ์
- DB row + ์ฌ์ง ํ์ผ + ์ ๋ณด ๋ณ๊ฒฝ ์ด๋ ฅ ์๊ตฌ ์ ๊ฑฐ
- ๋ง๋จ ๊ธฐ๋ก์ ๋ณด์กด โ FK ๋๊ณ
public_id (deleted)์ค๋ ์ท์ผ๋ก ์ทจ์์ ํ์ - ํ ๋ฒ ์ญ์ ํ๋ฉด ๋ณต๊ตฌ X. ๋ณด๊ดํ ๊ฑฐ๋ฉด ๊ทธ๋ฅ ๋์ธ์.
๋ง๋จ ๊ธฐ๋ก ์ญ์
- ์๋ชป ์ ๋ ฅํ ๊ฒฝ์ฐ๋ง
- ๊ฒฐ๊ณผ ๋ณ๊ฒฝ ์ด๋ ฅ(EncounterEvent)๋ ํจ๊ป ์ญ์