jeongkee commited on
Commit
3b87d60
·
verified ·
1 Parent(s): cb22146

Create index.html

Browse files
Files changed (1) hide show
  1. index.html +991 -19
index.html CHANGED
@@ -1,19 +1,991 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="ko">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Text to SVG 워크플로우 마스터 - 허깅페이스 스페이스</title>
7
+ <meta name="description" content="텍스트 문서를 맥킨지/딜로이트 수준의 전문적인 비즈니스 시각화로 자동 변환하는 완전 가이드">
8
+ <meta name="keywords" content="Text to SVG, 워크플로우, 비즈니스 시각화, 교육, 튜토리얼">
9
+
10
+ <!-- Open Graph meta tags for social sharing -->
11
+ <meta property="og:title" content="Text to SVG 워크플로우 마스터">
12
+ <meta property="og:description" content="텍스트 문서를 전문적인 비즈니스 시각화로 자동 변환하는 인터랙티브 학습 플랫폼">
13
+ <meta property="og:type" content="website">
14
+
15
+ <style>
16
+ * {
17
+ margin: 0;
18
+ padding: 0;
19
+ box-sizing: border-box;
20
+ }
21
+
22
+ body {
23
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
24
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
25
+ min-height: 100vh;
26
+ line-height: 1.6;
27
+ }
28
+
29
+ .container {
30
+ max-width: 1200px;
31
+ margin: 0 auto;
32
+ padding: 20px;
33
+ }
34
+
35
+ .header {
36
+ text-align: center;
37
+ color: white;
38
+ margin-bottom: 40px;
39
+ }
40
+
41
+ .header h1 {
42
+ font-size: clamp(2rem, 5vw, 3rem);
43
+ font-weight: 700;
44
+ margin-bottom: 10px;
45
+ text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
46
+ }
47
+
48
+ .header p {
49
+ font-size: clamp(1rem, 3vw, 1.2rem);
50
+ opacity: 0.9;
51
+ }
52
+
53
+ .huggingface-badge {
54
+ display: inline-flex;
55
+ align-items: center;
56
+ gap: 8px;
57
+ background: rgba(255,255,255,0.1);
58
+ color: white;
59
+ padding: 8px 16px;
60
+ border-radius: 20px;
61
+ margin-top: 20px;
62
+ font-size: 0.9rem;
63
+ backdrop-filter: blur(10px);
64
+ }
65
+
66
+ .workflow-container {
67
+ background: white;
68
+ border-radius: 20px;
69
+ padding: 40px;
70
+ box-shadow: 0 20px 60px rgba(0,0,0,0.2);
71
+ margin-bottom: 40px;
72
+ }
73
+
74
+ .workflow-steps {
75
+ display: grid;
76
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
77
+ gap: 20px;
78
+ align-items: center;
79
+ margin-bottom: 60px;
80
+ }
81
+
82
+ .step {
83
+ text-align: center;
84
+ position: relative;
85
+ cursor: pointer;
86
+ transition: all 0.3s ease;
87
+ padding: 20px 10px;
88
+ }
89
+
90
+ .step:hover {
91
+ transform: translateY(-5px);
92
+ }
93
+
94
+ .step.active {
95
+ background: linear-gradient(145deg, #f0f9ff, #e0f2fe);
96
+ border-radius: 15px;
97
+ box-shadow: 0 8px 25px rgba(59, 130, 246, 0.15);
98
+ }
99
+
100
+ .step-number {
101
+ width: 60px;
102
+ height: 60px;
103
+ border-radius: 50%;
104
+ background: linear-gradient(145deg, #3b82f6, #1d4ed8);
105
+ color: white;
106
+ display: flex;
107
+ align-items: center;
108
+ justify-content: center;
109
+ font-size: 1.5rem;
110
+ font-weight: bold;
111
+ margin: 0 auto 15px;
112
+ position: relative;
113
+ box-shadow: 0 4px 15px rgba(59, 130, 246, 0.3);
114
+ }
115
+
116
+ .step.completed .step-number {
117
+ background: linear-gradient(145deg, #22c55e, #16a34a);
118
+ }
119
+
120
+ .step.active .step-number {
121
+ background: linear-gradient(145deg, #f59e0b, #d97706);
122
+ animation: pulse 2s infinite;
123
+ }
124
+
125
+ @keyframes pulse {
126
+ 0% { box-shadow: 0 4px 15px rgba(245, 158, 11, 0.3); }
127
+ 50% { box-shadow: 0 4px 25px rgba(245, 158, 11, 0.6); }
128
+ 100% { box-shadow: 0 4px 15px rgba(245, 158, 11, 0.3); }
129
+ }
130
+
131
+ .step-title {
132
+ font-size: 1rem;
133
+ font-weight: 600;
134
+ color: #1f2937;
135
+ margin-bottom: 8px;
136
+ }
137
+
138
+ .step-desc {
139
+ font-size: 0.875rem;
140
+ color: #6b7280;
141
+ line-height: 1.4;
142
+ }
143
+
144
+ .content-area {
145
+ background: #f8fafc;
146
+ border-radius: 15px;
147
+ padding: 30px;
148
+ min-height: 500px;
149
+ }
150
+
151
+ .step-content {
152
+ display: none;
153
+ }
154
+
155
+ .step-content.active {
156
+ display: block;
157
+ animation: fadeIn 0.5s ease-in;
158
+ }
159
+
160
+ @keyframes fadeIn {
161
+ from { opacity: 0; transform: translateY(20px); }
162
+ to { opacity: 1; transform: translateY(0); }
163
+ }
164
+
165
+ .demo-input {
166
+ background: white;
167
+ border: 2px solid #e5e7eb;
168
+ border-radius: 10px;
169
+ padding: 20px;
170
+ margin-bottom: 20px;
171
+ font-family: 'Monaco', 'Courier New', monospace;
172
+ font-size: 14px;
173
+ line-height: 1.6;
174
+ white-space: pre-wrap;
175
+ overflow-x: auto;
176
+ }
177
+
178
+ .demo-output {
179
+ background: #111827;
180
+ color: #f9fafb;
181
+ border-radius: 10px;
182
+ padding: 20px;
183
+ margin-top: 20px;
184
+ font-family: 'Monaco', 'Courier New', monospace;
185
+ font-size: 12px;
186
+ line-height: 1.5;
187
+ overflow-x: auto;
188
+ white-space: pre-wrap;
189
+ }
190
+
191
+ .analysis-grid {
192
+ display: grid;
193
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
194
+ gap: 20px;
195
+ margin-top: 20px;
196
+ }
197
+
198
+ .analysis-card {
199
+ background: white;
200
+ border-radius: 10px;
201
+ padding: 20px;
202
+ border-left: 4px solid #3b82f6;
203
+ box-shadow: 0 2px 10px rgba(0,0,0,0.1);
204
+ }
205
+
206
+ .analysis-card h4 {
207
+ color: #1f2937;
208
+ margin-bottom: 10px;
209
+ font-size: 1.1rem;
210
+ }
211
+
212
+ .analysis-card ul {
213
+ list-style: none;
214
+ color: #6b7280;
215
+ }
216
+
217
+ .analysis-card li {
218
+ padding: 5px 0;
219
+ position: relative;
220
+ padding-left: 20px;
221
+ }
222
+
223
+ .analysis-card li:before {
224
+ content: "•";
225
+ color: #3b82f6;
226
+ font-weight: bold;
227
+ position: absolute;
228
+ left: 0;
229
+ }
230
+
231
+ .doc-type-grid {
232
+ display: grid;
233
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
234
+ gap: 20px;
235
+ margin-top: 20px;
236
+ }
237
+
238
+ .doc-type-card {
239
+ background: white;
240
+ border-radius: 10px;
241
+ padding: 20px;
242
+ border: 2px solid #e5e7eb;
243
+ transition: all 0.3s ease;
244
+ cursor: pointer;
245
+ }
246
+
247
+ .doc-type-card:hover {
248
+ border-color: #3b82f6;
249
+ transform: translateY(-2px);
250
+ box-shadow: 0 8px 25px rgba(59, 130, 246, 0.15);
251
+ }
252
+
253
+ .doc-type-card.selected {
254
+ border-color: #22c55e;
255
+ background: #f0fdf4;
256
+ }
257
+
258
+ .doc-type-title {
259
+ font-size: 1.2rem;
260
+ font-weight: 600;
261
+ color: #1f2937;
262
+ margin-bottom: 10px;
263
+ }
264
+
265
+ .doc-type-desc {
266
+ color: #6b7280;
267
+ font-size: 0.9rem;
268
+ line-height: 1.5;
269
+ }
270
+
271
+ .svg-preview {
272
+ background: white;
273
+ border-radius: 10px;
274
+ padding: 20px;
275
+ margin-top: 20px;
276
+ border: 2px solid #e5e7eb;
277
+ min-height: 300px;
278
+ display: flex;
279
+ align-items: center;
280
+ justify-content: center;
281
+ }
282
+
283
+ .controls {
284
+ display: flex;
285
+ gap: 20px;
286
+ margin-top: 30px;
287
+ justify-content: center;
288
+ flex-wrap: wrap;
289
+ }
290
+
291
+ .btn {
292
+ padding: 12px 24px;
293
+ border-radius: 8px;
294
+ border: none;
295
+ font-weight: 600;
296
+ cursor: pointer;
297
+ transition: all 0.3s ease;
298
+ font-size: 1rem;
299
+ text-decoration: none;
300
+ display: inline-flex;
301
+ align-items: center;
302
+ gap: 8px;
303
+ }
304
+
305
+ .btn-primary {
306
+ background: linear-gradient(145deg, #3b82f6, #1d4ed8);
307
+ color: white;
308
+ }
309
+
310
+ .btn-primary:hover {
311
+ transform: translateY(-2px);
312
+ box-shadow: 0 8px 25px rgba(59, 130, 246, 0.3);
313
+ }
314
+
315
+ .btn-secondary {
316
+ background: #f3f4f6;
317
+ color: #374151;
318
+ border: 2px solid #e5e7eb;
319
+ }
320
+
321
+ .btn-secondary:hover {
322
+ background: #e5e7eb;
323
+ }
324
+
325
+ .progress-bar {
326
+ height: 6px;
327
+ background: #e5e7eb;
328
+ border-radius: 3px;
329
+ margin: 20px 0;
330
+ overflow: hidden;
331
+ }
332
+
333
+ .progress-fill {
334
+ height: 100%;
335
+ background: linear-gradient(90deg, #3b82f6, #22c55e);
336
+ transition: width 0.5s ease;
337
+ border-radius: 3px;
338
+ }
339
+
340
+ .feature-grid {
341
+ display: grid;
342
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
343
+ gap: 20px;
344
+ margin-top: 30px;
345
+ }
346
+
347
+ .feature-card {
348
+ background: white;
349
+ border-radius: 10px;
350
+ padding: 20px;
351
+ text-align: center;
352
+ box-shadow: 0 4px 15px rgba(0,0,0,0.1);
353
+ transition: transform 0.3s ease;
354
+ }
355
+
356
+ .feature-card:hover {
357
+ transform: translateY(-5px);
358
+ }
359
+
360
+ .feature-icon {
361
+ width: 60px;
362
+ height: 60px;
363
+ border-radius: 50%;
364
+ background: linear-gradient(145deg, #f3f4f6, #e5e7eb);
365
+ display: flex;
366
+ align-items: center;
367
+ justify-content: center;
368
+ margin: 0 auto 15px;
369
+ font-size: 1.5rem;
370
+ }
371
+
372
+ .footer-info {
373
+ background: rgba(255,255,255,0.1);
374
+ backdrop-filter: blur(10px);
375
+ border-radius: 15px;
376
+ padding: 30px;
377
+ color: white;
378
+ text-align: center;
379
+ margin-top: 40px;
380
+ }
381
+
382
+ .footer-links {
383
+ display: flex;
384
+ justify-content: center;
385
+ gap: 20px;
386
+ margin-top: 20px;
387
+ flex-wrap: wrap;
388
+ }
389
+
390
+ .footer-link {
391
+ color: white;
392
+ text-decoration: none;
393
+ padding: 8px 16px;
394
+ border-radius: 20px;
395
+ background: rgba(255,255,255,0.1);
396
+ transition: all 0.3s ease;
397
+ font-size: 0.9rem;
398
+ }
399
+
400
+ .footer-link:hover {
401
+ background: rgba(255,255,255,0.2);
402
+ transform: translateY(-2px);
403
+ }
404
+
405
+ /* 반응형 디자인 */
406
+ @media (max-width: 768px) {
407
+ .container {
408
+ padding: 10px;
409
+ }
410
+
411
+ .workflow-container {
412
+ padding: 20px;
413
+ }
414
+
415
+ .controls {
416
+ flex-direction: column;
417
+ align-items: center;
418
+ }
419
+
420
+ .btn {
421
+ width: 100%;
422
+ max-width: 200px;
423
+ justify-content: center;
424
+ }
425
+ }
426
+
427
+ /* 다크모드 지원 */
428
+ @media (prefers-color-scheme: dark) {
429
+ .workflow-container {
430
+ background: #1f2937;
431
+ color: #f9fafb;
432
+ }
433
+
434
+ .content-area {
435
+ background: #374151;
436
+ }
437
+
438
+ .step-title {
439
+ color: #f9fafb;
440
+ }
441
+
442
+ .analysis-card {
443
+ background: #374151;
444
+ color: #f9fafb;
445
+ }
446
+
447
+ .doc-type-card {
448
+ background: #374151;
449
+ color: #f9fafb;
450
+ border-color: #4b5563;
451
+ }
452
+ }
453
+ </style>
454
+ </head>
455
+ <body>
456
+ <div class="container">
457
+ <div class="header">
458
+ <h1>📊 Text to SVG 워크플로우 마스터</h1>
459
+ <p>텍스트 문서를 맥킨지/딜로이트 수준의 전문적인 비즈니스 시각화로 자동 변환하는 완전 가이드</p>
460
+ <div class="huggingface-badge">
461
+ 🤗 Hugging Face Space에서 호스팅
462
+ </div>
463
+ </div>
464
+
465
+ <div class="workflow-container">
466
+ <div class="progress-bar">
467
+ <div class="progress-fill" id="progressBar" style="width: 16.67%"></div>
468
+ </div>
469
+
470
+ <div class="workflow-steps">
471
+ <div class="step active" data-step="1">
472
+ <div class="step-number">1</div>
473
+ <div class="step-title">문서 입력</div>
474
+ <div class="step-desc">텍스트 문서 업로드 및 전처리</div>
475
+ </div>
476
+ <div class="step" data-step="2">
477
+ <div class="step-number">2</div>
478
+ <div class="step-title">토픽 분석</div>
479
+ <div class="step-desc">키워드 추출 및 의도 파악</div>
480
+ </div>
481
+ <div class="step" data-step="3">
482
+ <div class="step-number">3</div>
483
+ <div class="step-title">문서 분류</div>
484
+ <div class="step-desc">A계열/B계열 타입 매핑</div>
485
+ </div>
486
+ <div class="step" data-step="4">
487
+ <div class="step-number">4</div>
488
+ <div class="step-title">SVG 가이드라인</div>
489
+ <div class="step-desc">레이아웃 및 스타일 규칙</div>
490
+ </div>
491
+ <div class="step" data-step="5">
492
+ <div class="step-number">5</div>
493
+ <div class="step-title">프롬프트 생성</div>
494
+ <div class="step-desc">LLM 최적화 프롬프트</div>
495
+ </div>
496
+ <div class="step" data-step="6">
497
+ <div class="step-number">6</div>
498
+ <div class="step-title">SVG 출력</div>
499
+ <div class="step-desc">최종 시각화 생성</div>
500
+ </div>
501
+ </div>
502
+
503
+ <div class="content-area">
504
+ <!-- Step 1: 문서 입력 -->
505
+ <div class="step-content active" id="step1">
506
+ <h2>🔄 STEP 1: 문서 입력 및 전처리</h2>
507
+ <p>다양한 형태의 텍스트 문서를 입력받아 분석 가능한 형태로 전처리합니다.</p>
508
+
509
+ <h3>📄 예시 입력 문서</h3>
510
+ <div class="demo-input" id="sampleInput">2024년 3분기 경영 성과 요약
511
+
512
+ 주요 KPI:
513
+ - 매출액: 12.3조원 (목표: 11.5조, YoY +8.2%)
514
+ - 영업이익: 1.8조원 (목표: 1.6조, YoY +12.5%)
515
+ - 순이익: 1.2조원 (목표: 1.1조, YoY +9.1%)
516
+ - ROE: 14.2% (목표: 13.0%, YoY +1.8%p)
517
+
518
+ 월별 실적 추이:
519
+ 7월: 매출 4.1조, 영업이익 0.6조
520
+ 8월: 매출 4.0조, 영업이익 0.5조
521
+ 9월: 매출 4.2조, 영업이익 0.7조
522
+
523
+ 핵심 인사이트:
524
+ - 프리미엄 제품 판매 증가로 수익성 개선
525
+ - 디지털 채널 매출 비중 35% 달성
526
+ - 해외 사업 확장으로 신규 고객 확보</div>
527
+
528
+ <div class="feature-grid">
529
+ <div class="feature-card">
530
+ <div class="feature-icon">📝</div>
531
+ <h4>지원 포맷</h4>
532
+ <p>.txt, .docx, .pdf, .md</p>
533
+ </div>
534
+ <div class="feature-card">
535
+ <div class="feature-icon">🔍</div>
536
+ <h4>자동 인식</h4>
537
+ <p>제목, 리스트, 데이터 패턴</p>
538
+ </div>
539
+ <div class="feature-card">
540
+ <div class="feature-icon">⚡</div>
541
+ <h4>실시간 처리</h4>
542
+ <p>즉시 분석 및 피드백</p>
543
+ </div>
544
+ </div>
545
+ </div>
546
+
547
+ <!-- Step 2: 토픽 분석 -->
548
+ <div class="step-content" id="step2">
549
+ <h2>🧠 STEP 2: 토픽 분석 및 키워드 추출</h2>
550
+ <p>문서 내용을 분석하여 핵심 키워드와 의도를 파악합니다.</p>
551
+
552
+ <div class="analysis-grid">
553
+ <div class="analysis-card">
554
+ <h4>🔑 추출된 키워드</h4>
555
+ <ul>
556
+ <li>KPI, 경영, 성과</li>
557
+ <li>목표, 실적, YoY</li>
558
+ <li>매출, 영업이익</li>
559
+ <li>디지털, 해외사업</li>
560
+ </ul>
561
+ </div>
562
+ <div class="analysis-card">
563
+ <h4>📊 데이터 패턴</h4>
564
+ <ul>
565
+ <li>금액: 조원 단위</li>
566
+ <li>비율: 백분율</li>
567
+ <li>증감: YoY 비교</li>
568
+ <li>시계열: 월별 추이</li>
569
+ </ul>
570
+ </div>
571
+ <div class="analysis-card">
572
+ <h4>👥 타겟 청중</h4>
573
+ <ul>
574
+ <li>경영진 대상</li>
575
+ <li>의사결정 지원</li>
576
+ <li>요약 보고 형태</li>
577
+ <li>액션 아이템 필요</li>
578
+ </ul>
579
+ </div>
580
+ <div class="analysis-card">
581
+ <h4>⏰ 시간 특성</h4>
582
+ <ul>
583
+ <li>분기별 정기 보고</li>
584
+ <li>실시간 모니터링</li>
585
+ <li>목표 대비 추적</li>
586
+ <li>트렌드 분석</li>
587
+ </ul>
588
+ </div>
589
+ </div>
590
+ </div>
591
+
592
+ <!-- Step 3: 문서 분류 -->
593
+ <div class="step-content" id="step3">
594
+ <h2>🎯 STEP 3: 문서 타입 분류</h2>
595
+ <p>분석 결과를 바탕으로 최적의 문서 타입을 선택합니다.</p>
596
+
597
+ <div class="doc-type-grid">
598
+ <div class="doc-type-card selected">
599
+ <div class="doc-type-title">A1-1: 경영진 KPI 대시보드</div>
600
+ <div class="doc-type-desc">
601
+ <strong>매칭 점수: 95%</strong><br>
602
+ • KPI 중심 구성<br>
603
+ • 목표 대비 실적<br>
604
+ • 경영진 타겟<br>
605
+ • 의사결정 지원
606
+ </div>
607
+ </div>
608
+ <div class="doc-type-card">
609
+ <div class="doc-type-title">A1-2: 재무 성과 대시보드</div>
610
+ <div class="doc-type-desc">
611
+ <strong>매칭 점수: 78%</strong><br>
612
+ • 재무 지표 포함<br>
613
+ • 수익성 분석<br>
614
+ • 폭포차트 적합<br>
615
+ • 비용 구조 누락
616
+ </div>
617
+ </div>
618
+ <div class="doc-type-card">
619
+ <div class="doc-type-title">A3-1: IR 요약 자료</div>
620
+ <div class="doc-type-desc">
621
+ <strong>매칭 점수: 65%</strong><br>
622
+ • 성장 지표 있음<br>
623
+ • 투자자 관점 부족<br>
624
+ • 전망 정보 없음<br>
625
+ • 스토리 부족
626
+ </div>
627
+ </div>
628
+ <div class="doc-type-card">
629
+ <div class="doc-type-title">B1-1: 사업계획서</div>
630
+ <div class="doc-type-desc">
631
+ <strong>매칭 점수: 35%</strong><br>
632
+ • 현황 보고 형태<br>
633
+ • 계획 요소 없음<br>
634
+ • 전략 내용 부족<br>
635
+ • 실행 계획 없음
636
+ </div>
637
+ </div>
638
+ </div>
639
+
640
+ <div class="demo-output">분류 결과: A1-1 (경영진 KPI 대시보드)
641
+
642
+ 매칭 이유:
643
+ ✓ KPI 키워드 다수 발견 (매출, 영업이익, ROE)
644
+ ✓ 목표 대비 실적 비교 구조
645
+ ✓ 경영진 대상 요약 보고 형태
646
+ ✓ YoY 증감 분석 포함
647
+ ✓ 액션 가능한 인사이트 제시
648
+
649
+ 레이아웃 권장사항:
650
+ → 좌측: KPI 카드 2×2 배치
651
+ → 우측: 월별 콤보차트
652
+ → 하단: 인사이트 콜아웃</div>
653
+ </div>
654
+
655
+ <!-- Step 4: SVG 가이드라인 -->
656
+ <div class="step-content" id="step4">
657
+ <h2>🎨 STEP 4: SVG 가이드라인 적용</h2>
658
+ <p>A1-1 타입에 최적화된 레이아웃과 스타일 규칙을 적용합니다.</p>
659
+
660
+ <div class="analysis-grid">
661
+ <div class="analysis-card">
662
+ <h4>📐 레이아웃 스펙</h4>
663
+ <ul>
664
+ <li>캔버스: 1600×900px</li>
665
+ <li>안전여백: 상하60, 좌우80</li>
666
+ <li>12-컬럼 그리드</li>
667
+ <li>헤더 120px 고정</li>
668
+ </ul>
669
+ </div>
670
+ <div class="analysis-card">
671
+ <h4>🎯 구성 요소</h4>
672
+ <ul>
673
+ <li>KPI 카드: 280×140px</li>
674
+ <li>콤보차트: 860×520px</li>
675
+ <li>콜아웃: 260×80px</li>
676
+ <li>푸터: 100px</li>
677
+ </ul>
678
+ </div>
679
+ <div class="analysis-card">
680
+ <h4>📝 타이포그래피</h4>
681
+ <ul>
682
+ <li>H1: 48px (제목)</li>
683
+ <li>H2: 32px (KPI 값)</li>
684
+ <li>Body: 18px (설명)</li>
685
+ <li>Label: 14px (라벨)</li>
686
+ </ul>
687
+ </div>
688
+ <div class="analysis-card">
689
+ <h4>🎨 컬러 시스템</h4>
690
+ <ul>
691
+ <li>Positive: #22C55E</li>
692
+ <li>Neutral: #3B82F6</li>
693
+ <li>Warning: #F59E0B</li>
694
+ <li>Negative: #EF4444</li>
695
+ </ul>
696
+ </div>
697
+ </div>
698
+
699
+ <div class="svg-preview">
700
+ <svg viewBox="0 0 800 450" style="border: 1px solid #e5e7eb; width: 100%; max-width: 800px;">
701
+ <!-- 헤더 -->
702
+ <text x="40" y="50" font-size="24" font-weight="bold" fill="#111827">2024년 3분기 경영 성과 대시보드</text>
703
+ <text x="40" y="70" font-size="12" fill="#6b7280">2024년 9월 기준</text>
704
+
705
+ <!-- KPI 카드들 -->
706
+ <g transform="translate(40, 90)">
707
+ <rect width="140" height="70" rx="4" fill="#f9fafb" stroke="#e5e7eb"/>
708
+ <text x="8" y="16" font-size="8" fill="#6b7280">매출액</text>
709
+ <text x="8" y="34" font-size="16" font-weight="bold" fill="#111827">₩12.3조</text>
710
+ <text x="8" y="46" font-size="8" fill="#22c55e">▲ 8.2% YoY</text>
711
+ </g>
712
+
713
+ <g transform="translate(190, 90)">
714
+ <rect width="140" height="70" rx="4" fill="#f9fafb" stroke="#e5e7eb"/>
715
+ <text x="8" y="16" font-size="8" fill="#6b7280">영업이익</text>
716
+ <text x="8" y="34" font-size="16" font-weight="bold" fill="#111827">₩1.8조</text>
717
+ <text x="8" y="46" font-size="8" fill="#22c55e">▲ 12.5% YoY</text>
718
+ </g>
719
+
720
+ <!-- 차트 영역 -->
721
+ <g transform="translate(350, 90)">
722
+ <rect width="400" height="250" rx="4" fill="#f8fafc" stroke="#e5e7eb"/>
723
+ <text x="200" y="20" font-size="12" font-weight="bold" text-anchor="middle" fill="#111827">월별 실적 추이</text>
724
+
725
+ <!-- 막대 차트 -->
726
+ <rect x="50" y="180" width="30" height="60" fill="#3b82f6"/>
727
+ <rect x="120" y="190" width="30" height="50" fill="#3b82f6"/>
728
+ <rect x="190" y="170" width="30" height="70" fill="#3b82f6"/>
729
+
730
+ <!-- 라벨 -->
731
+ <text x="65" y="255" font-size="8" text-anchor="middle" fill="#6b7280">7월</text>
732
+ <text x="135" y="255" font-size="8" text-anchor="middle" fill="#6b7280">8월</text>
733
+ <text x="205" y="255" font-size="8" text-anchor="middle" fill="#6b7280">9월</text>
734
+ </g>
735
+
736
+ <!-- 인사이트 콜아웃 -->
737
+ <g transform="translate(40, 370)">
738
+ <rect width="240" height="30" rx="4" fill="#f0fdf4" stroke="#22c55e"/>
739
+ <text x="8" y="12" font-size="7" fill="#15803d">주요 성과</text>
740
+ <text x="8" y="22" font-size="8" fill="#111827">프리미엄 제품 판매 증가로 수익성 개선</text>
741
+ </g>
742
+ </svg>
743
+ </div>
744
+ </div>
745
+
746
+ <!-- Step 5: 프롬프트 생성 -->
747
+ <div class="step-content" id="step5">
748
+ <h2>⚡ STEP 5: 프롬프트 엔지니어링</h2>
749
+ <p>LLM이 최적의 SVG를 생성할 수 있도록 정교한 프롬프트를 구성합니다.</p>
750
+
751
+ <div class="demo-output">다음 데이터로 경영진 KPI 대시보드(A1-1)를 생성하세요:
752
+
753
+ **레이아웃 요구사항:**
754
+ - viewBox: 0 0 1600 900
755
+ - 헤더(120px): 제목 "2024년 3분기 경영 성과 대시보드" + "2024년 9월 기준"
756
+ - 좌측 L4: KPI 카드 2×2 (각 280×140px)
757
+ - 우측 L8: 월별 콤보차트 (860×520px)
758
+ - 하단: 인사이트 콜아웃 3개
759
+
760
+ **KPI 카드 스펙:**
761
+ 1. 매출액: ₩12.3조, 목표 대비 +7%, YoY +8.2% (녹색 ▲)
762
+ 2. 영업이익: ₩1.8조, 목표 대비 +13%, YoY +12.5% (녹색 ▲)
763
+ 3. 순이익: ₩1.2조, 목표 대비 +9%, YoY +9.1% (녹색 ▲)
764
+ 4. ROE: 14.2%, 목표 대비 +1.2%p, YoY +1.8%p (녹색 ▲)
765
+
766
+ **콤보차트 데이터:**
767
+ - 7월: 매출 ₩4.1조, 영업이익 ₩0.6조
768
+ - 8월: 매출 ₩4.0조, 영업이익 ₩0.5조
769
+ - 9월: 매출 ₩4.2조, 영업이익 ₩0.7조
770
+
771
+ **색상 가이드라인:**
772
+ - 양수/목표초과: #22C55E (녹색)
773
+ - 중립/기본: #3B82F6 (파랑)
774
+ - 배경/테두리: #F9FAFB/#E5E7EB
775
+
776
+ SVG를 생성하세요.</div>
777
+
778
+ <div class="analysis-grid">
779
+ <div class="analysis-card">
780
+ <h4>🎯 프롬프트 최적화</h4>
781
+ <ul>
782
+ <li>구체적 픽셀 값 명시</li>
783
+ <li>색상 코드 정확 지정</li>
784
+ <li>데이터 구조화</li>
785
+ <li>검증 규칙 포함</li>
786
+ </ul>
787
+ </div>
788
+ <div class="analysis-card">
789
+ <h4>🔍 Few-Shot Learning</h4>
790
+ <ul>
791
+ <li>우수 사례 예제</li>
792
+ <li>실패 사례 방지</li>
793
+ <li>단계별 사고과정</li>
794
+ <li>반복 개선 로직</li>
795
+ </ul>
796
+ </div>
797
+ </div>
798
+ </div>
799
+
800
+ <!-- Step 6: SVG 출력 -->
801
+ <div class="step-content" id="step6">
802
+ <h2>🎉 STEP 6: 최종 SVG 생성 및 검증</h2>
803
+ <p>LLM이 생성한 SVG를 검증하고 파워포인트로 변환합니다.</p>
804
+
805
+ <div class="analysis-grid">
806
+ <div class="analysis-card">
807
+ <h4>✅ 품질 검증</h4>
808
+ <ul>
809
+ <li>XML 구문 유효성</li>
810
+ <li>viewBox 형식 확인</li>
811
+ <li>그리드 정렬 검사</li>
812
+ <li>색상 준수 확인</li>
813
+ </ul>
814
+ </div>
815
+ <div class="analysis-card">
816
+ <h4>🔄 자동 수정</h4>
817
+ <ul>
818
+ <li>접근성 개선</li>
819
+ <li>브랜드 가이드 적용</li>
820
+ <li>데이터 무결성 검증</li>
821
+ <li>반복 개선</li>
822
+ </ul>
823
+ </div>
824
+ <div class="analysis-card">
825
+ <h4>📊 파워포인트 변환</h4>
826
+ <ul>
827
+ <li>고해상도 PNG 변환</li>
828
+ <li>편집 가능 요소 추출</li>
829
+ <li>스피커 노트 생성</li>
830
+ <li>애니메이션 추가</li>
831
+ </ul>
832
+ </div>
833
+ <div class="analysis-card">
834
+ <h4>🚀 배포 준비</h4>
835
+ <ul>
836
+ <li>템플릿 저장</li>
837
+ <li>데이터 연동 설정</li>
838
+ <li>자동화 스크립트</li>
839
+ <li>품질 모니터링</li>
840
+ </ul>
841
+ </div>
842
+ </div>
843
+
844
+ <div class="svg-preview">
845
+ <div style="text-align: center; color: #22c55e; font-size: 3rem; margin: 50px 0;">
846
+
847
+ </div>
848
+ <div style="text-align: center;">
849
+ <h3 style="color: #1f2937; margin-bottom: 10px;">SVG 생성 완료!</h3>
850
+ <p style="color: #6b7280;">맥킨지/딜로이트 수준의 전문적인 대시보드가 생성되었습니다.</p>
851
+ </div>
852
+ </div>
853
+ </div>
854
+ </div>
855
+
856
+ <div class="controls">
857
+ <button class="btn btn-secondary" id="prevBtn" onclick="previousStep()">← 이전</button>
858
+ <button class="btn btn-primary" id="nextBtn" onclick="nextStep()">다음 →</button>
859
+ <button class="btn btn-primary" id="startOver" onclick="startOver()" style="display: none;">🔄 처음부터</button>
860
+ </div>
861
+ </div>
862
+
863
+ <!-- 하단 정보 -->
864
+ <div class="workflow-container">
865
+ <div class="feature-grid">
866
+ <div class="feature-card">
867
+ <div class="feature-icon">🎯</div>
868
+ <h4>정확한 분류</h4>
869
+ <p>25가지 문서 타입 자동 매핑</p>
870
+ </div>
871
+ <div class="feature-card">
872
+ <div class="feature-icon">⚡</div>
873
+ <h4>빠른 생성</h4>
874
+ <p>30초 내 전문 시각화 완성</p>
875
+ </div>
876
+ <div class="feature-card">
877
+ <div class="feature-icon">🎨</div>
878
+ <h4>일관된 디자인</h4>
879
+ <p>맥킨지/딜로이트 수준 품질</p>
880
+ </div>
881
+ <div class="feature-card">
882
+ <div class="feature-icon">🔧</div>
883
+ <h4>편집 용이</h4>
884
+ <p>파워포인트 완벽 호환</p>
885
+ </div>
886
+ </div>
887
+ </div>
888
+
889
+ <!-- 푸터 정보 -->
890
+ <div class="footer-info">
891
+ <h3>🚀 추가 리소스</h3>
892
+ <p>Text to SVG 워크플로우를 완전히 마스터하는 데 필요한 모든 자료들</p>
893
+
894
+ <div class="footer-links">
895
+ <a href="#" class="footer-link">📄 상세 교육자료</a>
896
+ <a href="#" class="footer-link">💻 Jupyter Notebook</a>
897
+ <a href="#" class="footer-link">📊 파워포인트 자료</a>
898
+ <a href="#" class="footer-link">🤗 GitHub 저장소</a>
899
+ </div>
900
+
901
+ <p style="margin-top: 20px; font-size: 0.9rem; opacity: 0.8;">
902
+ © 2024 Text to SVG 워크플로우 마스터 | Hugging Face Space에서 호스팅
903
+ </p>
904
+ </div>
905
+ </div>
906
+
907
+ <script>
908
+ let currentStep = 1;
909
+ const totalSteps = 6;
910
+
911
+ function updateProgress() {
912
+ const progressPercent = (currentStep / totalSteps) * 100;
913
+ document.getElementById('progressBar').style.width = progressPercent + '%';
914
+ }
915
+
916
+ function updateStepDisplay() {
917
+ // 모든 단계 비활성화
918
+ document.querySelectorAll('.step').forEach(step => {
919
+ step.classList.remove('active', 'completed');
920
+ });
921
+
922
+ document.querySelectorAll('.step-content').forEach(content => {
923
+ content.classList.remove('active');
924
+ });
925
+
926
+ // 현재 단계 활성화
927
+ document.querySelector(`[data-step="${currentStep}"]`).classList.add('active');
928
+ document.getElementById(`step${currentStep}`).classList.add('active');
929
+
930
+ // 완료된 단계 표시
931
+ for (let i = 1; i < currentStep; i++) {
932
+ document.querySelector(`[data-step="${i}"]`).classList.add('completed');
933
+ }
934
+
935
+ // 버튼 상태 업데이트
936
+ document.getElementById('prevBtn').style.display = currentStep === 1 ? 'none' : 'inline-flex';
937
+ document.getElementById('nextBtn').style.display = currentStep === totalSteps ? 'none' : 'inline-flex';
938
+ document.getElementById('startOver').style.display = currentStep === totalSteps ? 'inline-flex' : 'none';
939
+
940
+ updateProgress();
941
+ }
942
+
943
+ function nextStep() {
944
+ if (currentStep < totalSteps) {
945
+ currentStep++;
946
+ updateStepDisplay();
947
+ }
948
+ }
949
+
950
+ function previousStep() {
951
+ if (currentStep > 1) {
952
+ currentStep--;
953
+ updateStepDisplay();
954
+ }
955
+ }
956
+
957
+ function startOver() {
958
+ currentStep = 1;
959
+ updateStepDisplay();
960
+ }
961
+
962
+ // 단계 클릭 이벤트
963
+ document.querySelectorAll('.step').forEach(step => {
964
+ step.addEventListener('click', function() {
965
+ const stepNumber = parseInt(this.getAttribute('data-step'));
966
+ if (stepNumber <= currentStep + 1) { // 다음 단계까지만 허용
967
+ currentStep = stepNumber;
968
+ updateStepDisplay();
969
+ }
970
+ });
971
+ });
972
+
973
+ // 키보드 네비게이션
974
+ document.addEventListener('keydown', function(event) {
975
+ if (event.key === 'ArrowRight' && currentStep < totalSteps) {
976
+ nextStep();
977
+ } else if (event.key === 'ArrowLeft' && currentStep > 1) {
978
+ previousStep();
979
+ }
980
+ });
981
+
982
+ // 초기 설정
983
+ updateStepDisplay();
984
+
985
+ // 페이지 로드 시 환영 메시지
986
+ window.addEventListener('load', function() {
987
+ console.log('🤗 Hugging Face Space에서 Text to SVG 워크플로우 마스터를 시작합니다!');
988
+ });
989
+ </script>
990
+ </body>
991
+ </html>