๐Ÿ“– star365 Docs
โ† ๋ณด๊ณ ์„œ ๋ชฉ๋ก

Starium Global Phase 4 Sprint โ€” 2026-05-09

์š”์•ฝ

Phase 3 ํ›„์†. ์‚ฌ์šฉ์ž ๋ช…๋ น(์ž„์‹œ๊ด€๋ฆฌ์ž) ๊ธฐ๋ฐ˜ 10 ํ›„๋ณด ์ค‘ 6๊ฐœ ์ž์œจ ์ง„ํ–‰ (Cloudflare DNS / ์นด์นด์˜คยทWeChatยทLINE ๊ณต์‹ ์ฑ„๋„ / Case Study ํ™˜์ž ๋™์˜ / Plausible/GA4 ๊ณ„์ • / MN ๋ฒˆ์—ญ์€ ์‚ฌ์šฉ์ž ์•ก์…˜). 7 task ๋ชจ๋‘ PASS โ€” ์ž๋™ ๋‹ต์žฅ ์ฝ”๋“œ / Discord ๋ถ„๊ธฐ / Web Vitals ์ธก์ • / Service Worker / A/B variant ์‹ค ์ฝ˜ํ…์ธ  + E2E ๊ฒ€์ฆ.

E2E ๊ฒฐ๊ณผ (๋ชจ๋‘ PASS)

ํ•ญ๋ชฉ ๊ฒฐ๊ณผ
Inquiry ์ž๋™ ๋‹ต์žฅ nodemailer ์„ค์น˜ + STARIUM_SMTP_* env ์ถ”๊ฐ€ + locale๋ณ„ ko/zh/en ํ…œํ”Œ๋ฆฟ + auto_reply_sent_at ๊ธฐ๋ก. ํ˜„ ์ž๊ฒฉ์ฆ๋ช… invalid (Gmail App Password ์‚ฌ์šฉ์ž ์•ก์…˜ ํ•„์š”) โ€” ์ฝ”๋“œ๋Š” ํ™œ์„ฑ, valid ์ž๊ฒฉ์ฆ๋ช… ์ž…๋ ฅ ์‹œ ์ฆ‰์‹œ ์ž‘๋™
Discord webhook ๋ถ„๊ธฐ DISCORD_WEBHOOK_URL env ๋ณด์œ  (hermes phase 5 ์ž”์กด) โ†’ inquiry POST ํ›„ ์ž๋™ ๋ฐœ์†ก
Core Web Vitals LCP / FCP / CLS / INP 4๊ฐœ ์ธก์ • (์ž์ฒด PerformanceObserver) โ†’ /api/event web_vital ์ž๋™ ์ˆ˜์ง‘
Service Worker /starium-global/sw.js (2.1KB, stale-while-revalidate HTML + cache-first ์ด๋ฏธ์ง€/CSS) + manifest.json + Service-Worker-Allowed header
A/B variant ์‹ค ์ฝ˜ํ…์ธ  hero_cta_v1 ์‹คํ—˜ ์ž๋™ ์‹œ์ž‘: visitor_id (localStorage) + sessionStorage ์บ์‹œ + variant B = bg-rose-500 (vs ๊ธฐ์กด bg-slate-900) + data-track-cta ์ž๋™ ์ฒจ๋ถ€
sitemap 48 URLs ์œ ์ง€
ํŽ˜์ด์ง€ ์ดํ•ฉ 53 (Phase 3 ๋Œ€๋น„ ๋ณ€ํ™” ์—†์Œ, ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋งŒ)
ํŠธ๋ ˆ์ด๋”ฉ / ์„œ๋น„์Šค ๋ชจ๋‘ active

์ž‘์—… (Phase 4A โ†’ 4B โ†’ 4C)

Phase 4A (๋ณ‘๋ ฌ 4๊ฐœ)

Phase 4B (1๊ฐœ)

Phase 4C: E2E + cleanup

๋ฏธ์™„๋ฃŒ (์‚ฌ์šฉ์ž ์•ก์…˜ ํ•„์š”)

  1. SMTP ์ž๊ฒฉ์ฆ๋ช… โ€” Gmail App Password ๋ฐœ๊ธ‰ ๋˜๋Š” SendGrid/Mailgun/Resend API ๊ฐ€์ž… โ†’ STARIUM_SMTP_* env ๊ฐฑ์‹  ์‹œ ์ž๋™ ๋‹ต์žฅ ์ฆ‰์‹œ ์ž‘๋™
  2. ์นด์นด์˜ค/WeChat/LINE ๊ณต์‹ ์ฑ„๋„ โ€” ์ฑ„๋„ ๋ฐœ๊ธ‰ ํ›„ QR ๊ต์ฒด
  3. Case Study ์‹ค ๋ฐ์ดํ„ฐ โ€” ํ™˜์ž ๋™์˜ ๋ฐ›์€ ํ›„๊ธฐ (์˜๋ฃŒ๊ด‘๊ณ ๋ฒ•)
  4. MN(๋ชฝ๊ณจ์–ด) ๋ฒˆ์—ญ โ€” ๋ณ„๋„ ๋ฒˆ์—ญ ์ž‘์—… ๋˜๋Š” LLM ๋ฒˆ์—ญ (xAI/Gemini)
  5. Cloudflare DNS โ€” DNS ์ „ํ™˜ ์•ก์…˜
  6. Plausible/GA4 โ€” ๊ณ„์ • ๊ฐ€์ž… โ†’ ์ž์ฒด ์‹œ์Šคํ…œ ์™ธ ์ถ”๊ฐ€ ๋ถ„์„ (ํ˜„์žฌ๋Š” ์ž์ฒด๋กœ ์ถฉ๋ถ„)

