Commerce Scout โ shop.starium.site ์คํ๋งค ์ฐ๋ โ ์๋ฃ ๋ณด๊ณ
๊ฒฐ๊ณผ: 12/12 Done Criteria PASS
๋ฐ์ฃผํ์ (commerce_draft_orders.status='ordered') ์ํ์ด shop.starium.site์์ ์ค์ ๊ตฌ๋งค ๊ฐ๋ฅํ
shop_products๋ก ์๋ ๋ฑ๋ก๋๋ ์๋ฐฉํฅ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ. ์์/์ฐํ ์์ด ๊ธฐ์กด ์คํค๋งยท์ธ์ฆ ํ
์ฌ์ฌ์ฉ.
์ํคํ
์ฒ
[paperclip] scout-auto-approve(02:30 ์๋) โ
[paperclip] ceo decide(์๋ ๋ฐ์ฃผํ์ ) โผ registerToShop() โ POST /api/v1/internal/commerce-import
[paperclip] backfill-shop(์ผ๊ด) โ X-Internal-Api-Key
โผ
[hospital] shop-api CommerceImport(InternalApiGuard)
ensureScoutShop(์คํ365 ์
๋ ํธ) โ USDร1350 KRW โ ์ด๋ฏธ์ง(naver์ค์ฌ์งโPexels) self-host
โ shop_products upsert by source_product_id (idempotent) โ is_imported=true, is_active=true
์ด๋ฏธ์ง ์๋น: /api/v1/commerce-image/:id (ํ์ฅ์์๋ ๋ผ์ฐํธ = nginx '*.jpgโweb' ์ ๊ท์ ์ฐํ)
๊ฒ์ฆ (์ ๋)
- ์ธ์ฆ: ํค์์/์ค๋ฅ 403, ์ ์ํค ํต๊ณผ
- ๋ฑ๋ก: 38 imported(๋ฐฑํ33+์๋5) + seed15 = 53, is_imported 38/38 active+์ด๋ฏธ์ง
- ๋ฉฑ๋ฑ: ์ฌimport = update(์ค๋ณต0)
- ๊ฐ๊ฒฉ: USDร1350 KRW (์ $32.74โโฉ44,200)
- ๊ตฌ๋งค: ์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ โ /login redirect (์๋์ ๋์ผ ์ค ๊ตฌ๋งคํ๋ฆ)
- ์ด๋ฏธ์ง: /api/v1/commerce-image/* 200 image/jpeg, ์ธ๋ถ์์กด 0
- ์๋๊ฒฝ๋ก: scout-auto-approve ์คํ โ 5๊ฑด ordered+WRS+shop๋ฑ๋ก(created) ํ์ธ
- ํ๊ท: seed 15 ์ ์ ๋
ธ์ถ
- ํ
์คํธ๊ฐ๋: ํ
์คํธ๋๋ฏธ 5๊ฑด ์ ์ธ + ์ ๊ท์ ์ฐจ๋จ
๋ณ๊ฒฝ ํ์ผ
- shop-api(์ ๊ท): commerce-import.{service,controller,module}.ts, commerce-image.controller.ts
- shop-api(ํจ์น): app.module.ts, main.ts(/api/v1/uploads static), ecosystem.config.js(INTERNAL_API_KEY/PEXELS/USD_KRW_RATE)
- paperclip(์ ๊ท): register-to-shop.mjs, backfill-shop.mjs
- paperclip(ํจ์น): scout-auto-approve.mjs(๋ฐฐ์ ), scout-auto-sourcer.mjs(naver image ์บก์ฒ), ceo/server.mjs(decide ๋ฐฐ์ )
์์ฌ/ํ์
- Gemini ๋
๋ฆฝํ๊ฐ ๋ฌด๋ฃ์ฟผํฐ ์ด๊ณผ(๊ฒ์ฆ๋ถ๊ฐ) โ ์ ๋ DC๋ก ๋์ฒด
- ์ผ๋ถ ๋ฐฑํ ์ํ ๊ฐ๊ฒฉ์ด ๋ฎ์(scout USD ์ถ์ ์ ํ๋ โ ์์ค ๋ฐ์ดํฐ ํ์ง ๋ณ๊ฐ ๊ณผ์ )