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

stage8 user.stage8.club 8์–ธ์–ด ๊ธ€๋กœ๋ฒŒ + ๋ชจ๋ฐ”์ผ sprint ์ข…ํ•ฉ ๋ณด๊ณ ์„œ


1. ๋ฐฐ๊ฒฝ

2026-04-28 D-10h prelaunch sprint์—์„œ 6 ์–ธ์–ด(en/ko/ja/zh/th/vi) 100ํ‚ค ์‹œ๋“œ ์™„๋ฃŒ๋œ ์ƒํƒœ. ์‚ฌ์šฉ์ž๊ฐ€ ๋ณธ๊ฒฉ์ ์ธ ๊ธ€๋กœ๋ฒŒ i18n + ๋ชจ๋ฐ”์ผ ๋ฐ˜์‘ํ˜• ๊ฒ€์ฆ ์š”๊ตฌ. /sprint 7๋‹จ๊ณ„ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ๋ˆ„๋ฝ ์—†์ด ์ง„ํ–‰ ์ง€์‹œ.

2. ์ง„๋‹จ (P1)

ํ•ญ๋ชฉ ๋ฐœ๊ฒฌ
next-intl ์„ค์ • 4.8.2 ์ •์ƒ (cookie/header ์ „ํ™˜)
config.ts ์ •์˜ ์–ธ์–ด 8๊ฐœ (en/ko/zh/ja/vi/th/ru/hi)
messages ํ‚ค ๋น„๋Œ€์นญ en/zh/ja: 897 / th/vi: 883 (14 ๋ˆ„๋ฝ) / hi/ru: 946 (49 dead)
์˜› src/i18n/request.ts locale='ko' ํ•˜๋“œ์ฝ”๋”ฉ, public/locales/ ์ž˜๋ชป๋œ ๊ฒฝ๋กœ โ€” ์‚ฌ์šฉ ์•ˆ ๋จ
24 user ํŽ˜์ด์ง€ ํ•œ๊ตญ์–ด ํ•˜๋“œ์ฝ”๋”ฉ 0๊ฑด (์ด๋ฏธ t() ๋ณ€ํ™˜๋จ)
๋ชจ๋ฐ”์ผ LanguageSwitcher TopHeader์—๋งŒ ์žˆ์Œ, Sidebar ๋ชจ๋ฐ”์ผ ๋ฉ”๋‰ด ์•ˆ์—๋Š” ์—†์Œ

3. ๋ณ€๊ฒฝ ์‚ฌํ•ญ (3์ฐจ ํ†ตํ•ฉ)

3.1 i18n ํ‚ค ๋™๊ธฐํ™” (898 keys ๋™์ผ)

3.2 ์˜› ํŒŒ์ผ ์ •๋ฆฌ

3.3 LanguageSwitcher ๋…ธ์ถœ ๊ฐ•ํ™”

3.4 ์‹œํ•œํญํƒ„ ์ฐจ๋‹จ (์˜ต์…˜ A โ€” ์‚ฌ์šฉ์ž ๊ฒฐ์ •)

4. Done Criteria ๊ฒฐ๊ณผ

# DC ๊ฒฐ๊ณผ ๊ฒ€์ฆ
1 th/vi 14 mall.avatar* ํ‚ค ์‹œ๋“œ โœ… jq paths length 898
2 hi/ru 49 dead ํ‚ค ์ •๋ฆฌ โœ… 49/49 ์ฝ”๋“œ ๋ฏธ์‚ฌ์šฉ ๊ฒ€์ฆ ํ›„ del
3 ์˜› src/i18n/request.ts ์ •๋ฆฌ โœ… ๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œ
4 8 ์–ธ์–ด ร— 14 user ํŽ˜์ด์ง€ raw key 0 โœ… admin ์ธ์ฆ ํ›„ Playwright 112 ๊ฒ€์ฆ 0
5 ๋ชจ๋ฐ”์ผ LanguageSwitcher ๋™์ž‘ โœ… TopHeader + Sidebar ๋ชจ๋‘ PASS
6 ๋ชจ๋ฐ”์ผ (375x812) ๊นจ์ง 0 โœ… 8 ์–ธ์–ด ์‹œ๊ฐ + ๋ฐ์Šคํฌํƒ‘ 1366
7 next build ์„ฑ๊ณต โœ… exit 0 (3ํšŒ ๋นŒ๋“œ)
8 PM2 stage8-user online โœ… errored 0
9 5 ๋„๋ฉ”์ธ ํšŒ๊ท€ โœ… 200/307 ์ •์ƒ
10 Sidebar ๋ชจ๋ฐ”์ผ ์‹ค ๋™์ž‘ โœ… ํ–„๋ฒ„๊ฑฐ โ†’ Sidebar โ†’ ํ•œ๊ตญ์–ด ํด๋ฆญ โ†’ reload PASS
11 ์‹œํ•œํญํƒ„ ์ฐจ๋‹จ โœ… Host ํ—ค๋” ์‹œ๋ฎฌ santaโ†’0

๊ฒ€์ฆ ๋ถˆ๊ฐ€: Gemini ํ‰๊ฐ€ (quota ์†Œ์ง„), ์ผ๋ฐ˜ user role ์‹œ์  (admin ๋ณธ์ธ ๋ฐ์ดํ„ฐ๋กœ ๋Œ€์ฒด ๊ฒ€์ฆ)

