diff --git a/resources/views/juil/workflow.blade.php b/resources/views/juil/workflow.blade.php index 72055f76..7d228bcf 100644 --- a/resources/views/juil/workflow.blade.php +++ b/resources/views/juil/workflow.blade.php @@ -61,15 +61,59 @@ ], }, { - id: 2, phase: 'bid', name: '์ž…์ฐฐ ์ฐธ์—ฌ', icon: '๐Ÿท๏ธ', dept: '์˜์—…ํŒ€', - color: '#EC4899', bgColor: '#FDF2F8', - description: '๊ณต๊ณต/๋Œ€ํ˜• ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ์ž…์ฐฐ์— ์ฐธ์—ฌํ•œ๋‹ค. ์†Œ๊ทœ๋ชจ ์—…์ฒด๋‚˜ ์ˆ˜์˜๊ณ„์•ฝ์˜ ๊ฒฝ์šฐ ์ด ๋‹จ๊ณ„๋ฅผ ์ƒ๋žตํ•˜๊ณ  ๋ฐ”๋กœ ๊ฒฌ์ ์„œ ์ž‘์„ฑ์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค.', - documents: ['์ž…์ฐฐ์„œ', '๊ธฐ์ˆ ์ œ์•ˆ์„œ', '์‚ฌ์—…์ž๋“ฑ๋ก์ฆ ์‚ฌ๋ณธ'], + id: 2, phase: 'estimate', name: '๊ฒฌ์ ์„œ ์ž‘์„ฑ', icon: '๐Ÿงฎ', dept: '๊ฒฌ์ ํŒ€', + color: '#8B5CF6', bgColor: '#F5F3FF', + description: '์ž์žฌ/์ธ๊ฑด๋น„/๊ฒฝ๋น„๋ฅผ ์‚ฐ์ถœํ•˜์—ฌ ๊ฒฌ์ ์„œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. ์ž…์ฐฐ ํ”„๋กœ์ ํŠธ๋Š” ์ž…์ฐฐ๊ฐ€ ์‚ฐ์ •์—, ์ˆ˜์˜๊ณ„์•ฝ์€ ๊ณ ๊ฐ ์ œ์ถœ์šฉ์œผ๋กœ ํ™œ์šฉํ•œ๋‹ค.', + documents: ['๊ฒฌ์ ์„œ', '๋‹จ๊ฐ€์‚ฐ์ถœ์„œ', '์ž์žฌ๋ชฉ๋ก'], samLink: '/juil/estimate', samMenu: '๊ฒฌ์ /์ž…์ฐฐ/๊ณต์‚ฌ๊ด€๋ฆฌ', - branch: true, optional: true, subSteps: [ { - id: 'S2-1', name: '์ž…์ฐฐ์„œ๋ฅ˜ ์ค€๋น„', icon: '๐Ÿ“‚', + id: 'S2-1', name: '๋ฌผ๋Ÿ‰ ์‚ฐ์ถœ', icon: '๐Ÿ“', + description: '๋„๋ฉด๊ณผ ์‹ค์ธก ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž์žฌ๋ณ„ ๋ฌผ๋Ÿ‰(์ˆ˜๋Ÿ‰)์„ ์‚ฐ์ถœํ•œ๋‹ค.', + input: ['๋„๋ฉด', '์‹ค์ธก ๋ฐ์ดํ„ฐ', 'ํ˜„์žฅ์กฐ์‚ฌ์„œ'], + output: ['๋ฌผ๋Ÿ‰์‚ฐ์ถœ์„œ (์ž์žฌ๋ณ„ ์ˆ˜๋Ÿ‰)'], + responsible: '๊ฒฌ์  ๋‹ด๋‹น์ž', + tips: ['๋กœ์Šค์œจ(5~10%) ๋ฐ˜๋“œ์‹œ ๋ฐ˜์˜', 'ํ˜„์žฅ ์—ฌ๊ฑด์— ๋”ฐ๋ฅธ ์ถ”๊ฐ€ ๋ฌผ๋Ÿ‰ ๊ณ ๋ ค'], + duration: '2~3์ผ', + }, + { + id: 'S2-2', name: '๋‹จ๊ฐ€ ์‚ฐ์ •', icon: '๐Ÿ’ต', + description: '์ž์žฌ ๋‹จ๊ฐ€, ์ธ๊ฑด๋น„, ์žฅ๋น„๋น„, ๊ฒฝ๋น„ ๋“ฑ ๊ฐ ํ•ญ๋ชฉ์˜ ๋‹จ๊ฐ€๋ฅผ ์‚ฐ์ •ํ•œ๋‹ค.', + input: ['๋ฌผ๋Ÿ‰์‚ฐ์ถœ์„œ', '์ตœ๊ทผ ์ž์žฌ ์‹œ์„ธ', '๋…ธ๋ฌด๋‹จ๊ฐ€ํ‘œ'], + output: ['๋‹จ๊ฐ€์‚ฐ์ถœ์„œ'], + responsible: '๊ฒฌ์  ๋‹ด๋‹น์ž', + tips: ['์ž์žฌ ์‹œ์„ธ๋Š” ์ตœ๊ทผ 3๊ฐœ์›” ํ‰๊ท  ์ ์šฉ', '๋…ธ๋ฌด๋‹จ๊ฐ€๋Š” ๋Œ€ํ•œ๊ฑด์„คํ˜‘ํšŒ ๊ธฐ์ค€ ์ฐธ์กฐ'], + duration: '1~2์ผ', + }, + { + id: 'S2-3', name: '๊ฒฌ์ ๊ฐ€ ์‚ฐ์ถœ', icon: '๐Ÿงฎ', + description: '๋ฌผ๋Ÿ‰ x ๋‹จ๊ฐ€๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , ์ด์œค์œจ/๊ด€๋ฆฌ๋น„๋ฅผ ์ ์šฉํ•˜์—ฌ ์ตœ์ข… ๊ฒฌ์ ๊ฐ€๋ฅผ ์‚ฐ์ถœํ•œ๋‹ค.', + input: ['๋ฌผ๋Ÿ‰์‚ฐ์ถœ์„œ', '๋‹จ๊ฐ€์‚ฐ์ถœ์„œ', '์ด์œค์œจ ๊ธฐ์ค€'], + output: ['์›๊ฐ€๊ณ„์‚ฐ์„œ', '๋‚ด๋ถ€ ๊ฒฌ์ ์„œ'], + responsible: '๊ฒฌ์ ํŒ€์žฅ', + tips: ['์ด์œค์œจ์€ ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๋ณ„ ์ฐจ๋“ฑ ์ ์šฉ', '์›๊ฐ€ ๋Œ€๋น„ ๊ฒฌ์ ๊ฐ€ ๊ฒ€์ฆ ํ•„์ˆ˜'], + duration: '1์ผ', + }, + { + id: 'S2-4', name: '๊ฒฌ์ ์„œ ์ž‘์„ฑ/๊ฒ€ํ† ', icon: '๐Ÿ“‹', + description: '๊ณ ๊ฐ ์ œ์ถœ์šฉ ๊ฒฌ์ ์„œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ํŒ€์žฅ ๊ฒ€ํ†  ํ›„ ์ตœ์ข… ํ™•์ •ํ•œ๋‹ค.', + input: ['์›๊ฐ€๊ณ„์‚ฐ์„œ', '๊ณ ๊ฐ ์š”๊ตฌ ์–‘์‹'], + output: ['๊ณต์‹ ๊ฒฌ์ ์„œ (PDF)'], + responsible: '๊ฒฌ์ ํŒ€์žฅ โ†’ ๋Œ€ํ‘œ์ด์‚ฌ ์Šน์ธ', + tips: ['๊ณ ๊ฐ์‚ฌ ์–‘์‹์ด ๋ณ„๋„๋กœ ์žˆ๋Š”์ง€ ํ™•์ธ', '๊ฒฌ์  ์œ ํšจ๊ธฐ๊ฐ„ ๋ช…์‹œ (๋ณดํ†ต 30์ผ)'], + duration: '1์ผ', + }, + ], + }, + { + id: 3, phase: 'bid', name: '์ž…์ฐฐ ์ฐธ์—ฌ', icon: '๐Ÿท๏ธ', dept: '์˜์—…ํŒ€', + color: '#EC4899', bgColor: '#FDF2F8', + description: '๊ณต๊ณต/๋Œ€ํ˜• ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ๊ฒฌ์ ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž…์ฐฐ์— ์ฐธ์—ฌํ•œ๋‹ค. ์†Œ๊ทœ๋ชจ ์—…์ฒด๋‚˜ ์ˆ˜์˜๊ณ„์•ฝ์€ ์ด ๋‹จ๊ณ„๋ฅผ ์ƒ๋žตํ•œ๋‹ค.', + documents: ['์ž…์ฐฐ์„œ', '๊ธฐ์ˆ ์ œ์•ˆ์„œ', '์‚ฌ์—…์ž๋“ฑ๋ก์ฆ ์‚ฌ๋ณธ'], + samLink: '/juil/estimate', samMenu: '๊ฒฌ์ /์ž…์ฐฐ/๊ณต์‚ฌ๊ด€๋ฆฌ', + subSteps: [ + { + id: 'S3-1', name: '์ž…์ฐฐ์„œ๋ฅ˜ ์ค€๋น„', icon: '๐Ÿ“‚', description: '์ž…์ฐฐ ์ฐธ์—ฌ์— ํ•„์š”ํ•œ ์„œ๋ฅ˜(์‚ฌ์—…์ž๋“ฑ๋ก์ฆ, ์‹ค์ ์ฆ๋ช…, ์žฌ๋ฌด์ œํ‘œ ๋“ฑ)๋ฅผ ์ค€๋น„ํ•œ๋‹ค.', input: ['์ž…์ฐฐ ๊ณต๊ณ ๋ฌธ (ํ•„์š”์„œ๋ฅ˜ ๋ชฉ๋ก)', 'ํšŒ์‚ฌ ๊ธฐ๋ณธ์„œ๋ฅ˜'], output: ['์ž…์ฐฐ์„œ๋ฅ˜ ํŒจํ‚ค์ง€'], @@ -106,51 +150,6 @@ }, ], }, - { - id: 3, phase: 'estimate', name: '๊ฒฌ์ ์„œ ์ž‘์„ฑ', icon: '๐Ÿงฎ', dept: '๊ฒฌ์ ํŒ€', - color: '#8B5CF6', bgColor: '#F5F3FF', - description: '์ž์žฌ/์ธ๊ฑด๋น„/๊ฒฝ๋น„๋ฅผ ์‚ฐ์ถœํ•˜์—ฌ ๊ฒฌ์ ์„œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. ์ž…์ฐฐ ํ”„๋กœ์ ํŠธ๋Š” ์ž…์ฐฐ๊ฐ€ ์‚ฐ์ •์—, ์ˆ˜์˜๊ณ„์•ฝ์€ ๊ณ ๊ฐ ์ œ์ถœ์šฉ์œผ๋กœ ํ™œ์šฉํ•œ๋‹ค.', - documents: ['๊ฒฌ์ ์„œ', '๋‹จ๊ฐ€์‚ฐ์ถœ์„œ', '์ž์žฌ๋ชฉ๋ก'], - samLink: '/juil/estimate', samMenu: '๊ฒฌ์ /์ž…์ฐฐ/๊ณต์‚ฌ๊ด€๋ฆฌ', - subSteps: [ - { - id: 'S3-1', name: '๋ฌผ๋Ÿ‰ ์‚ฐ์ถœ', icon: '๐Ÿ“', - description: '๋„๋ฉด๊ณผ ์‹ค์ธก ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž์žฌ๋ณ„ ๋ฌผ๋Ÿ‰(์ˆ˜๋Ÿ‰)์„ ์‚ฐ์ถœํ•œ๋‹ค.', - input: ['๋„๋ฉด', '์‹ค์ธก ๋ฐ์ดํ„ฐ', 'ํ˜„์žฅ์กฐ์‚ฌ์„œ'], - output: ['๋ฌผ๋Ÿ‰์‚ฐ์ถœ์„œ (์ž์žฌ๋ณ„ ์ˆ˜๋Ÿ‰)'], - responsible: '๊ฒฌ์  ๋‹ด๋‹น์ž', - tips: ['๋กœ์Šค์œจ(5~10%) ๋ฐ˜๋“œ์‹œ ๋ฐ˜์˜', 'ํ˜„์žฅ ์—ฌ๊ฑด์— ๋”ฐ๋ฅธ ์ถ”๊ฐ€ ๋ฌผ๋Ÿ‰ ๊ณ ๋ ค'], - duration: '2~3์ผ', - }, - { - id: 'S3-2', name: '๋‹จ๊ฐ€ ์‚ฐ์ •', icon: '๐Ÿ’ต', - description: '์ž์žฌ ๋‹จ๊ฐ€, ์ธ๊ฑด๋น„, ์žฅ๋น„๋น„, ๊ฒฝ๋น„ ๋“ฑ ๊ฐ ํ•ญ๋ชฉ์˜ ๋‹จ๊ฐ€๋ฅผ ์‚ฐ์ •ํ•œ๋‹ค.', - input: ['๋ฌผ๋Ÿ‰์‚ฐ์ถœ์„œ', '์ตœ๊ทผ ์ž์žฌ ์‹œ์„ธ', '๋…ธ๋ฌด๋‹จ๊ฐ€ํ‘œ'], - output: ['๋‹จ๊ฐ€์‚ฐ์ถœ์„œ'], - responsible: '๊ฒฌ์  ๋‹ด๋‹น์ž', - tips: ['์ž์žฌ ์‹œ์„ธ๋Š” ์ตœ๊ทผ 3๊ฐœ์›” ํ‰๊ท  ์ ์šฉ', '๋…ธ๋ฌด๋‹จ๊ฐ€๋Š” ๋Œ€ํ•œ๊ฑด์„คํ˜‘ํšŒ ๊ธฐ์ค€ ์ฐธ์กฐ'], - duration: '1~2์ผ', - }, - { - id: 'S3-3', name: '๊ฒฌ์ ๊ฐ€ ์‚ฐ์ถœ', icon: '๐Ÿงฎ', - description: '๋ฌผ๋Ÿ‰ x ๋‹จ๊ฐ€๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , ์ด์œค์œจ/๊ด€๋ฆฌ๋น„๋ฅผ ์ ์šฉํ•˜์—ฌ ์ตœ์ข… ๊ฒฌ์ ๊ฐ€๋ฅผ ์‚ฐ์ถœํ•œ๋‹ค.', - input: ['๋ฌผ๋Ÿ‰์‚ฐ์ถœ์„œ', '๋‹จ๊ฐ€์‚ฐ์ถœ์„œ', '์ด์œค์œจ ๊ธฐ์ค€'], - output: ['์›๊ฐ€๊ณ„์‚ฐ์„œ', '๋‚ด๋ถ€ ๊ฒฌ์ ์„œ'], - responsible: '๊ฒฌ์ ํŒ€์žฅ', - tips: ['์ด์œค์œจ์€ ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๋ณ„ ์ฐจ๋“ฑ ์ ์šฉ', '์›๊ฐ€ ๋Œ€๋น„ ๊ฒฌ์ ๊ฐ€ ๊ฒ€์ฆ ํ•„์ˆ˜'], - duration: '1์ผ', - }, - { - id: 'S3-4', name: '๊ฒฌ์ ์„œ ์ž‘์„ฑ/๊ฒ€ํ† ', icon: '๐Ÿ“‹', - description: '๊ณ ๊ฐ ์ œ์ถœ์šฉ ๊ฒฌ์ ์„œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ํŒ€์žฅ ๊ฒ€ํ†  ํ›„ ์ตœ์ข… ํ™•์ •ํ•œ๋‹ค.', - input: ['์›๊ฐ€๊ณ„์‚ฐ์„œ', '๊ณ ๊ฐ ์š”๊ตฌ ์–‘์‹'], - output: ['๊ณต์‹ ๊ฒฌ์ ์„œ (PDF)'], - responsible: '๊ฒฌ์ ํŒ€์žฅ โ†’ ๋Œ€ํ‘œ์ด์‚ฌ ์Šน์ธ', - tips: ['๊ณ ๊ฐ์‚ฌ ์–‘์‹์ด ๋ณ„๋„๋กœ ์žˆ๋Š”์ง€ ํ™•์ธ', '๊ฒฌ์  ์œ ํšจ๊ธฐ๊ฐ„ ๋ช…์‹œ (๋ณดํ†ต 30์ผ)'], - duration: '1์ผ', - }, - ], - }, { id: 4, phase: 'contract', name: '์ˆ˜์ฃผ/๊ณ„์•ฝ', icon: '๐Ÿ“', dept: '์˜์—…ํŒ€', color: '#10B981', bgColor: '#ECFDF5', @@ -583,18 +582,13 @@ function ProcessNode({ process, isActive, onClick }) { fontSize: '11px', color: '#FFF', backgroundColor: process.color, borderRadius: '10px', padding: '1px 8px', display: 'inline-block', }}>{process.dept} - {process.optional && ( + {process.phase === 'bid' && (
โ‘‚
- )} - {process.optional && ( -
์ƒ๋žต ๊ฐ€๋Šฅ
+ }}>A )} ); @@ -875,26 +869,16 @@ function DetailModal({ process, onClose }) { ); } -// --- ๋ถ„๊ธฐ ํ‘œ์‹œ --- -function BranchInfo() { - return ( -
- - ๋Œ€ํ˜•/๊ณต๊ณต โ†’ ์ž…์ฐฐ ์ฐธ์—ฌ โ†’ ๊ฒฌ์ ์„œ - - - ์†Œ๊ทœ๋ชจ/์ˆ˜์˜๊ณ„์•ฝ โ†’ ์ž…์ฐฐ ์ƒ๋žต โ†’ ๊ฒฌ์ ์„œ - -
- ); -} - // --- ๋ฉ”์ธ ์•ฑ --- function App() { const [modalProcess, setModalProcess] = useState(null); - const topRow = processes.slice(0, 6); - const bottomRow = processes.slice(6); + // ํ”„๋กœ์„ธ์Šค ์ฐธ์กฐ + const p = {}; + processes.forEach(proc => { p[proc.phase] = proc; }); + + // ๊ณตํ†ต ํ›„๋ฐ˜ ํ”„๋กœ์„ธ์Šค (์ˆ˜์ฃผ/๊ณ„์•ฝ ์ดํ›„) + const postContract = [p.order, p.receive, p.construct, p.inspect, p.billing, p.payment, p.as].filter(Boolean); return (
@@ -908,57 +892,128 @@ function App() { ์ฃผ์ผ๊ธฐ์—… ์—…๋ฌด์ฒ˜๋ฆฌ๊ณผ์ • ํ”Œ๋กœ์šฐ์ฐจํŠธ โ€” ๊ฐ ๋‹จ๊ณ„๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ƒ์„ธ ์—…๋ฌด ํ๋ฆ„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

-
- {['์˜์—…', '๊ฒฌ์ ', '์‹œ๊ณต', '์ •์‚ฐ'].map((label, i) => ( - {label} - ))} -
{/* ํ”Œ๋กœ์šฐ์ฐจํŠธ ์˜์—ญ */}
- {/* ์ƒ๋‹จ ํ–‰ */} -
- {topRow.map((p, i) => ( - - - {i < topRow.length - 1 && } - - ))} + {/* === 1๋‹จ๊ณ„: ์˜์—… (๊ณตํ†ต ์‹œ์ž‘์ ) === */} +
+
- - - {/* ์—ฐ๊ฒฐ ํ™”์‚ดํ‘œ */} -
-
-
-
+ {/* ๋ถ„๊ธฐ ํ™”์‚ดํ‘œ */} +
+ {/* ์ค‘์•™ ์„ธ๋กœ์„  */} +
+ {/* ๊ฐ€๋กœ ๋ถ„๊ธฐ์„  */} +
+ {/* ์™ผ์ชฝ ์„ธ๋กœ์„  + ํ™”์‚ดํ‘œ */} +
+
+
+
+ {/* ์˜ค๋ฅธ์ชฝ ์„ธ๋กœ์„  + ํ™”์‚ดํ‘œ */} +
+
+
- {/* ํ•˜๋‹จ ํ–‰ */} + {/* === 2๋‹จ๊ณ„: ๋‘ ๊ฒฝ๋กœ ๋ถ„๊ธฐ === */} +
+ {/* A ๊ฒฝ๋กœ: ์ž…์ฐฐ ๊ธฐ์—… */} +
+
+ ๐Ÿข + A. ์ž…์ฐฐ ์ฐธ์—ฌ ๊ธฐ์—… (๋Œ€ํ˜•/๊ณต๊ณต ํ”„๋กœ์ ํŠธ) +
+
+ + + +
+
+ ๊ฒฌ์ ์„œ ์ž‘์„ฑ โ†’ ์ž…์ฐฐ ์ฐธ์—ฌ โ†’ ๋‚™์ฐฐ ์‹œ ์ˆ˜์ฃผ +
+
+ + {/* B ๊ฒฝ๋กœ: ์ˆ˜์˜๊ณ„์•ฝ */} +
+
+ ๐Ÿ  + B. ์ˆ˜์˜๊ณ„์•ฝ (์†Œ๊ทœ๋ชจ/์ง์ ‘ ์˜๋ขฐ) +
+
+ +
+
+ ๊ฒฌ์ ์„œ ์ž‘์„ฑ โ†’ ๊ณ ๊ฐ ์Šน์ธ ์‹œ ์ˆ˜์ฃผ +
+
+
+ + {/* ํ•ฉ๋ฅ˜ ํ™”์‚ดํ‘œ */} +
+ {/* ์™ผ์ชฝ ์„ธ๋กœ์„  */} +
+
+
+ {/* ์˜ค๋ฅธ์ชฝ ์„ธ๋กœ์„  */} +
+
+
+ {/* ๊ฐ€๋กœ ํ•ฉ๋ฅ˜์„  */} +
+ {/* ์ค‘์•™ ์„ธ๋กœ์„  + ํ™”์‚ดํ‘œ */} +
+
+
+
+
+ + {/* === 3๋‹จ๊ณ„: ์ˆ˜์ฃผ/๊ณ„์•ฝ (ํ•ฉ๋ฅ˜ ์ง€์ ) === */} +
+ +
+ + {/* ์•„๋ž˜ ํ™”์‚ดํ‘œ */} +
+
+
+
+
+
+ + {/* === 4๋‹จ๊ณ„: ๊ณตํ†ต ํ›„๋ฐ˜ ํ”„๋กœ์„ธ์Šค === */}
- {bottomRow.map((p, i) => ( - - - {i < bottomRow.length - 1 && } + {postContract.map((proc, i) => ( + + + {i < postContract.length - 1 && } ))}
@@ -969,11 +1024,18 @@ function App() { display: 'flex', gap: '16px', flexWrap: 'wrap', padding: '12px 16px', backgroundColor: '#F9FAFB', borderRadius: '8px', border: '1px solid #E5E7EB', - fontSize: '12px', color: '#6B7280', + fontSize: '12px', color: '#6B7280', alignItems: 'center', }}> ๋ฒ”๋ก€: + + + ์ž…์ฐฐ ์ฐธ์—ฌ ๊ฒฝ๋กœ + + + + ์ˆ˜์˜๊ณ„์•ฝ ๊ฒฝ๋กœ + ํด๋ฆญ โ†’ ์ƒ์„ธ ์—…๋ฌด ๋ชจ๋‹ฌ - โ‘‚ ์ƒ๋žต ๊ฐ€๋Šฅ ๋‹จ๊ณ„ (์ž…์ฐฐ) โ†— SAM ๋ฉ”๋‰ด ๋ฐ”๋กœ๊ฐ€๊ธฐ ESC ํ‚ค๋กœ ๋ชจ๋‹ฌ ๋‹ซ๊ธฐ