# ๐Ÿ“Œ AI ์ž‘์—… ์šด์˜ ๊ทœ์น™ (Codex + ๋กœ์ปฌ ์ž‘์—… ๊ธฐ์ค€) ## ๐Ÿšจ ํ˜„์žฌ ์ ์šฉ ๋ชจ๋“œ (์ตœ์šฐ์„ ) ํ˜„์žฌ ์ด ์ €์žฅ์†Œ๋Š” **๋กœ์ปฌ ์ „์šฉ + main ์ง์ ‘ ์ž‘์—… ๋ชจ๋“œ**๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๋ฌธ์„œ์˜ ๋ชฉ์ ์€ ๋ณต์žกํ•œ ๋ธŒ๋žœ์น˜ ํ๋ฆ„๋ณด๋‹ค **ํ˜„์žฌ ์ฒดํฌ์•„์›ƒ๋œ ๋กœ์ปฌ `main`์—์„œ ๋ฐ”๋กœ ์ˆ˜์ •ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๊ธฐ์ค€**์„ ์šฐ์„  ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ### Codex / AI ๊ธฐ๋ณธ ๊ทœ์น™ * ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌํ˜„, ์ˆ˜์ •, ์‹คํ–‰, ์„ค์ • ๋ณ€๊ฒฝ, ๋ฌธ์„œ ์ˆ˜์ •, ์ฑ„ํŒ… ์‘๋‹ต ๊ฐœ์„ ์„ ์š”์ฒญํ•˜๋ฉด **ํ˜„์žฌ ๋กœ์ปฌ `main`์—์„œ ๋ฐ”๋กœ ์ž‘์—…**ํ•œ๋‹ค * ๋ธŒ๋ผ์šฐ์ € ํ™•์ธ, ํ™”๋ฉด ๊ฒ€์ฆ, ์ ‘์† ํ…Œ์ŠคํŠธ, ๊ธฐ๋ณธ ์ž‘์—… ๋„๋ฉ”์ธ์€ **`https://preview.sm-home.cloud/` ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉ**ํ•œ๋‹ค * ๋ธŒ๋ผ์šฐ์ € ์Šคํฌ๋ฆฐ์ƒท/์บก์ฒ˜ ๊ฒ€์ฆ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ **๋ฃจํŠธ `.env`์˜ `CAPTURE_BASE_URL=https://preview.sm-home.cloud/`์™€ ๋“ฑ๋ก ํ† ํฐ(`CAPTURE_REGISTERED_ACCESS_TOKEN`, `VITE_ALLOWED_REGISTRATION_TOKEN`)์„ ์‚ฌ์šฉํ•ด ํ† ํฐ ๋“ฑ๋ก ์ƒํƒœ์—์„œ ์ง„ํ–‰**ํ•œ๋‹ค * ๋ณ„๋„๋กœ ์šด์˜ ์ค‘์ธ `4173` ํฌํŠธ์˜ `ai-code-app-preview` ์ปจํ…Œ์ด๋„ˆ๋Š” **์ฑ„ํŒ… ์ „์šฉ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๊ฐ€ ์•„๋‹ˆ๋ผ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๊ธฐ์ค€ ํ™”๋ฉด/๊ธฐ๋Šฅ ํ™•์ธ์šฉ ํ…Œ์ŠคํŠธ ์ปจํ…Œ์ด๋„ˆ**๋กœ ํ•ด์„ํ•œ๋‹ค * `test.sm-home.cloud` nginx ํ”„๋ก์‹œ๋Š” **ํ™”๋ฉด `/`๋งŒ `5174` ์•ฑ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๊ณ , `/api/`์™€ `/ws/chat`์€ ํ•ญ์ƒ `127.0.0.1:3100` work-server๋กœ ์œ ์ง€**ํ•œ๋‹ค * `test.sm-home.cloud`์˜ `/api`, `/ws/chat`, `/.codex_chat`, `/public/.codex_chat` ํ”„๋ก์‹œ ๋Œ€์ƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์š”์ฒญํ•˜์ง€ ์•Š๋Š” ํ•œ ์ž„์˜๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค * ๋ณ„๋„ ์ง€์‹œ๊ฐ€ ์—†์œผ๋ฉด `sm-home.cloud`, `rel.sm-home.cloud` ๊ฐ™์€ ๋‹ค๋ฅธ ์™ธ๋ถ€ ๋„๋ฉ”์ธ์€ ์ž‘์—… ๊ธฐ์ค€์œผ๋กœ ์‚ผ์ง€ ์•Š๋Š”๋‹ค * `์ฑ„ํŒ…`, `๋ฉ”๋ชจ ๋ฐ˜์˜`, `๋ฌธ์„œ ๋ฐ˜์˜` ์š”์ฒญ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ **๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ์—†์ด main ์ง์ ‘ ์ˆ˜์ •**์œผ๋กœ ํ•ด์„ํ•œ๋‹ค * `git remote`, `fetch`, `pull`, `push`, `branch`, `switch`, `checkout`, `merge`, `rebase`, `reset`, `stash`, `tag`, `commit` ๊ฐ™์€ Git ๊ด€๋ฆฌ ์ž‘์—…์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค * ์‚ฌ์šฉ์ž๊ฐ€ Git ์ž‘์—…์„ **๋ช…์‹œ์ ์œผ๋กœ ์š”์ฒญํ•œ ๊ฒฝ์šฐ์—๋งŒ** ํ•„์š”ํ•œ ๋ช…๋ น์„ ์ตœ์†Œ ๋ฒ”์œ„๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค * Git ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋”๋ผ๋„ `public/assets/` ์•„๋ž˜ ๋Œ€์šฉ๋Ÿ‰ ๋ฆฌ์†Œ์Šค, `tmp-*` ์บก์ฒ˜ ํŒŒ์ผ, ์ž„์‹œ ์‚ฐ์ถœ๋ฌผ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปค๋ฐ‹ ๋Œ€์ƒ์— ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค * ์ด๋ฏธ์ง€/๋™์˜์ƒ/PDF ๊ฐ™์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ž์‚ฐ์ด ์ •๋ง ํ•„์š”ํ•  ๋•Œ๋งŒ ์˜ˆ์™ธ์ ์œผ๋กœ ์ปค๋ฐ‹ํ•˜๊ณ , ๊ทธ ์™ธ์—๋Š” ์ฝ”๋“œ ๋ณ€๊ฒฝ๊ณผ ๋ถ„๋ฆฌํ•ด ๋ณ„๋„ ํ™•์ธ ํ›„ ์ฒ˜๋ฆฌํ•œ๋‹ค * ์›๊ฒฉ ์ €์žฅ์†Œ ์—ฐ๊ฒฐ ๋ณต๊ตฌ, ๋ธŒ๋žœ์น˜ ์ „๋žต ๋ณต๊ตฌ, release/main ๋™๊ธฐํ™”, ์ž๋™ merge ๊ฐ™์€ ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์‹œ๋„ํ•˜์ง€ ์•Š๋Š”๋‹ค * ํ˜„์žฌ๋Š” ๋ธŒ๋žœ์น˜ ์ „๋žต๋ณด๋‹ค **๋กœ์ปฌ ์‹คํ–‰ ๊ฐ€๋Šฅ ์ƒํƒœ ์œ ์ง€, ์ฝ”๋“œ ์ˆ˜์ •, ๋ฌธ์„œ ๊ฐฑ์‹ , ๋ฉ”๋ชจ ๋ฐ˜์˜ ์†๋„**๋ฅผ ์šฐ์„ ํ•œ๋‹ค * `.auto_codex` ๊ด€๋ จ Git ์ž๋™ํ™”, Plan ์ž๋™ํ™”, ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ/๋ณ‘ํ•ฉ ํ๋ฆ„์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์‹œ ์š”์ฒญํ•˜๊ธฐ ์ „๊นŒ์ง€ **๋น„ํ™œ์„ฑ ์ƒํƒœ**๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค * ์‚ฌ์šฉ์ž๊ฐ€ **๋ช…์‹œ์ ์œผ๋กœ ์š”์ฒญํ•œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๋ฉด** ๊ตฌํ˜„ ํŽธ์˜๋‚˜ ์ƒํƒœ ๊ฐฑ์‹ ์„ ์ด์œ ๋กœ `polling`, `setInterval`, ์ฃผ๊ธฐ์  ์žฌ์‹œ๋„ ๋ฃจํ”„ ๊ฐ™์€ ๋ฐ˜๋ณต ์กฐํšŒ ๊ตฌ์กฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค * ๊ธฐ์กด ๊ธฐ๋Šฅ์— `polling`, `setInterval`์ด ์ด๋ฏธ ์žˆ๋”๋ผ๋„ ์‚ฌ์šฉ์ž ์š”์ฒญ ์—†์ด ๋‹น์—ฐํ•œ ์ „์ œ๋กœ ์œ ์ง€ํ•˜์ง€ ๋ง๊ณ , ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ยท๋ช…์‹œ์  ์ƒˆ๋กœ๊ณ ์นจยท๋‹จ๋ฐœ์„ฑ ์š”์ฒญ์œผ๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅํ•œ์ง€ ๋จผ์ € ๊ฒ€ํ† ํ•œ๋‹ค ### ์š”์ฒญ ํ•ด์„ ๊ทœ์น™ * ์‚ฌ์šฉ์ž๊ฐ€ ๋‹จ์ˆœํžˆ ๊ตฌํ˜„, ์ˆ˜์ •, ์‹คํ–‰, ์„ค์ • ๋ณ€๊ฒฝ์„ ์š”์ฒญํ•˜๋ฉด **Git ์ž‘์—… ์—†์ด ๋กœ์ปฌ ํŒŒ์ผ ์ˆ˜์ •๊ณผ ์‹คํ–‰ ์ž‘์—…๋งŒ ์ง„ํ–‰**ํ•œ๋‹ค * ์‚ฌ์šฉ์ž๊ฐ€ `git`, `๋ธŒ๋žœ์น˜`, `์›๊ฒฉ`, `push`, `pull`, `merge`, `commit`๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์–ธ๊ธ‰ํ•  ๋•Œ๋งŒ Git ์ž‘์—…์œผ๋กœ ํ•ด์„ํ•œ๋‹ค * ์‚ฌ์šฉ์ž๊ฐ€ `Plan ๋“ฑ๋ก`, `Plan ๊ฒŒ์‹œํŒ ๋“ฑ๋ก`, `๊ฒŒ์‹œํŒ ๋“ฑ๋ก`, `๊ณ„ํš ๋“ฑ๋ก`์ด๋ผ๊ณ  ๋งํ•˜๋ฉด **Plan ๊ฒŒ์‹œํŒ ํ•ญ๋ชฉ ์ƒ์„ฑ** ์˜๋ฏธ๋กœ ํ•ด์„ํ•œ๋‹ค * ์‚ฌ์šฉ์ž๊ฐ€ `์ž๋™ํ™” ๋“ฑ๋ก`, `์ž๋™ํ™” ์ ‘์ˆ˜`, `์ž๋™ํ™” ์‹คํ–‰`, `์ž๋™ํ™” ๋Œ๋ ค์ค˜`๋ผ๊ณ  ๋งํ•˜๋ฉด **์ž๋™ํ™” API ๋“ฑ๋ก ๋˜๋Š” ์‹ค์ œ ์ž๋™ํ™” ์ˆ˜ํ–‰** ์˜๋ฏธ๋กœ ํ•ด์„ํ•œ๋‹ค * ์‚ฌ์šฉ์ž๊ฐ€ `์ž๋™ํ™” ๋ฉ”๋ชจ`๋ผ๊ณ ๋งŒ ๋งํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ **์ž๋™ํ™” ์ ‘์ˆ˜ ์ž‘์—…๋ฉ”๋ชจ**๋กœ ํ•ด์„ํ•œ๋‹ค * ์‚ฌ์šฉ์ž๊ฐ€ `Plan ๊ฒŒ์‹œํŒ์— ๋“ฑ๋ก๋งŒ`, `์ž๋™ํ™” ์—†์ด`, `๊ตฌํ˜„ํ•˜์ง€ ๋ง๊ณ  ๊ณ„ํš๋งŒ ๋“ฑ๋ก`, `๊ฒŒ์‹œํŒ๋งŒ`์ฒ˜๋Ÿผ ํ‘œํ˜„ํ•˜๋ฉด **์ž๋™ํ™” ์‹คํ–‰ ์—†์ด Plan ํ•ญ๋ชฉ๋งŒ ๋“ฑ๋ก**ํ•œ๋‹ค * ์‚ฌ์šฉ์ž๊ฐ€ `์ž๋™ํ™”ํ•ด์ค˜`, `๊ตฌํ˜„ํ•ด์ค˜`, `์ž‘์—… ์ง„ํ–‰ํ•ด์ค˜`, `์‹คํ–‰ํ•ด์ค˜`์ฒ˜๋Ÿผ ์‹ค์ œ ์ˆ˜ํ–‰์„ ๋ช…์‹œํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ž๋™ํ™” ๋˜๋Š” ์ฝ”๋“œ ์ž‘์—…์œผ๋กœ ํ•ด์„ํ•œ๋‹ค * ์š”์ฒญ์ด ๋ชจํ˜ธํ•˜๋ฉด ์ž๋™ํ™” ์‹คํ–‰์„ ๋ฐ”๋กœ ์ง„ํ–‰ํ•˜์ง€ ๋ง๊ณ , ์šฐ์„  **Plan ๋“ฑ๋ก**์œผ๋กœ ์•ˆ์ „ ํ•ด์„ํ•˜๊ฑฐ๋‚˜ ์งง๊ฒŒ ์žฌํ™•์ธํ•œ๋‹ค --- ## Git ๊ด€๋ จ ์•ˆ์ „ ๊ทœ์น™ * ๋กœ์ปฌ ์ž‘์—… ์ค‘์—๋„ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜์ง€ ์•Š์€ Git ์ •๋ฆฌ ์ž‘์—…์€ ํ•˜์ง€ ์•Š๋Š”๋‹ค * `reset`, `checkout`, `switch`, `clean`, ๊ฐ•์ œ ๋ฎ์–ด์“ฐ๊ธฐ์ฒ˜๋Ÿผ ๋˜๋Œ๋ฆฌ๊ธฐ ์–ด๋ ค์šด ์ž‘์—…์€ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค * ์‚ฌ์šฉ์ž๊ฐ€ Git ์ž‘์—…์„ ์š”์ฒญํ•ด๋„ **์ •๋ง ํ•„์š”ํ•œ ๋ฒ”์œ„๋งŒ** ์‹คํ–‰ํ•œ๋‹ค * ์ž„์‹œ ์Šคํฌ๋ฆฐ์ƒท, ํ…Œ์ŠคํŠธ ์บก์ฒ˜, ๋Œ€์šฉ๋Ÿ‰ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ Git ์ปค๋ฐ‹์„ ์ฐจ๋‹จํ•˜๊ณ , ์˜๋„์  ์ž์‚ฐ ์ปค๋ฐ‹์ผ ๋•Œ๋งŒ ๋ช…์‹œ์ ์œผ๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•œ๋‹ค * ํ˜„์žฌ ๋ชจ๋“œ์—์„œ๋Š” `main` ์ง์ ‘ ์ˆ˜์ •์ด ํ—ˆ์šฉ๋˜์ง€๋งŒ, **์ž๋™ commit / push๋Š” ์—ฌ์ „ํžˆ ๊ธˆ์ง€**ํ•œ๋‹ค --- ## Codex Live / ์ฑ„ํŒ… / ์ž‘์—… ๋ฉ”๋ชจ ๊ทœ์น™ * `Codex Live`, ์ผ๋ฐ˜ ์ฑ„ํŒ… ์š”์ฒญ์€ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์˜ ๋กœ์ปฌ `main`์„ ๊ธฐ์ค€์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค * ์™ธ๋ถ€ ๋„๋ฉ”์ธ ๊ธฐ์ค€ ๋™์ž‘ ํ™•์ธ๊ณผ ์ตœ์ข… ๊ฒ€์ฆ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ `https://preview.sm-home.cloud/`๋ฅผ ์šฐ์„  ๊ธฐ์ค€์œผ๋กœ ๋ณธ๋‹ค * `https://test.sm-home.cloud/`๋Š” ์šด์˜ ๋น„๊ต๋‚˜ ํ”„๋ก์‹œ ์ ๊ฒ€์ด ๊ผญ ํ•„์š”ํ•  ๋•Œ๋งŒ ๋ณด์กฐ์ ์œผ๋กœ ํ™•์ธํ•œ๋‹ค * `https://test.sm-home.cloud/`์—์„œ ์ฑ„ํŒ…/API ๋ฌธ์ œ๊ฐ€ ๋ณด์ด๋ฉด ๋จผ์ € ํ”„๋ŸฐํŠธ ์ฝ”๋“œ๋ณด๋‹ค **nginx์˜ `/api`์™€ `/ws/chat` ํ”„๋ก์‹œ๊ฐ€ `3100`์„ ๊ฐ€๋ฆฌํ‚ค๋Š”์ง€** ํ™•์ธํ•œ๋‹ค * ์ฑ„ํŒ…์—์„œ ๋‚˜์˜จ ์ˆ˜์ • ์š”์ฒญ๋„ ๋ณ„๋„ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ์—†์ด ๋ฐ”๋กœ ํŒŒ์ผ ์ˆ˜์ •์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค * ์ผ๋ฐ˜ ์ž‘์—… ๋ฉ”๋ชจ๋Š” ๊ธฐ๋ก ๋ชฉ์ ์ด๋ฉด ๋ฉ”๋ชจ๋กœ ์œ ์ง€ํ•˜๊ณ , ์‹ค์ œ ์ˆ˜์ • ์ง€์‹œ๋ผ๋„ ๋ณ„๋„ ์ž๋™ํ™” ์ ‘์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฉด `main` ๊ธฐ์ค€ ๋กœ์ปฌ ์ž‘์—…์œผ๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค * ์ฑ„ํŒ…์—์„œ ํŒŒ์ผ/๋ฌธ์„œ/์ด๋ฏธ์ง€/์ฝ”๋“œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•  ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ `public/.codex_chat//resource/` ์•„๋ž˜ ์„ธ์…˜ ์ „์šฉ ๊ฒฝ๋กœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค * ์ฑ„ํŒ… ์ฒจ๋ถ€ ํŒŒ์ผ์€ `public/.codex_chat//resource/uploads/` ์•„๋ž˜ ๊ฒฝ๋กœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค * ์›๋ณธ ํŒŒ์ผ ๊ฒฝ๋กœ๋งŒ ์‘๋‹ตํ•ด๋„ ์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ์œ„ ์„ธ์…˜ ๊ฒฝ๋กœ๋กœ ๋ณต์‚ฌํ•ด ๊ณต๊ฐœ ๋งํฌ๋กœ ๋ฐ”๊ฟ” ์ค„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฌธ์„œ์™€ ์•ˆ๋‚ด ๋ฌธ๊ตฌ์—๋Š” ์œ„ ๊ณต๊ฐœ ๊ฒฝ๋กœ ๊ธฐ์ค€์„ ์šฐ์„  ๋ช…์‹œํ•œ๋‹ค * ์ฑ„ํŒ… ๋‹ต๋ณ€์—์„œ ๋งํฌ ์นด๋“œ๋Š” ์™ธ๋ถ€ ๊ณต๊ฐœ ๋งํฌ์—๋งŒ ์‚ฌ์šฉํ•˜๊ณ  `[[link-card:์ œ๋ชฉ|URL|๋ฒ„ํŠผ๋ผ๋ฒจ]]` ํ˜•์‹์„ ์ •ํ™•ํžˆ ์ง€ํ‚จ๋‹ค * ์„ธ์…˜ ๋ฆฌ์†Œ์Šค, ๋‚ด๋ถ€ ๋ฌธ์„œ, ์ฝ”๋“œ, ๋กœ๊ทธ, ํ…Œ์ด๋ธ” ํŒŒ์ผ์ฒ˜๋Ÿผ `/api/chat/resources/...`, `/.codex_chat/...`, `/public/.codex_chat/...` ์•„๋ž˜ ๋‚ด๋ถ€ ๋ฆฌ์†Œ์Šค์—๋Š” ๋งํฌ ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค * ๋งํฌ ์นด๋“œ URL ์•ˆ์— ๊ตฌ๋ถ„์ž `|`๋ฅผ `%7C`๋กœ ์ธ์ฝ”๋”ฉํ•˜๊ฑฐ๋‚˜ `https:/api/...`์ฒ˜๋Ÿผ ์ž˜๋ชป ์ค„์—ฌ ์“ฐ์ง€ ์•Š๋Š”๋‹ค * `[[prompt:...]]` ๋‚ด๋ถ€์˜ `preview`, preview card ์„ฑ๊ฒฉ์˜ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋Š” ์‹ค์ œ๋กœ ์ƒ์„ฑ๊ณผ ์ ‘๊ทผ์ด ํ™•์ธ๋œ ๋ฆฌ์†Œ์Šค์—๋งŒ ์—ฐ๊ฒฐํ•œ๋‹ค * `[[prompt:...]]`์˜ `preview.url`์—๋Š” ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ(`/home/...`, `C:\\...`)๋‚˜ ์›๋ณธ `public/...` ๊ฒฝ๋กœ๋ฅผ ์ง์ ‘ ๋„ฃ์ง€ ๋ง๊ณ , ์™ธ๋ถ€ `https://...` URL ๋˜๋Š” `/api/chat/resources/...`, `resource/...`, `/api/resource-manager/preview/...`์ฒ˜๋Ÿผ ์‹ค์ œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋กœ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค * `[[prompt:...]]`์—์„œ ๋‚ด๋ถ€ ๋ฌธ์„œ/HTML/ํ‘œ/์‚ฐ์ถœ๋ฌผ์„ ๋ฏธ๋ฆฌ ๋ณด์—ฌ์ค„ ๋•Œ๋Š” ๋งํฌ ์นด๋“œ๋กœ ์šฐํšŒํ•˜์ง€ ๋ง๊ณ  `preview.type:"resource"` ๋˜๋Š” ์šฉ๋„์— ๋งž๋Š” preview ํƒ€์ž…์„ ์šฐ์„  ์‚ฌ์šฉํ•œ๋‹ค * `[[prompt:...]]`๋Š” ๋ณธ๋ฌธ ๋ฌธ์žฅ ์‚ฌ์ด์— ๋“ค์–ด๊ฐ€๋”๋ผ๋„ prompt ์ปดํฌ๋„ŒํŠธ๋กœ ์•ˆ์ •์ ์œผ๋กœ ํŒŒ์‹ฑ๋˜์–ด์•ผ ํ•˜๋ฉฐ, HTML/๋ฌธ์„œ preview๊ฐ€ ์žˆ๋Š” prompt๋Š” raw ํ…์ŠคํŠธ๋กœ ๋‚จ์ง€ ์•Š๊ฒŒ ํ™•์ธํ•œ๋‹ค * prompt ์•ˆ์˜ preview ๋ฆฌ์†Œ์Šค๊ฐ€ ์—ด๋ฆฌ์ง€ ์•Š์„ ๋•Œ๋Š” ๊ณง๋ฐ”๋กœ `๋ฆฌ์†Œ์Šค๋ฅผ ๋ชป ์ฐพ๊ฒ ๋‹ค`๊ณ  ๋‹ตํ•˜์ง€ ๋ง๊ณ , ๋จผ์ € ํŒŒ์ผ ์ƒ์„ฑ ์—ฌ๋ถ€, ์„ธ์…˜ ๋ฆฌ์†Œ์Šค ๋ณต์‚ฌ ์—ฌ๋ถ€, `preview.url` ๋ฌธ๋ฒ•, preview ํƒ€์ž… ์„ ํƒ์ด ๋งž๋Š”์ง€ ์ˆœ์„œ๋Œ€๋กœ ๋‹ค์‹œ ํ™•์ธํ•œ๋‹ค * ์‚ฌ์šฉ์ž๊ฐ€ `์ „์ฒด ์ผ€์ด์Šค`, `๋ชจ๋“  ์ผ€์ด์Šค`, `์ „์ˆ˜ ๊ฒ€์ฆ`์„ ์š”์ฒญํ•˜๋ฉด ์‹ค์ œ ๋ถ„๊ธฐ ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ํ™•์ธํ•˜๊ณ  `null` ๋ฐ˜ํ™˜, ๊ธฐ๋ณธ๊ฐ’, ์šฐ์„ ์ˆœ์œ„ ์˜ˆ์™ธ๊นŒ์ง€ ๋น ์ง์—†์ด ํ‘œ๋‚˜ ๋ชฉ๋ก์œผ๋กœ ์ •๋ฆฌํ•œ ๋’ค ๊ฒ€์ฆํ–ˆ๋‹ค๊ณ  ๋‹ตํ•œ๋‹ค * ์ „์ˆ˜ ๊ฒ€์ฆ ์š”์ฒญ์—์„œ ๋Œ€ํ‘œ ์˜ˆ์‹œ ๋ช‡ ๊ฐœ๋งŒ ์ ๊ฑฐ๋‚˜ ์ƒํƒœ enum ์ด๋ฆ„๋งŒ ๋‚˜์—ดํ•œ ๋’ค `์ „์ฒด ์ผ€์ด์Šค`๋ผ๊ณ  ๋‹จ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค * HTML ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์‚ฐ์ถœ๋ฌผ์€ fallback ์•ˆ๋‚ด๋ฌธ์ด๋‚˜ ์•ฑ ํ™”๋ฉด URL๋กœ ๋Œ€์‹ ํ•˜์ง€ ๋ง๊ณ , ์‹ค์ œ `.html` ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“  ๋’ค ๊ทธ ๋ฆฌ์†Œ์Šค๊ฐ€ ์—ด๋ฆฌ๋Š”์ง€ ๋‹ค์‹œ ํ™•์ธํ•˜๊ณ  ์ œ๊ณตํ•œ๋‹ค * ๋ชจ๋ฐ”์ผ ์บก์ฒ˜ ๊ฒฐ๊ณผ๋‚˜ ์ตœ์ข… ํ™”๋ฉด ๊ฒ€์ฆ ๋ฆฌ์†Œ์Šค๋Š” ๋งํฌ ์นด๋“œ ๋Œ€์‹  ๋ฐ˜๋“œ์‹œ `[[preview:URL]]` ํ˜•์‹์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค * ๋ชจ๋ฐ”์ผ ์บก์ฒ˜ ๊ฒฐ๊ณผ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ณธ๋ฌธ ์˜†์— ๋งํฌ ์นด๋“œ๋ฅผ ๋ง๋ถ™์ด๋”๋ผ๋„, ๊ฐ™์€ ๋ฆฌ์†Œ์Šค์˜ `[[preview:URL]]` ํ‘œ์‹œ๋Š” ์ƒ๋žตํ•˜์ง€ ์•Š๋Š”๋‹ค * ๋‚ด๋ถ€ ๋ฌธ์„œ์„ฑ ๋ฆฌ์†Œ์Šค๋Š” ์ผ๋ฐ˜ ๊ฒฝ๋กœ๋‚˜ ์ž๋™ ํ”„๋ฆฌ๋ทฐ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค URL๋กœ ์ œ๊ณตํ•˜๊ณ , ํ‘œ ํ˜•ํƒœ ํ™•์ธ์ด ํ•„์š”ํ•˜๋ฉด preview ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐ”๋กœ ์—ด ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์„ ์šฐ์„  ์‚ฌ์šฉํ•œ๋‹ค * markdown/document preview๋ฅผ ์ตœ๋Œ€ํ™”ํ•ด์„œ ๋ณผ ๋•Œ๋Š” ๋ณธ๋ฌธ ๋ฐฐ๊ฒฝ๊ณผ ํ…์ŠคํŠธ ๋Œ€๋น„๊ฐ€ ์œ ์ง€๋˜๋„๋ก ํ™•์ธํ•˜๊ณ , ๋‹คํฌ ๋ฐฐ๊ฒฝ ์œ„์— ๊ฒ€์ • ๋ณธ๋ฌธ๋งŒ ๋‚จ๋Š” ์ƒํƒœ๋กœ ๋‘์ง€ ์•Š๋Š”๋‹ค * ํ† ํฐ ๋“ฑ๋ก์ด ํ•„์š”ํ•œ ํ™”๋ฉด ๊ฒ€์ฆ์ด๋‚˜ ๋ชจ๋ฐ”์ผ ์Šคํฌ๋ฆฐ์ƒท์€ **๋น„๋กœ๊ทธ์ธ ๊ธฐ๋ณธ ํ™”๋ฉด(Docs)์œผ๋กœ ํ™•์ธํ•˜์ง€ ๋ง๊ณ **, `.env`์— ์ €์žฅ๋œ ๋“ฑ๋ก ํ† ํฐ์„ ๋ธŒ๋ผ์šฐ์ € `localStorage`์— ์ฃผ์ž…ํ•œ ์ƒํƒœ๋กœ ์บก์ฒ˜ํ•œ๋‹ค * ๊ด€๋ฆฌ/๋“ฑ๋ก ํ™”๋ฉด UI๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” ๋ฒ„ํŠผ ํด๋ฆญ ํ›„ ๋œจ๋Š” ๋ชจ๋‹ฌ/๋“œ๋กœ์–ด๊ฐ€ ๊ธฐ์กด ํ•˜๋‹จ ์•ก์…˜์„ ๊ฐ€๋ฆฌ๊ฑฐ๋‚˜, ์Šคํฌ๋กค ๋งˆ์ง€๋ง‰ ์ž…๋ ฅ์ด ์ž˜๋ฆฌ๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค. ๋ฐ์Šคํฌํ†ฑ์—์„œ๋Š” ์œ ์‚ฌ ํ•ญ๋ชฉ์„ ํ•œ ์ค„์— ๋ฌถ๊ณ  ์ขŒ์šฐ ์—ฌ๋ฐฑ์„ ์ ๊ทน ํ™œ์šฉํ•˜๋ฉฐ, ์ „์—ญ ํ—ค๋” ์šฐ์ธก ์•ก์…˜์œผ๋กœ ๋ฐ”๋กœ ์—ด ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์€ ์ค‘์ฒฉ ๋ชจ๋‹ฌ๋ณด๋‹ค ์šฐ์„  ๊ฒ€ํ† ํ•œ๋‹ค * `/play/apps` ์•„๋ž˜์—์„œ ์‹คํ–‰๋˜๋Š” ์•ฑ ํ™”๋ฉด์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ถ€๋ชจ ์•ฑ ํ—ค๋”๋ฅผ ๋‹ค์‹œ ๋…ธ์ถœํ•˜์ง€ ๋ง๊ณ , ๊ฐœ๋ณ„ ์•ฑ ์ฝ˜ํ…์ธ ๊ฐ€ ํ™”๋ฉด์„ ๊ฐ€๋“ ์ฑ„์šฐ๋Š” ๋ ˆ์ด์•„์›ƒ์„ ์šฐ์„  ์ ์šฉํ•œ๋‹ค --- ## Plan / ์ž๋™ํ™” ๋ฉ”๋ชจ * ์ผ๋ฐ˜ ์ˆ˜๋™ ์ž‘์—…์—๋Š” ์—ฌ์ „ํžˆ ๋กœ์ปฌ `main` ์ง์ ‘ ์ˆ˜์ • ์›์น™์„ ์œ ์ง€ํ•œ๋‹ค * ์ž๋™ํ™” ์ž‘์—…๋ฉ”๋ชจ์™€ Plan ์ž๋™ํ™”๋„ ๋ณ„๋„ Git ํ๋ฆ„์„ ๊ธฐ๋ณธ ์ „์ œ๋กœ ๋ฌธ์„œํ™”ํ•˜์ง€ ์•Š๋Š”๋‹ค * ์ž๋™ํ™” ์ฒ˜๋ฆฌ ์„ธ๋ถ€ ์ ˆ์ฐจ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ํ•ด๋‹น ๊ธฐ๋Šฅ ๋ฌธ์„œ๋‚˜ ์„œ๋ฒ„ ์„ค์ •์ด ์•„๋‹ˆ๋ผ, ์‹ค์ œ ์š”์ฒญ ๋ฌธ๋งฅ๊ณผ ํ˜„์žฌ ์šด์˜ ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์‹œ ํ™•์ธํ•œ๋‹ค --- ## ํ•œ ์ค„ ์š”์•ฝ ๐Ÿ‘‰ ์ผ๋ฐ˜ ์ฑ„ํŒ…/์ˆ˜๋™ ์š”์ฒญ์€ ๋กœ์ปฌ `main`์—์„œ ๋ฐ”๋กœ ์ˆ˜์ •ํ•œ๋‹ค ๐Ÿ‘‰ ์™ธ๋ถ€ ํ™•์ธ๊ณผ ๊ฒ€์ฆ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์€ `https://preview.sm-home.cloud/`๋‹ค ๐Ÿ‘‰ ์ž๋™ํ™” ๋ธŒ๋žœ์น˜ ํ๋ฆ„์€ ๋ฌธ์„œ์— ๊ณ ์ • ๊ทœ์น™์œผ๋กœ ์ ์ง€ ์•Š๋Š”๋‹ค ๐Ÿ‘‰ ์ผ๋ฐ˜ Git ์ž‘์—…์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์š”์ฒญํ•  ๋•Œ๋งŒ ์ตœ์†Œ ๋ฒ”์œ„๋กœ ํ•œ๋‹ค ---