๋ณ€๊ฒฝ ํŒŒ์ผ

์‹ ๊ทœ

์ˆ˜์ •

DB

์•ˆ์ „ ์ ๊ฒ€

CEO ์‚ฌ์šฉ ๊ฐ€์ด๋“œ (Phase 4)

์ž๋™ ๋‹ต์žฅ ํ™œ์„ฑ (์‚ฌ์šฉ์ž ์•ก์…˜)

# Gmail App Password (https://myaccount.google.com/apppasswords) ๋˜๋Š” SendGrid ๊ฐ€์ž…
# /etc/star365-worker.env ํŽธ์ง‘:
sudo nano /etc/star365-worker.env
# STARIUM_SMTP_PASSWORD=<App Password 16 char> ๊ฐฑ์‹  ํ›„
sudo systemctl restart star365-ceo

Web Vitals ํ†ต๊ณ„ ์กฐํšŒ

CEO_KEY=$(cat /root/.ceo_access_key)
psql "postgres://paperclip:REDACTED-20260611@localhost:5432/star365_hub" -c "
SELECT meta->>'name' AS metric, meta->>'rating' AS rating, COUNT(*),
       AVG((meta->>'value')::int) AS avg_ms, percentile_disc(0.75) WITHIN GROUP (ORDER BY (meta->>'value')::int) AS p75
FROM starium_global_events
WHERE event_type='web_vital' AND created_at > NOW() - INTERVAL '7 days'
GROUP BY 1,2 ORDER BY 1,2"

A/B ๊ฒฐ๊ณผ ์กฐํšŒ

CEO_KEY=$(cat /root/.ceo_access_key)
curl -sk -H "X-CEO-Key: $CEO_KEY" "https://ceo.star365.site/api/starium-global/ab-results?experiment_key=hero_cta_v1"

Phase 5 ํ›„๋ณด (๋‚จ์€ ์ž‘์—…)

์‚ฌ์šฉ์ž ์•ก์…˜ ํ•„์š” (๋ธ”๋กœํ‚น)

  1. SMTP ์ž๊ฒฉ์ฆ๋ช… (Gmail App Password ๋˜๋Š” SendGrid)
  2. Cloudflare DNS
  3. ์นด์นด์˜คยทWeChatยทLINE ๊ณต์‹ ์ฑ„๋„ ๋ฐœ๊ธ‰
  4. Case Study ํ™˜์ž ๋™์˜ ์ฝ˜ํ…์ธ 

Claude ์ž์œจ ๊ฐ€๋Šฅ (๋‚จ์€ ์˜ต์…˜)

  1. MN ํŽ˜์ด์ง€ LLM ์ž๋™ ๋ฒˆ์—ญ (xAI grok-3-mini ๋˜๋Š” Gemini)
  2. inquiry โ†’ Slack webhook ์ถ”๊ฐ€ (Discord ์™ธ)
  3. Web Vitals ๋Œ€์‹œ๋ณด๋“œ ์นด๋“œ (admin/index.html์— ์ถ”๊ฐ€)
  4. A/B ์ถ”๊ฐ€ ์‹คํ—˜ (button ์ƒ‰์ƒ ์™ธ hero copy A/B)
  5. ์ด๋ฏธ์ง€ lazy-load IntersectionObserver fallback (ํ˜„ loading=lazy attr๋งŒ)
  6. Critical CSS ์ธ๋ผ์ธ (above-the-fold ์Šคํƒ€์ผ๋งŒ inline)
  7. RSS feed (programs 11๊ฐœ)
  8. ๋‹ค๊ตญ์–ด sitemap index (sitemap-ko.xml + sitemap-zh.xml + sitemap-en.xml)
  9. Plausible ์ž์ฒด ํ˜ธ์ŠคํŒ… (Docker ์ปจํ…Œ์ด๋„ˆ ์ถ”๊ฐ€)

๋ฉ”๋ชจ๋ฆฌ/๋ณด๊ณ ์„œ