Feature Docs - otw7917/oig GitHub Wiki
1. ํ๋กฌํํธ ๊ธฐ๋ฐ ์ด๋ฏธ์ง ์์ฑ ๋ฐ ์ ์ฅ
๊ธฐ๋ฅ ๊ฐ์
-
์ฌ์ฉ์๊ฐ ์ ๋ ฅํ prompt๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ณ , ์์ฑ๋ ์ด๋ฏธ์ง๋ฅผ
Storage Service
์ ์ ์ฅํ ํด๋น ๊ฒฐ๊ณผ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ฐํํ๋ ๊ธฐ๋ฅ -
Storage Service
๋ ๋ํ์ ์ผ๋ก AWS S3, FireBase์ firestore ๋ฑ๋ฑ์ด ์๋ค.
์ฃผ์ ๊ธฐ๋ฅ ๊ตฌ์ฑ
-
์ด๋ฏธ์ง ์ ์ฅ => Supabase Storage ์ ์ด๋ฏธ์ง ํ์ผ ์ ๋ก๋
-
URL ์์ฑ ->
Storage Service
์ ๊ฒฝ์ฐ Public URL ๋๋ Signed URL์ ์์ฑํ์ฌ ์ฌ์ฉ์์๊ฒ ์ ๋ฌ -
์ธํฐํ์ด์ค
- ์ ๋ ฅ์ฐฝ ์ ๋ ฅ ํ ์คํธ๊ฐ ๊ธธ์ด์ง๋ฉด ์ ๋๋ ์๋๋ก ๋๋ฆด์ ์๊ฒ ํ๊ธฐ
๋ณด์ ๋ฐ ์ ๊ทผ ์ ์ด
- private + signed URL ๋ก ๊ถํ ์ ์ด
- RLS ์ ์ฑ ์ถ๊ฐํด์ ๋ณธ์ธ ์ฌ์ง๋ง ์กฐํํ ์ ์๋๋ก ํ๊ธฐ
์์ธ์ฒ๋ฆฌ ์๋๋ฆฌ์ค
โ ์์ธ ์ฒ๋ฆฌ ์๋๋ฆฌ์ค (HTTP ์ํ ์ฝ๋ ๊ธฐ์ค)
ํ๋กฌํํธ ๊ธฐ๋ฐ ์ด๋ฏธ์ง ์์ฑ ๋ฐ ์ ์ฅ ๊ธฐ๋ฅ์์ ๋ฐ์ํ ์ ์๋ ์ฃผ์ ์๋ฌ ์ผ์ด์ค๋ฅผ ์ ๋ฆฌํ ํ์ ๋๋ค.
๐งพ HTTP ์ํ ์ฝ๋๋ณ ์๋ฌ ๋ชฉ๋ก
HTTP ์ํ ์ฝ๋ | ์ํฉ | ์ค๋ช | ์๋ต ์์ |
---|---|---|---|
400 Bad Request | โ ํ์ ํ๋ผ๋ฏธํฐ ๋๋ฝ | prompt ๊ฐ ์๊ฑฐ๋ ์๋ชป๋ ํ์์ผ ๋ |
{ "error": "Prompt is required." } |
400 Bad Request | ์ด๋ฏธ์ง ํฌ๋งท ์ค๋ฅ | ์๋ต ๋ฐ์ ์ด๋ฏธ์ง๊ฐ null, ๋น ๋ฐ์ดํฐ ๋ฑ ์ ํจํ์ง ์์ ๋ | { "error": "Generated image is invalid." } |
401 Unauthorized | JWT ๋๋ฝ ๋๋ ๋ง๋ฃ | ์ธ์ฆ ์์ด ์์ฒญํ ๊ฒฝ์ฐ | { "error": "Unauthorized request." } |
403 Forbidden | RLS ๋๋ Storage ๊ถํ ์ค๋ฅ | ์ฌ์ฉ์๊ฐ ํด๋น ๋ฆฌ์์ค๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์กฐํํ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ | { "error": "Access denied." } |
404 Not Found | ์ด๋ฏธ์ง ๊ฒฝ๋ก ์์ | Supabase Storage์ ์ ๋ก๋๋ ํ์ผ ๊ฒฝ๋ก๊ฐ ์๋ชป๋์๊ฑฐ๋ ์ฌ๋ผ์ง ๊ฒฝ์ฐ | { "error": "Image not found." } |
429 Too Many Requests | ์์ฒญ ์ด๊ณผ | ์ฌ์ฉ์ ์ ํ ์ด๊ณผ ๋๋ API rate limit ๋๋ฌ | { "error": "Too many requests. Try again later." } |
500 Internal Server Error | ๋ชจ๋ธ API ์๋ฌ | ์ด๋ฏธ์ง ์์ฑ API(OpenAI ๋ฑ) ํธ์ถ ์คํจ | { "error": "Image generation failed. Please try again." } |
500 Internal Server Error | Supabase ์ ๋ก๋ ์คํจ | ํ์ผ ์ ์ฅ ์ค ๋ด๋ถ ์ค๋ฅ ๋ฐ์ | { "error": "Failed to upload image." } |
503 Service Unavailable | ์ธ๋ถ API ์ฅ์ | ์ด๋ฏธ์ง ์์ฑ API ๋๋ Supabase ์๋น์ค ๋ถ์์ | { "error": "Service temporarily unavailable." } |
- ๐ ๊ณตํต ์๋ฌ ์๋ต ํ์ ์์
{
"error": "์ค๋ช
๋ฉ์์ง",
"status": 400,
"timestamp": "2025-07-09T01:20:00+09:00"
}