μ¬μ§ ν μ₯μΌλ‘ λννκΈ°λ¬Ό ν보λ₯Ό μ°Ύκ³ , κ°λ¨κ΅¬ κΈ°μ€μ νλͺ©Β·κ·κ²©Β·μμ μμλ£λ₯Ό νμΈν΄ μ κ³ μ€λΉκΉμ§ λλ μΉ μλΉμ€μ λλ€.
μλΉμ€ 체ννκΈ° Β· λ°ν μλ£ λ³΄κΈ°
λ²λ¦¬λ―Έλ μ¬μ©μκ° λ¬Όκ±΄μ μ νν μ΄λ¦κ³Ό λ°°μΆ κ·μ μ μΌμΌμ΄ μ°Ύλ λμ , μ¬μ§μμ μ¬λ¬ 물건μ μ°Ύμ μ κ³ μ νμν λͺ©λ‘μΌλ‘ μ λ¦¬ν΄ μ€λλ€. AIκ° λͺ¨λ κ²μ κ²°μ νμ§λ μμ΅λλ€. AIλ μ¬μ§μ κ΄μ°°νκ³ , μλ²λ 곡μ κ·μΉμ λ°νμΌλ‘ νμ νλ©°, μ¬μ©μκ° λ§μ§λ§μΌλ‘ νμ ν©λλ€.
νμ¬ μλΉμ€λ μμΈ κ°λ¨κ΅¬ λννκΈ°λ¬Ό κΈ°μ€μΌλ‘ λμν©λλ€. λΆμ κ²°κ³Όμ μμλ£λ μ κ³ μ€λΉλ₯Ό μν μ°Έκ³ μ 보μ΄λ©°, μ€μ λ°°μΆ κ°λ₯ μ¬λΆμ μ΅μ’ κΈμ‘μ κ°λ¨κ΅¬ 곡μ μ κ³ νμ΄μ§μμ λ€μ νμΈν΄μΌ ν©λλ€.
- μλΉμ€κ° μλνλ μμ
- μ 체 μ€κ³ ꡬ쑰
- ν΄λλ³ μν
- ν νμ λ°©μ
- λ‘컬 μ€ν λ°©λ²
- κ²μ¦ λͺ λ Ήμ΄
- λ°°ν¬ κ΅¬μ‘°
λννκΈ°λ¬Όμ λ²λ¦΄ λλ μκ°λ³΄λ€ λ§μ μ 보λ₯Ό μ§μ μ°ΎμμΌ ν©λλ€.
- λ΄κ° λ²λ¦¬λ €λ λ¬Όκ±΄μ΄ νμ μ μ΄λ€ νλͺ©μΈμ§ μμμΌ ν©λλ€.
- κ°μ μνλ μ± μλ ν¬κΈ°μ κ·κ²©μ λ°λΌ μμλ£κ° λ¬λΌμ§λλ€.
- μ¬μ§ μ 물건 μ€μλ λννκΈ°λ¬Όμ΄ μλλΌ λΆλ¦¬λ°°μΆμ΄λ μ μ© μκ±°ν¨ λμμΈ κ²λ μμ΅λλ€.
λ²λ¦¬λ―Έλ μ΄ κ³Όμ μ λ€μ μΈ λ¨κ³λ‘ μ€μ λλ€.
- λ²λ¦΄ λ¬Όκ±΄μ΄ λͺ¨λ 보μ΄λλ‘ μ¬μ§μ μ°κ±°λ μ¨λ²μμ μ νν©λλ€.
- μ¬μ§μμ 물건μ μ°Ύμ κ°λ¨κ΅¬ νλͺ©κ³Ό κ·κ²©μ λ§λ μμ μμλ£λ₯Ό 보μ¬μ€λλ€.
- μ¬μ©μκ° νλͺ©Β·κ·κ²©Β·μλμ νμΈν λ€ κ³΅μ μ κ³ νμ΄μ§λ‘ μ΄λν©λλ€.
- ν μ₯μ μ¬μ§μμ μ¬λ¬ νκΈ°λ¬Ό ν보 νμ§
- μ¬μ§ μ μμΉ νμμ νλͺ© μΉ΄λ μ°κ²°
- νλͺ©, κ·κ²©, μλμ μ¬μ©μκ° μ§μ μμ
- κ°λ¨κ΅¬ 곡μ νλͺ© κΈ°μ€ μμ μμλ£ μλ΄
- λννκΈ°λ¬Όμ΄ μλ νλͺ©μ λ³λ λ°°μΆ λ°©λ² μλ΄
- λΆμ μ΄λ ₯ νμΈκ³Ό 곡μ μ κ³ νμ΄μ§ μ°κ²°
- Supabase Auth κΈ°λ° νμκ°μ , λ‘κ·ΈμΈ, λ‘κ·Έμμ, νμ νν΄
- νμκ°μ λ° μ¬μ§ μ λ‘λ μ κ°μΈμ 보 μ΄μ© λμ
- μ¬μ§ μ λ ₯ β μΉ΄λ©λΌλ‘ 촬μνκ±°λ μ¨λ²μμ μ¬μ§μ κ³ λ¦ λλ€.
- μ¬μ§ μ€λΉ β λΈλΌμ°μ κ° νμΌ νμκ³Ό ν¬κΈ°λ₯Ό νμΈνκ³ , μ λ‘λνκΈ° μ’μ ν¬κΈ°λ‘ μ€μ λλ€.
- λΆμ μμ² β μ¬μ§μ λΉκ³΅κ° μ μ₯μμ μ¬λ¦¬κ³ λΆμ μμ μ λ±λ‘ν©λλ€.
- 물체 κ΄μ°° β VLM(Vision Language Model)μ΄ λ¬Όμ²΄μ μ΄λ¦, μμΉ, ν¬κΈ°, μ¬μ§, μν λ±μ μ ν΄μ§ JSON νμμΌλ‘ λ°νν©λλ€.
- κ·μΉ μ μ© β μλ²κ° κ΄μ°° κ²°κ³Όλ₯Ό κ°λ¨κ΅¬ μμλ£ λͺ©λ‘κ³Ό λμ‘°ν΄ λ°°μΆ λμκ³Ό μμ κΈμ‘μ κ³μ°ν©λλ€.
- μ¬μ©μ νμΈ β μ¬μ§ μ λ²νΈμ νλͺ© μΉ΄λλ₯Ό λΉκ΅νλ©΄μ νλͺ©Β·κ·κ²©Β·μλμ μμ νκ±°λ μ μΈν©λλ€.
- μ κ³ μ€λΉ β νμ ν λͺ©λ‘κ³Ό μμ ν©κ³λ₯Ό νμΈνκ³ κ°λ¨κ΅¬ 곡μ μ κ³ νμ΄μ§λ‘ μ΄λν©λλ€.
μ¬μ§ λΆμμ λͺ μ΄ μ΄μ 걸릴 μ μμΌλ―λ‘ νλ©΄μ΄ κ²°κ³Όλ₯Ό κΈ°λ€λ¦¬λ©° λ©μΆμ§ μλλ‘ λΉλκΈ° μμ
μΌλ‘ μ€κ³νμ΅λλ€. λΆμ μμ²μ λ°μΌλ©΄ μλ²λ λ¨Όμ 202 queuedλ₯Ό λ°ννκ³ , λΈλΌμ°μ λ μΌμ κ°κ²©μΌλ‘ μλ£ μ¬λΆλ₯Ό νμΈν©λλ€. μ½κ² λ§ν΄ βμ μ λ²νΈλ₯Ό λ¨Όμ λ°κ³ , μ€λΉκ° λλ¬λμ§ λ€μ λ¬Όμ΄λ³΄λ λ°©μβμ
λλ€.
flowchart LR
A[λΈλΌμ°μ <br/>Next.js νλ©΄] -->|λ‘κ·ΈμΈ| B[Supabase Auth]
A -->|μ
λ‘λ ν ν° μμ²| C[Vercel<br/>Route Handler]
C -->|μΌνμ© ν ν° λ°κΈ| D[Supabase Storage<br/>λΉκ³΅κ° μ¬μ§]
A -->|ν ν°μΌλ‘ μ§μ μ
λ‘λ| D
A -->|λΆμ μμ
μμ±| C
C --> E[Supabase Postgres<br/>μμ
μνμ κ²°κ³Ό]
E -->|pg_net λΉλκΈ° νΈμΆ| F[Supabase Edge Function]
F -->|μ¬μ§ κ΄μ°° μμ²| G[OpenAI Responses API]
G -->|ꡬ쑰νλ κ΄μ°° κ²°κ³Ό| F
F -->|κ²μ¦Β·κ·μΉ μ μ© ν μ μ₯| E
A -->|μλ£λ λκΉμ§ polling| C
C -->|νμ¬ μν λλ κ²°κ³Ό| A
| κ΅¬μ± μμ | νλ μΌ | νμ§ μλ μΌ |
|---|---|---|
| λΈλΌμ°μ / Next.js νλ©΄ | λ‘κ·ΈμΈ, μ¬μ§ μ νΒ·μ μ²λ¦¬, μ λ‘λ, μ§ν μν νμ, κ²°κ³Ό μμ | OpenAIλ₯Ό μ§μ νΈμΆνκ±°λ λΉλ° ν€λ₯Ό 보κ΄νμ§ μμ |
| Vercel Route Handler | κ³΅κ° API μ 곡, Supabase JWT κ²μ¦, μ λ‘λ ν ν° λ°κΈ, λΆμ μμ μμ±Β·μ‘°ν | AI λΆμμ λκΈ°μμΌλ‘ μ²λ¦¬νμ§ μμ |
| Supabase | Auth, λΉκ³΅κ° Storage, Postgres, RLS, μμ μνμ μ¬μ©λ κ΄λ¦¬ | νλ©΄μ λ λλ§νμ§ μμ |
| Supabase Edge Function | μ¬μ§ κ΄μ°° μμ², μλ΅ μ€ν€λ§ κ²μ¦, 보μ κ²μ¬, μμλ£ κ·μΉ μ μ© | λΈλΌμ°μ μ λͺ¨λΈ ν€λ₯Ό λ ΈμΆνμ§ μμ |
| VLM | μ¬μ§ μ 물체·μμΉΒ·μ¬μ§Β·μνΒ·ν¬κΈ°λ₯Ό κ΄μ°° | μμλ£μ μ΅μ’ λ°°μΆ λ°©λ²μ μμλ‘ κ²°μ νμ§ μμ |
κ³΅μ© κ³μ½ (shared/) |
Frontend, Backend, VLMμ΄ μ£Όκ³ λ°λ λ°μ΄ν° νμμ μ μ | νΉμ ννΈλ§μ ꡬν μΈλΆμ¬νμ λ΄μ§ μμ |
κ°λ¨ν μ 리νλ©΄ Vercelμ νλ©΄κ³Ό κ³΅κ° APIμ μ ꡬ, Supabaseλ μΈμ¦Β·μ μ₯Β·λ°μ΄ν°Β·λ°±κ·ΈλΌμ΄λ μμ , VLMμ μ¬μ§μ ꡬ쑰νλ κ΄μ°° λ°μ΄ν°λ‘ λ°κΎΈλ λμ λλ€.
- λΈλΌμ°μ κ°
POST /api/uploadsλ‘ μΌνμ© μ λ‘λ ν ν°μ μμ²ν©λλ€. - λΈλΌμ°μ κ° ν ν°μ μ΄μ©ν΄ μ¬μ§μ Supabaseμ λΉκ³΅κ° Storageμ μ§μ μ¬λ¦½λλ€.
POST /api/analysesκ° Postgresμ λΆμ μμ μ λ§λ€κ³ μ¦μ202 queuedλ₯Ό λ°νν©λλ€.- Postgres triggerκ°
pg_netμ ν΅ν΄ Supabase Edge Functionμ λΉλκΈ°λ‘ νΈμΆν©λλ€. - Edge Functionμ΄ OpenAI Responses APIμ μ¬μ§ κ΄μ°°μ μμ²ν©λλ€.
- μ ν΄μ§ JSON Schemaμ 보μ κ²μ¬λ₯Ό ν΅κ³Όν κ²°κ³Όμλ§ κ°λ¨κ΅¬ κ·μΉμ μ μ©ν΄ μ μ₯ν©λλ€.
- λΈλΌμ°μ κ°
GET /api/analyses/{id}λ₯Ό λ°λ³΅ νΈμΆνμ¬ μλ£λ κ²°κ³Όλ₯Ό κ°μ Έμ΅λλ€.
VLMμ μ¬μ§μμ 보μ΄λ μ λ³΄λ§ λ°νν©λλ€. λ°°μΆ κ°λ₯ μ¬λΆμ μμλ£λ λ°±μλκ° κ΄λ¦¬νλ κ°λ¨κ΅¬ 곡μ μΉ΄νλ‘κ·Έμ κ·μΉμΌλ‘ κ²°μ ν©λλ€. μ¬μ§λ§μΌλ‘ κ·κ²©μ νλλ‘ νμ νκΈ° μ΄λ ΅λ€λ©΄ κΈμ‘μ μ§μ΄λ΄μ§ μκ³ κ³΅μ κΈμ‘ λ²μλ νμΈ νμ μνλ₯Ό 보μ¬μ€λλ€.
μ¬μ§ μ 물체μ κ²°κ³Ό μΉ΄λμλ κ°μ IDμ μμμ μ¬μ©ν©λλ€. μ¬μ©μλ AIκ° μ μν νλͺ©μ μ¬μ§κ³Ό λΉκ΅νκ³ , μλͺ»λ νλͺ©μ μμ νκ±°λ μ μΈν λ€ μ΅μ’ λͺ©λ‘μ νμ ν μ μμ΅λλ€.
λΆμ μμ²κ³Ό κ²°κ³Ό μ‘°νλ₯Ό λΆλ¦¬νμ΅λλ€. λͺ¨λΈ μλ΅μ΄ λ¦μ΄μ Έλ μ¬μ©μλ μ§ν μνλ₯Ό λ³Ό μ μκ³ , κ° λΆμμ Postgresμ ν νμΌλ‘ λ¨μ μ΄μ μ€μλ μνλ₯Ό μΆμ ν μ μμ΅λλ€.
λΈλΌμ°μ μλ OpenAI API keyλ Supabase service role keyλ₯Ό λ ΈμΆνμ§ μμ΅λλ€. OpenAI κ΄λ ¨ λΉλ° κ°μ Supabase Edge Function secretκ³Ό Vaultμμ κ΄λ¦¬ν©λλ€.
μ¬μ§μ μ ν κΈμλ κ΄μ°° λμμΌ λΏ μμ€ν λͺ λ Ήμ΄ μλλλ€. ν둬ννΈ, JSON Schema, μλ² κ²μ¦μ μ¬λ¬ λ¨κ³μμ prompt injection μ νΈλ₯Ό νμΈνλ©°, μμ¬μ€λ¬μ΄ κ²°κ³Όλ μ¬μ©μμκ² μ λ¬νμ§ μκ³ μ€ν¨ μ²λ¦¬ν©λλ€.
beorimi/
ββ frontend/ # Next.js νλ©΄κ³Ό Vercel Route Handler API
β ββ src/app/api/ # μ
λ‘λΒ·λΆμΒ·κ³μ κ³΅κ° API
ββ supabase/ # μ΄μ λ°±μλ
β ββ migrations/ # DB μ€ν€λ§, RLS, Storage, trigger, cron
β ββ functions/analyze/ # λΉλκΈ° λΆμ Edge Function
ββ shared/ # μΈ ννΈκ° 곡μ νλ λ°μ΄ν° κ³μ½
β ββ api/openapi.yaml # κ³΅κ° API λͺ
μΈ
β ββ schemas/ # μμ²Β·μλ΅ JSON Schema
ββ vlm/ # ν둬ννΈμ μ€ν€λ§λ₯Ό μ€ννλ λ‘컬 Python λꡬ
ββ docs/ # μν λ³ μμΈ κ°μ΄λμ νμ
μμ² λ³΄λ
ββ legacy/aws/ # μ΄μμμ μ μΈλ μ΄μ AWS ꡬν
ββ AGENTS.md # μ μ₯μ μ 체 μμ
κ·μΉ
ββ beorimi-slide.html # νλ‘μ νΈ λ°ν μλ£
μ²μ μ°Έμ¬νλ€λ©΄ μλμ²λΌ μ°ΎμΌλ©΄ λ©λλ€.
| νκ³ μΆμ μΌ | λ¨Όμ λ³Ό κ³³ |
|---|---|
| νλ©΄μ΄λ μ¬μ©μ λμ μμ | frontend/ β frontend/AGENTS.md |
| API, DB, μΈμ¦, Storage μμ | supabase/ β supabase/AGENTS.md |
| μ΄μ λΆμ worker μμ | supabase/functions/analyze/ |
| VLM ν둬ννΈΒ·μλ΅ μ€ν | vlm/ β vlm/AGENTS.md |
| API νλλ JSON ꡬ쑰 λ³κ²½ | shared/api/openapi.yaml, shared/schemas/ |
| λ€λ₯Έ μν μ μμ μμ² | docs/cowork_ground.md |
λ²λ¦¬λ―Έλ Frontend, Backend, VLM μΈ μν μ΄ κ°μμ ν΄λλ₯Ό λ§‘κ³ , shared/μ λ°μ΄ν° κ³μ½μΌλ‘ μ°κ²°λλ ꡬ쑰μ
λλ€.
| μν | μ£Όμ μ± μ | λ΄λΉ κ²½λ‘ |
|---|---|---|
| Frontend | νλ©΄, μ¬μ§ μ λ ₯, μ¬μ©μ μμ , API νΈμΆ, κ²°κ³Ό νμ | frontend/ |
| Backend | κ³΅κ° API, μΈμ¦ κ²μ¦, DB, Storage, λΉλκΈ° μμ , μ΅μ’ λ°°μΆ νμ | frontend/src/app/api/, supabase/ |
| VLM | μ΄λ―Έμ§ κ΄μ°° ν둬ννΈ, ꡬ쑰νλ μΆλ ₯, κ΄μ°° νμ§κ³Ό μμ μ± | μ΄μ: supabase/functions/analyze/, μ€ν: vlm/ |
- λ²μλ₯Ό μ ν©λλ€. μμ μ΄ Frontend, Backend, VLM μ€ μ΄λμ μνλμ§ λ¨Όμ μ ν©λλ€.
- μν κ·μΉμ μ½μ΅λλ€. ν΄λΉ ν΄λμ
AGENTS.mdμ νμνdocs/<role>.mdλΆλΆλ§ νμΈν©λλ€. - κ°μ λ§‘μ ν΄λμμ μμ ν©λλ€. ννΈλ³ λΈλμΉμμ λ³κ²½νκ³ , λ€λ₯Έ μν μ μ½λλ₯Ό μμλ‘ ν¨κ» μμ νμ§ μμ΅λλ€.
- μΈν°νμ΄μ€ λ³κ²½μ κ³μ½λΆν° μμ ν©λλ€. μμλ νμ
shared κ³μ½ β λ°μ΄ν°λ₯Ό μ 곡νλ μ½λ β λ°μ΄ν°λ₯Ό μ¬μ©νλ μ½λμ λλ€. - ννΈλ³ κ²μ¦μ μ€νν©λλ€. μμ ν μ€νΈλΆν° lint, build, ν΅ν© νμΈ μμΌλ‘ κ²μ¦ν©λλ€.
- κ²ν ν
mainμ ν©μΉ©λλ€. λ¨Έμ§ν λ ꡬνλΏ μλλΌ κ³΅μ© μ€ν€λ§μ λ¬Έμκ° ν¨κ» λ§λμ§ νμΈν©λλ€.
μλ₯Ό λ€μ΄ λΆμ κ²°κ³Όμ μ νλλ₯Ό μΆκ°νλ€λ©΄ λ€μ μμλ‘ μμ ν©λλ€.
shared/schemas μμ
β
Supabase Edge Functionμ΄ μ νλλ₯Ό μ 곡
β
Vercel APIκ° μλ΅μ κ²μ¦
β
Frontendκ° μ νλλ₯Ό νλ©΄μ νμ
ν μν μμ λ€λ₯Έ μν μ λ³κ²½μ΄ νμνλ©΄ docs/cowork_ground.mdμ μμ²μ λ¨κΉλλ€.
- μμ²μκ° μλ£ μ‘°κ±΄κ³Ό νμν λ°μ΄ν° νμμ μ μ΅λλ€.
- λ΄λΉ μν μ΄ μλ΅κ³Ό κ²μ¦ μ¦κ±°λ₯Ό κΈ°λ‘ν©λλ€.
- μμ²μκ° κ²°κ³Όλ₯Ό νμΈν λ€μλ§ μμ²μ
DONEμΌλ‘ λ«μ΅λλ€. - ν μν μμμ λλλ λ¨μ TODOλ νμ 보λμ μ¬λ¦¬μ§ μμ΅λλ€.
μ΄ λ°©μμ βνλ‘ νΈκ° λ°±μλ μλ΅μ μΆμΈ‘νλ λ¬Έμ βλ βVLM μΆλ ₯μ΄ λ°λμλλ° μ€ν€λ§μ νλ©΄μ΄ μλ‘ λ€λ₯Έ λ¬Έμ βλ₯Ό μ€μ¬ μ€λλ€.
- Node.js 22.13 μ΄μ
- npm
- μ°κ²°ν Supabase νλ‘μ νΈ
- Supabase CLI β migrationμ΄λ Edge Functionμ μμ ν λλ§ νμ
- Python 3 β λ‘컬 VLM μ€νμ ν λλ§ νμ
PowerShell κΈ°μ€μΌλ‘ μμ νμΌμ 볡μ¬ν©λλ€.
Copy-Item frontend/.env.example frontend/.env.localfrontend/.env.localμ μμ μ Supabase νλ‘μ νΈ κ°μ λ£μ΅λλ€.
NEXT_PUBLIC_SUPABASE_URL=https://<project-ref>.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=<publishable-key>
SUPABASE_SERVICE_ROLE_KEY=<server-only-service-role-key>| νκ²½ λ³μ | μ©λ | λΈλΌμ°μ κ³΅κ° μ¬λΆ |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL |
Supabase νλ‘μ νΈ μ£Όμ | κ³΅κ° κ°λ₯ |
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY |
λΈλΌμ°μ μ© κ³΅κ° ν€ | κ³΅κ° κ°λ₯ |
SUPABASE_SERVICE_ROLE_KEY |
Vercel APIμ μλ² μμ μ© ν€ | κ³΅κ° κΈμ§ |
SUPABASE_SERVICE_ROLE_KEYμλ μ λ NEXT_PUBLIC_ μ λμ¬λ₯Ό λΆμ΄μ§ λ§κ³ , λΈλΌμ°μ μ»΄ν¬λνΈμμλ μ½μ§ λ§μΈμ.
npm.cmd --prefix frontend ci
npm.cmd --prefix frontend run devλΈλΌμ°μ μμ http://localhost:3000μ μ΄λ©΄ λ©λλ€. μ€μ λ‘κ·ΈμΈΒ·μ
λ‘λΒ·λΆμ νλ¦μ νκ²½ λ³μμ μ°κ²°ν Supabase νλ‘μ νΈμ Auth, Storage, DB, Edge Function ꡬμ±μ΄ μλ£λμ΄ μμ΄μΌ λμν©λλ€.
μ΄μ λΆμμ Supabase Edge Functionμμ μ€νλ©λλ€. vlm/μ ν둬ννΈμ μλ΅ νμμ λ‘컬μμ μ€νν λ μ¬μ©ν©λλ€.
Copy-Item vlm/.env.example vlm/.env
python -m pip install -r vlm/requirements.txt -r vlm/requirements-dev.txt
python -m vlm.app.cli <image-path>vlm/.envμλ λ‘컬 μ€νμ© OPENAI_API_KEYλ₯Ό μ€μ ν΄μΌ ν©λλ€. μ€μ ν€κ° λ€μ΄κ° .env νμΌμ Gitμ μ¬λ¦¬μ§ λ§μΈμ.
λ³κ²½ν μμλΆν° νμΈν λ€ νμν μ 체 κ²μ¦μ μ€νν©λλ€.
# Frontend lintμ λ°°ν¬μ© build
npm.cmd --prefix frontend run lint
npm.cmd --prefix frontend run build
# λ‘컬 VLM ν
μ€νΈ
python -m pytest vlm/tests
# Supabase λΆμ worker ν
μ€νΈ
node --experimental-strip-types --test supabase/functions/analyze/*.test.ts-
νλ‘μ νΈλ₯Ό μ°κ²°νκ³ migrationμ λ°μν©λλ€.
supabase link --project-ref <project-ref> supabase db push
-
λΆμ Edge Functionμ λ°°ν¬ν©λλ€.
supabase functions deploy analyze
-
Edge Function secretμ
OPENAI_API_KEY,OPENAI_VLM_MODEL,ANALYSIS_WORKER_SECRETμ λ±λ‘ν©λλ€. -
Supabase Vaultμ λ€μ κ°μ λ±λ‘ν©λλ€.
beorimi_analysis_worker_url: λ°°ν¬λanalyzeEdge Function URLbeorimi_analysis_worker_secret:ANALYSIS_WORKER_SECRETκ³Ό κ°μ κ°
-
Supabase Authμ Site URLκ³Ό νμ© Redirect URLμ Vercel μ΄μ URLμ λ±λ‘ν©λλ€.
OpenAI keyμ worker secretμ Vercelμ΄λ λΈλΌμ°μ νκ²½ λ³μμ λ±λ‘νμ§ μμ΅λλ€.
- νλ‘μ νΈ Root Directoryλ₯Ό
frontendλ‘ μ€μ ν©λλ€. - Build Commandλ₯Ό
npm run buildλ‘ μ€μ ν©λλ€. NEXT_PUBLIC_SUPABASE_URL,NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY,SUPABASE_SERVICE_ROLE_KEYλ₯Ό λ±λ‘ν©λλ€.- λ°°ν¬λ Vercel URLμ Supabase Auth μ€μ μ λ°μν©λλ€.
- νμ¬ μ§μ κΈ°μ€μ μμΈ κ°λ¨κ΅¬μ λλ€.
- μ§μ μ΄λ―Έμ§ νμμ JPEG, PNG, WebPμ΄λ©° μ λ‘λ νλλ 10MiBμ λλ€.
- MVP κ³μ λ³ λΆμ νλλ λμ 30νμ λλ€.
- μλ³Έ μ΄λ―Έμ§μ λΆμ κΈ°λ‘μ κΈ°λ³Έ 30μΌ λ€ μ 리λ©λλ€.
- μμ μμλ£λ μ°Έκ³ κ°μ΄λ©° 곡μ μ κ³ κ³Όμ μμ λ€μ νμΈν΄μΌ ν©λλ€.
- μ΄μ FastAPI, Lambda, S3, SQS, DynamoDB, Cognito, CloudFormation, Amplify, App Runner ꡬνμ
legacy/aws/μ 보쑴λμ΄ μμ§λ§ νμ¬ μ΄μ κ²½λ‘μλ μ¬μ©νμ§ μμ΅λλ€.
- μ±μμ μ κ³ μ μκ±° μΌμ κΉμ§ ν λ²μ μ°κ²°
- OpenAI μΈ λ‘컬 VLMμΌλ‘ κ΅μ²΄ κ°λ₯ν λΆμ provider νμ₯
- κ°λ¨κ΅¬ μΈ λ€λ₯Έ μμΉκ΅¬μ νλͺ©Β·μμλ£ κ·μ μΆκ°