5. ๋ผ์ด๋ธŒ ๊ฒ€์ฆ ์ฆ๊ฑฐ (Playwright)

admin ์ธ์ฆ ํ›„ 8 ์–ธ์–ด ร— 14 ํŽ˜์ด์ง€ = 112 ๊ฒ€์ฆ

๋ชจ๋ฐ”์ผ ์‹œ๊ฐ (375x812) 8 ์–ธ์–ด

Sidebar ๋ชจ๋ฐ”์ผ LanguageSwitcher ์‹ค ๋™์ž‘

์‹œํ•œํญํƒ„ ์ฐจ๋‹จ

6. ๋ผ์ด๋ธŒ ์˜ํ–ฅ ๋ณด๊ณ 

ํ•ญ๋ชฉ ๊ฒฐ๊ณผ
DB ๋ณ€๊ฒฝ 0 (1127_users baseline 8๋ช… ๊ทธ๋Œ€๋กœ)
ํด๋ฆญ ๊ธˆ์ง€ ์•ก์…˜ 0ํšŒ (๊ตฌ๋งค/์ถœ๊ธˆ/์ด์ฒด/์ €์žฅ)
admin ๋กœ๊ทธ์ธ 1ํšŒ + logout 1ํšŒ hasSession=false ์ •์ƒ ์ข…๋ฃŒ
stage8-admin (santa) uptime 7h ๊ทธ๋Œ€๋กœ, ๋ฌด์˜ํ–ฅ
5 ๋„๋ฉ”์ธ ํšŒ๊ท€ 200/307 ์ •์ƒ
ํŠธ๋ ˆ์ด๋”ฉ / UFW / ์žฌ๋ถ€ํŒ… / 4์„œ๋ฒ„ 0๊ฑด

7. ๊ฑฐ์ง“์™„์„ฑ ์‹œ์ธ (์ •์ง)

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

src/app/(auth)/layout.tsx                         # host ๋ถ„๊ธฐ LanguageSwitcher
src/components/layout/Sidebar.tsx                 # ๋ชจ๋ฐ”์ผ ๋ฉ”๋‰ด LanguageSwitcher
src/messages/{en,ko,zh,ja,vi,th,ru,hi}.json       # 8 ์–ธ์–ด 898 keys
src/i18n/                                         # ๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œ

๋ฐฑ์—…: /tmp/i18n-bak-20260429/

9. ์ž”์—ฌ (๋ณ„๋„ sprint)

10. ๊ตํ›ˆ

  1. stage8-admin/user ๋™์ผ cwd ๊ณต์œ  ํŒจํ„ด: ecosystem.config.js์˜ cwd ๋™์ผ โ†’ .next 1๊ฐœ โ†’ restart ์‹œ์ ์— ๋”ฐ๋ผ ์‹ ๊ตฌ ์ฝ”๋“œ in-use ๋ถ„๊ธฐ. host ๋ถ„๊ธฐ๋กœ ๋„๋ฉ”์ธ๋ณ„ UI ๊ฐ€๋“œ ํ•„์ˆ˜.
  2. dead ํ‚ค ์ •๋ฆฌ๋Š” ์ฝ”๋“œ ์‚ฌ์šฉ ๊ฒ€์ฆ ํ›„: 49 ํ‚ค ๋ชจ๋‘ grep 0 ํ™•์ธ ํ›„ del.
  3. ์ธ์ฆ ํŽ˜์ด์ง€ ๊ฒ€์ฆ์€ admin ๊ณ„์ •์œผ๋กœ ๊ฐ€๋Šฅ: middleware์˜ user ๋„๋ฉ”์ธ role ๊ฐ€๋“œ ๋ถ€์žฌ โ†’ admin ๊ณ„์ •์œผ๋กœ user ํŽ˜์ด์ง€ ๊ฒ€์ฆ ๊ฐ€๋Šฅ (๋ผ์ด๋ธŒ ์˜ํ–ฅ 0 ๋ณด์žฅ).
  4. ๊ฑฐ์ง“์™„์„ฑ ํŒจํ„ด: ๋‹จ์ผ ํŒจํ„ด/๋‹จ์ผ viewport/๋‹จ์ผ ํŽ˜์ด์ง€ sweep์œผ๋กœ PASS ์ฃผ์žฅ์€ ์œ„ํ—˜. admin ์ธ์ฆ ํ›„ 8 lang ร— 14 page ์ผ๊ด„ ๊ฒ€์ฆ์œผ๋กœ ์ง„์งœ ๋ˆ„๋ฝ ๋ฐœ๊ฒฌ.
  5. (auth) layout host ๋ถ„๊ธฐ = ๋„๋ฉ”์ธ ๊ฒฉ๋ฆฌ ํŒจํ„ด: Next.js route group์ด ๋„๋ฉ”์ธ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋ชจ๋“  ๋„๋ฉ”์ธ์— ์ ์šฉ๋˜๋Š” ํ•จ์ •. headers().get('host') ๋ถ„๊ธฐ๋กœ ๋ช…์‹œ์  ๊ฒฉ๋ฆฌ.