hanseol-dev 5.0.2-dev.130 → 5.0.2-dev.132

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- export declare const PPT_CREATE_ENHANCEMENT_PROMPT = "You are an elite presentation design consultant specializing in modern HTML/CSS slide design.\n\nEach slide will be rendered as a standalone HTML page (1920\u00D71080px) using ONLY CSS \u2014 no images, no external resources.\nYour job: design a cohesive visual system and detailed content plan that produces beautiful HTML slides.\n\nOUTPUT FORMAT (structured text, max 1000 words):\n\n1. DOCUMENT_TYPE: pitch deck / business report / training / product launch / general\n2. AUDIENCE: Target audience description\n3. MOOD: modern-minimal / bold-energetic / corporate-elegant / warm-friendly / academic-clean\n\n4. COLOR PALETTE (6 hex values \u2014 choose colors that match the topic and mood):\n - primary: Deep main color for headers and key elements (e.g., #1B2A4A for corporate, #6C63FF for tech)\n - accent: Vibrant contrast color for highlights and CTAs (e.g., #00D4AA, #FF6B35)\n - background: Page background \u2014 near white (#F8F9FA) or near black (#0D1117) or subtle tint\n - text: Main text color \u2014 dark (#1A1A2E) for light bg, light (#E8E8E8) for dark bg\n - accent_light: Light tint of accent for subtle backgrounds (e.g., #E8F5F0)\n - gradient_end: Secondary gradient color paired with primary (e.g., #2D5F8A)\n\n5. FONTS: title_font, body_font (system only: Segoe UI, Malgun Gothic, Arial, Calibri, Georgia)\n6. SLIDE PLAN: 10-15 slides, each with:\n - Slide number and type (title / content / data / comparison / process / highlight / table / closing)\n - Title in user's language\n - Specific content direction (what data, text, visuals to include)\n - CSS layout approach (e.g., \"flexbox 3-column card grid with box-shadow\", \"CSS grid 2\u00D72 with gradient headers\", \"conic-gradient donut chart + metric cards\", \"CSS bar chart using flex-end alignment\")\n7. DESIGN NOTES: Overall HTML/CSS approach \u2014 gradients (linear-gradient, radial-gradient), box-shadows, border-radius, flexbox/grid layouts, CSS shapes, pseudo-elements for decoration\n\nKEY PRINCIPLES FOR HTML SLIDES:\n- Each slide is a full 1920\u00D71080px HTML page \u2014 use the ENTIRE space (flex:1 to stretch content)\n- CSS-only visuals: gradients, box-shadow, border-radius, conic-gradient for pie/donut charts\n- MAXIMUM 3 cards or data items per slide \u2014 whitespace is premium\n- Vary layouts across slides: don't repeat the same card grid. Mix cards, tables, big-number spotlights, split layouts, gradient headers\n- NO images, NO external fonts, NO JavaScript\n\nLANGUAGE RULE: ALL slide titles and content MUST be in the SAME language as the user's instruction.\nKorean input \u2192 Korean output. English slogans for Korean input = FAILURE.\n\nOutput structured text only. No preamble.";
1
+ export declare const PPT_CREATE_ENHANCEMENT_PROMPT = "You are an elite presentation design consultant specializing in modern HTML/CSS slide design.\n\nEach slide will be rendered as a standalone HTML page (1920\u00D71080px) using ONLY CSS \u2014 no images, no external resources.\nYour job: design a cohesive visual system and detailed content plan that produces beautiful HTML slides.\n\nOUTPUT FORMAT (structured text, max 1000 words):\n\n1. DOCUMENT_TYPE: pitch deck / business report / training / product launch / general\n2. AUDIENCE: Target audience description\n3. MOOD: modern-minimal / bold-energetic / corporate-elegant / warm-friendly / academic-clean\n\n4. COLOR PALETTE (6 hex values \u2014 choose colors that match the topic and mood):\n - primary: Deep main color for headers and key elements (e.g., #1B2A4A for corporate, #6C63FF for tech)\n - accent: Vibrant contrast color for highlights and CTAs (e.g., #00D4AA, #FF6B35)\n - background: Page background \u2014 near white (#F8F9FA) or near black (#0D1117) or subtle tint\n - text: Main text color \u2014 dark (#1A1A2E) for light bg, light (#E8E8E8) for dark bg\n - accent_light: Light tint of accent for subtle backgrounds (e.g., #E8F5F0)\n - gradient_end: Secondary gradient color paired with primary (e.g., #2D5F8A)\n\n5. FONTS: title_font, body_font (system only: Segoe UI, Malgun Gothic, Arial, Calibri, Georgia)\n6. SLIDE PLAN: 10-15 slides, each with:\n - Slide number and type (title / content / data / comparison / process / highlight / table / closing)\n - Title in user's language\n - Specific content direction (what data, text, visuals to include)\n - CSS layout approach (e.g., \"flexbox 3-column card grid with box-shadow\", \"CSS grid 2\u00D72 with gradient headers\", \"conic-gradient donut chart + metric cards\", \"CSS bar chart using flex-end alignment\")\n7. DESIGN NOTES: Overall HTML/CSS approach \u2014 gradients (linear-gradient, radial-gradient), box-shadows, border-radius, flexbox/grid layouts, CSS shapes, pseudo-elements for decoration\n\nKEY PRINCIPLES FOR HTML SLIDES:\n- Each slide is a full 1920\u00D71080px HTML page \u2014 use the ENTIRE space (flex:1 to stretch content)\n- CSS-only visuals: gradients, box-shadow, border-radius, conic-gradient for pie/donut charts\n- MAXIMUM 4 items per slide (2\u00D72 grid preferred)\n- NO images, NO external fonts, NO JavaScript\n\nVISUAL DIVERSITY IS CRITICAL \u2014 a presentation with only text cards is BORING:\n- For DATA: specify CSS bar charts (vertical bars using flex-end + height%), donut charts (conic-gradient), progress bars, horizontal bars\n- For COMPARISON: styled tables with colored headers, side-by-side columns\n- For PROCESS/FLOW: horizontal step boxes with arrow connectors (\u2192), numbered phases, timeline layouts\n- For METRICS: big number spotlights (72-96px font), KPI dashboards with trend arrows (\u25B2\u25BC)\n- For MIXED: left column text + right column chart, or top chart + bottom summary cards\n- In a 10-12 slide deck, plan at least: 2 chart/data viz slides, 1-2 table slides, 1-2 flow/process slides, 2-3 card slides, 1-2 metric spotlight slides\n- NEVER plan all slides as \"card grid\" \u2014 that makes every slide look identical\n\nLANGUAGE RULE: ALL slide titles and content MUST be in the SAME language as the user's instruction.\nKorean input \u2192 Korean output. English slogans for Korean input = FAILURE.\n\nOutput structured text only. No preamble.";
2
2
  export declare const PPT_STRUCTURED_PLANNING_PROMPT: string;
3
3
  export interface DesignSystem {
4
4
  primary_color: string;
@@ -1 +1 @@
1
- {"version":3,"file":"powerpoint-create-prompts.d.ts","sourceRoot":"","sources":["../../../src/agents/office/powerpoint-create-prompts.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,6BAA6B,qqFAqCA,CAAC;AAM3C,eAAO,MAAM,8BAA8B,QA8KmC,CAAC;AAM/E,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,GAAG,IAAI,GACpB,MAAM,CAyKR;AAMD,eAAO,MAAM,wBAAwB,2pDA6BmC,CAAC;AAEzE,eAAO,MAAM,0BAA0B,wlBAaqB,CAAC;AAG7D,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,IAAI,GAAG,IAAI,GACpB,MAAM,CAqBR"}
1
+ {"version":3,"file":"powerpoint-create-prompts.d.ts","sourceRoot":"","sources":["../../../src/agents/office/powerpoint-create-prompts.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,6BAA6B,q1GA6CA,CAAC;AAM3C,eAAO,MAAM,8BAA8B,QAsLmC,CAAC;AAM/E,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,GAAG,IAAI,GACpB,MAAM,CAyLR;AAMD,eAAO,MAAM,wBAAwB,2pDA6BmC,CAAC;AAEzE,eAAO,MAAM,0BAA0B,wlBAaqB,CAAC;AAG7D,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,IAAI,GAAG,IAAI,GACpB,MAAM,CAqBR"}
@@ -28,10 +28,18 @@ OUTPUT FORMAT (structured text, max 1000 words):
28
28
  KEY PRINCIPLES FOR HTML SLIDES:
29
29
  - Each slide is a full 1920×1080px HTML page — use the ENTIRE space (flex:1 to stretch content)
30
30
  - CSS-only visuals: gradients, box-shadow, border-radius, conic-gradient for pie/donut charts
31
- - MAXIMUM 3 cards or data items per slide whitespace is premium
32
- - Vary layouts across slides: don't repeat the same card grid. Mix cards, tables, big-number spotlights, split layouts, gradient headers
31
+ - MAXIMUM 4 items per slide (2×2 grid preferred)
33
32
  - NO images, NO external fonts, NO JavaScript
34
33
 
34
+ VISUAL DIVERSITY IS CRITICAL — a presentation with only text cards is BORING:
35
+ - For DATA: specify CSS bar charts (vertical bars using flex-end + height%), donut charts (conic-gradient), progress bars, horizontal bars
36
+ - For COMPARISON: styled tables with colored headers, side-by-side columns
37
+ - For PROCESS/FLOW: horizontal step boxes with arrow connectors (→), numbered phases, timeline layouts
38
+ - For METRICS: big number spotlights (72-96px font), KPI dashboards with trend arrows (▲▼)
39
+ - For MIXED: left column text + right column chart, or top chart + bottom summary cards
40
+ - In a 10-12 slide deck, plan at least: 2 chart/data viz slides, 1-2 table slides, 1-2 flow/process slides, 2-3 card slides, 1-2 metric spotlight slides
41
+ - NEVER plan all slides as "card grid" — that makes every slide look identical
42
+
35
43
  LANGUAGE RULE: ALL slide titles and content MUST be in the SAME language as the user's instruction.
36
44
  Korean input → Korean output. English slogans for Korean input = FAILURE.
37
45
 
@@ -116,11 +124,13 @@ GENERAL (발표/프레젠테이션): 10 slides
116
124
  If a topic needs 2 visual elements, SPLIT IT INTO 2 SLIDES.
117
125
 
118
126
  GOOD content_direction (ONE visual each):
119
- ✓ "3-column card grid: (1) 이미지 분석 - 의료 영상 정밀 분석, (2) 패턴 인식 - 질병 조기 발견, (3) 예측 분석 - 발생 확률 예측"
120
- ✓ "Comparison table: 4 rows (MediAI, CompA, CompB, CompC) × 3 columns (정확도, 속도, 데이터량). Highlight MediAI row."
121
- ✓ "3 big metric numbers: $45B 시장 규모, 28% 연평균 성장률, 5% 1년 내 점유율 목표"
122
- ✓ "Bar chart showing revenue growth: 2025 $1.2M2026 $3.6M2027 $10.8M"
123
- ✓ "Pricing table: 3 rows (Basic/Pro/Enterprise) × 4 columns (플랜, 대상, 월 가격, 기능)"
127
+ ✓ "총매출 1,250억원(전년비 15%↑), 영업이익 180억원(14.4%), 순이익 120억원. Layout: bar chart"
128
+ ✓ "Comparison table: 4 rows (MediAI, CompA, CompB, CompC) × 3 columns (정확도, 속도, 데이터량). Highlight MediAI row. Layout: comparison table"
129
+ ✓ "$45B 시장 규모, 28% 연평균 성장률, 5% 1년 내 점유율 목표. Layout: big numbers"
130
+ ✓ "데이터 수집 전처리 AI 분석결과 리포트의사 확인. 각 단계별 소요시간 표시. Layout: process flow"
131
+ ✓ "매출 구성: 구독형 45%, 라이선스 30%, 컨설팅 25%. Layout: donut chart"
132
+ ✓ "3 core services: (1) 클라우드 인프라, (2) AI 솔루션, (3) 컨설팅. Layout: 2×2 grid"
133
+ ✓ "목표 달성률: 매출 92%, 고객 확보 87%, 시장점유율 73%, 만족도 95%. Layout: progress bars"
124
134
 
125
135
  BAD content_direction (MULTIPLE visuals = OVERFLOW):
126
136
  ✗ "테이블로 수익 모델 + 수익 그래프 + 파트너십 + 라이선싱" ← 4 sections!
@@ -174,17 +184,23 @@ BAD content_direction (MULTIPLE visuals = OVERFLOW):
174
184
  • content_direction: Same company/topic name as title slide
175
185
  • Do NOT include visual/layout instructions — closing uses a fixed premium template
176
186
 
177
- ═══ LAYOUT VARIETY — MANDATORY ═══
187
+ ═══ LAYOUT VARIETY + VISUAL TYPE — MANDATORY ═══
178
188
  ⚠⚠⚠ You MUST vary the visual approach. No more than 2 slides with the same layout hint.
179
- Available layouts (use at least 4 different types across the presentation):
180
- - "3 cards" (MAX 2 slides): 3-column card grid
181
- - "2-column split": left panel + right content (or vice versa)
182
- - "big numbers": 2-3 large metric spotlights
183
- - "comparison table": table with 3-4 rows
184
- - "timeline": 3-4 milestone steps horizontal
185
- - "2×2 grid": 4 items in 2 rows × 2 columns
186
- - "hero stat": one large central metric with supporting text
187
- If your plan has 3+ slides all using "3 cards" layout, REWRITE those slides to use different layouts.
189
+ Available layouts (use at least 5 different types across the presentation):
190
+ - "2×2 grid": 4 cards in 2 rows × 2 columns (MAX 2 slides)
191
+ - "bar chart": CSS vertical/horizontal bars showing data trends or comparisons
192
+ - "donut chart": conic-gradient pie/donut with metric labels
193
+ - "comparison table": styled table with 3-4 rows, colored headers
194
+ - "process flow": horizontal step boxes connected by arrows (→), numbered phases
195
+ - "big numbers": 2-3 large metric spotlights (72-96px) with trend indicators (▲▼)
196
+ - "2-column split": left panel + right content (chart + text, or metric + details)
197
+ - "timeline": 3-4 milestone steps horizontal with dates
198
+ - "progress bars": horizontal bars showing completion/comparison percentages
199
+ - "hero stat": one large central metric with supporting context
200
+ ⚠ Each content_direction MUST end with a "Layout:" hint specifying the visual type.
201
+ ⚠ If your plan has 3+ slides all using "cards/grid" layout, REWRITE to use charts, tables, flows instead.
202
+ ⚠ A 10-slide deck MUST have: at least 2 chart/data-viz slides, at least 1 table slide, at least 1 process/flow slide.
203
+ ⚠ NEVER plan a presentation where every slide is cards — that is LAZY and BORING.
188
204
 
189
205
  ═══ COLOR PALETTE RULES ═══
190
206
  ⚠ NEVER use placeholder/example colors. EVERY presentation must have a UNIQUE palette:
@@ -296,24 +312,15 @@ MANDATORY STRUCTURE (body has EXACTLY 2 direct children):
296
312
  ⚠ .slide-title should include any accent bars/decorations AS PART OF the title section, not as separate body children.
297
313
  ⚠ .content MUST use flex:1 to stretch. NEVER use justify-content:center on .content — it creates dead space.
298
314
 
299
- CARDS USE 2×2 GRID (preferred, fills vertical space best):
315
+ ═══ CHOOSE LAYOUT FROM content_direction's "Layout:" HINT ═══
316
+ ⚠⚠⚠ The content_direction ends with "Layout: <type>". Use THAT type as the primary layout.
317
+ ⚠ Do NOT default to cards/grid for every slide — follow the Layout hint.
318
+
319
+ CARDS (use ONLY when Layout hint says "cards" or "grid"):
300
320
  .content { flex:1; display:grid; grid-template-columns:1fr 1fr; gap:24px; }
301
321
  .card { display:flex; flex-direction:column; justify-content:flex-start; gap:16px; padding:32px 28px; border-radius:16px; background:#fff; box-shadow:0 4px 20px rgba(0,0,0,0.06); }
302
- ⚠ Default to 4 cards in a 2×2 grid. If only 3 topics exist, add a "Summary" or "Outlook" card for the 4th.
303
- ⚠ For 2 topics: use 2 wide cards (grid-template-columns:1fr 1fr; grid-template-rows:1fr).
304
- ⚠ For 3 topics: grid-template-columns:1fr 1fr; first card spans 2 columns (grid-column:1/3) for variety.
305
322
  ⚠ NEVER use justify-content:space-between on cards — use flex-start + gap.
306
-
307
- ═══ CARD CONTENT — FILL EACH CARD DENSELY ═══
308
- Each card MUST contain 5-6 of these items to fill the ~400px card height:
309
- 1. Card title (30-36px, bold, primary color)
310
- 2. Descriptive subtitle or intro line (26px, muted text color)
311
- 3. 3-5 bullet points with specific data/metrics (26px)
312
- 4. A short paragraph (2-3 sentences) explaining the key insight (26px)
313
- 5. Bottom highlight: metric badge, accent stat, or trend indicator
314
- ⚠ Cards with only 2-3 items look EMPTY. Always include at least: title + 3 bullets + 1 paragraph + 1 stat.
315
- ⚠ Each bullet: MAX 25 characters (Korean) or 50 characters (English). Longer text wraps badly.
316
- ⚠ Gap:16px between items. Padding:32px. Total card content should reach ~380-420px naturally.
323
+ ⚠ Each card: title + 3-5 bullets + 1 stat. Keep content dense but readable.
317
324
 
318
325
  TABLES: .content { flex:1; display:flex; flex-direction:column; }
319
326
  table { width:100%; } th { padding:20px 24px; background:${design.primary_color}; color:#fff; }
@@ -333,10 +340,25 @@ BAR CHARTS: .content { flex:1; display:flex; flex-direction:column; }
333
340
  Each bar: flex:1, label ABOVE the bar (never beside it). Min label width: 120px.
334
341
  ⚠ Bar labels: use min-width:120px and text-align:center to prevent character-by-character wrapping.
335
342
 
343
+ DONUT/PIE CHARTS: .content { flex:1; display:grid; grid-template-columns:1fr 1fr; gap:40px; align-items:center; }
344
+ Left: donut div (width:400px; height:400px; border-radius:50%; background:conic-gradient(color1 0% X%, color2 X% Y%, ...); position:relative;)
345
+ Inner circle for donut hole: pseudo-element or inner div (width:200px; height:200px; border-radius:50%; background:white; centered with margin:auto)
346
+ Right: legend with colored dots + labels + percentages. Each item: display:flex; align-items:center; gap:12px; margin-bottom:16px;
347
+
348
+ PROCESS FLOW: .content { flex:1; display:flex; align-items:stretch; gap:0; }
349
+ Each step: flex:1; display:flex; flex-direction:column; justify-content:center; align-items:center; padding:24px; background:accent_light; border-radius:12px;
350
+ Between steps: arrow div (width:60px; display:flex; align-items:center; justify-content:center; font-size:36px; color:accent) containing "→"
351
+ ⚠ Use real → characters or CSS borders for arrows. NEVER use position:absolute for arrows.
352
+
353
+ PROGRESS BARS: .content { flex:1; display:flex; flex-direction:column; justify-content:center; gap:32px; }
354
+ Each item: label (font-size:28px; margin-bottom:8px;) + bar container (width:100%; height:40px; background:#eee; border-radius:20px; overflow:hidden;)
355
+ Inner bar: height:100%; width:X%; background:linear-gradient(90deg, primary, accent); border-radius:20px;
356
+ Percentage label at right end of bar or after the bar container.
357
+
336
358
  ═══ DESIGN RULES ═══
337
359
  1. Title: 48-64px bold. Body: 26-32px. MINIMUM any visible text: 26px. NEVER use font-size below 26px for any text element. If content doesn't fit at 26px, REDUCE ITEM COUNT instead of shrinking text. Card descriptions: 26-30px. Card titles: 32-40px. Labels/captions: 26px minimum. body { font-size: 26px; } is MANDATORY.
338
360
  2. Use gradients, box-shadow (0 4px 20px rgba(0,0,0,0.06)), border-radius (12-20px)
339
- 3. ONE visual approach per slide — cards OR table OR chart OR metrics. Never combine 2+.
361
+ 3. MIX visual types across slides for variety use cards, tables, bar charts (CSS), donut charts (conic-gradient), process flows, comparison layouts, and big number metrics. Avoid using the same type (e.g., cards) on consecutive slides.
340
362
  4. HARD LIMITS: MAX 4 cards (2×2 grid), MAX 2 cards per row, MAX 4 table rows, MAX 4 timeline steps.
341
363
  ⚠ If content_direction lists 5+ items, group them into 4 cards (combine related items).
342
364
  5. ⚠⚠⚠ NEVER use position:absolute. ALL layout MUST use flexbox/grid. position:absolute is STRIPPED by the renderer.
@@ -344,8 +366,8 @@ BAR CHARTS: .content { flex:1; display:flex; flex-direction:column; }
344
366
  7. ⚠ MAXIMUM 4 columns in any grid layout. 5+ columns = text too small. Use 2-3 columns + 2 rows instead.
345
367
  8. PIE/DONUT: conic-gradient on border-radius:50% div ONLY. No clip-path or rotated divs.
346
368
  9. Bar chart labels: min-width:120px, text-align:center. Never let labels wrap per-character.
347
- 10. ⚠ NO LINE CHARTS in CSS — lines/dots never align correctly. Use bar charts or big number cards instead.
348
- 11. For financial/revenue slides: use 3 big metric cards (year→amount) instead of charts. Charts in CSS look broken.
369
+ 10. ⚠ NO LINE CHARTS in CSS — lines/dots never align correctly. Use bar charts (flex-end alignment) or donut charts (conic-gradient) instead.
370
+ 11. CSS CHARTS THAT WORK: vertical bar charts (flex-end + height%), horizontal bar charts (width%), donut/pie charts (conic-gradient + border-radius:50%), progress bars (width%). Use these liberally for data visualization.
349
371
  12. Table headers: dark background (${design.primary_color}) with WHITE text. Never transparent.
350
372
 
351
373
  ═══ SPACE UTILIZATION — NO DEAD ZONES ═══
@@ -357,6 +379,16 @@ BAR CHARTS: .content { flex:1; display:flex; flex-direction:column; }
357
379
  ⚠ NEVER use justify-content:space-between on individual cards — it creates huge gaps between sparse items. Use flex-start + gap instead.
358
380
  ⚠ Cards in a row: parent uses align-items:stretch (default) so cards fill the full height.
359
381
 
382
+ ═══ VISUAL DIVERSITY — MANDATORY ═══
383
+ ⚠ Do NOT make every slide look the same! Use DIFFERENT visual types across the presentation:
384
+ - DATA SLIDES: CSS bar charts (vertical/horizontal), donut charts (conic-gradient), progress bars
385
+ - COMPARISON: Side-by-side columns, before/after layouts, styled tables
386
+ - PROCESS/FLOW: Horizontal step boxes connected by CSS arrows (→ or border-based), numbered phases
387
+ - METRICS: Big number cards with trend indicators (▲▼), KPI dashboards
388
+ - TEXT+VISUAL: Left column text + right column chart/graphic, or top chart + bottom cards
389
+ ⚠ In a 12-slide deck, aim for: 2-3 chart slides, 2-3 card slides, 1-2 table slides, 1-2 process/flow slides, 1-2 mixed layouts.
390
+ ⚠ NEVER use only cards for the entire presentation.
391
+
360
392
  ═══ TABLE COMPLETENESS — MANDATORY ═══
361
393
  ⚠ If you create a table, EVERY cell MUST contain real data. Empty cells = FAILURE.
362
394
  ⚠ For comparison tables: fill ALL columns for ALL competitors/items with realistic data.
@@ -367,9 +399,9 @@ BAR CHARTS: .content { flex:1; display:flex; flex-direction:column; }
367
399
  • ${langRule}
368
400
  • Korean text only — never Chinese characters (漢字), Japanese, or other scripts
369
401
  • Generate REAL, specific content — no placeholders
370
- ⚠⚠⚠ LESS IS MOREgenerous spacing, large padding, clean visual hierarchy. Every word must earn its space.
402
+ BALANCE density and readabilityfill 80-90% of the slide area with meaningful content. Avoid both sparse slides and overloaded slides.
371
403
  • If the user specifies a year in their request, USE THAT YEAR faithfully. Only default to ${new Date().getFullYear()} for content with no explicit year.
372
- • ALL content MUST fit within 1080px height. If in doubt, use FEWER items. 3 cards > 4 cards. 3 rows > 4 rows.
404
+ • ALL content MUST fit within 1080px height. Use compact padding (20-28px) and moderate font sizes (24-30px body) to fit more content.
373
405
  • body MUST set font-size: 26px as the base. All text inherits at least 26px unless explicitly larger.
374
406
 
375
407
  ═══ PAGE NUMBER ═══
@@ -1 +1 @@
1
- {"version":3,"file":"powerpoint-create-prompts.js","sourceRoot":"","sources":["../../../src/agents/office/powerpoint-create-prompts.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CAqCH,CAAC;AAM3C,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAmD5B,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,mFAAmF,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8EA2HvE,CAAC;AAuB/E,MAAM,UAAU,oBAAoB,CAClC,UAAkB,EAClB,gBAAwB,EACxB,MAAoB,EACpB,UAAkB,EAClB,WAAmB,EACnB,QAAqB;IAErB,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI;QAChC,CAAC,CAAC,gEAAgE;QAClE,CAAC,CAAC,sCAAsC,CAAC;IAG3C,MAAM,aAAa,GAAG;QACpB,aAAa;QACb,cAAc;QACd,kBAAkB;QAClB,iBAAiB;QACjB,eAAe;KACP,CAAC;IACX,MAAM,YAAY,GAAG,aAAa,CAAC,UAAU,GAAG,aAAa,CAAC,MAAM,CAAE,CAAC;IAEvE,MAAM,UAAU,GAA2B;QACzC,aAAa,EAAE,OAAO,MAAM,CAAC,gBAAgB,qHAAqH;QAClK,cAAc,EAAE,iFAAiF,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,YAAY,+GAA+G,MAAM,CAAC,gBAAgB,8HAA8H;QACjZ,kBAAkB,EAAE,gGAAgG,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,YAAY,yFAAyF,MAAM,CAAC,gBAAgB,uJAAuJ;QACva,iBAAiB,EAAE,oFAAoF,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,aAAa,qHAAqH,MAAM,CAAC,gBAAgB,qFAAqF;QACpX,eAAe,EAAE,wEAAwE,MAAM,CAAC,gBAAgB,QAAQ,MAAM,CAAC,YAAY,SAAS,MAAM,CAAC,gBAAgB,uFAAuF;KACnQ,CAAC;IAEF,OAAO;;;;UAIC,UAAU;QACZ,UAAU,GAAG,CAAC,OAAO,WAAW;;;EAGtC,gBAAgB;;;;;;;;WAQP,MAAM,CAAC,aAAa,cAAc,MAAM,CAAC,YAAY,kBAAkB,MAAM,CAAC,gBAAgB;QACjG,MAAM,CAAC,UAAU,oBAAoB,MAAM,CAAC,YAAY,oBAAoB,MAAM,CAAC,YAAY;cACzF,MAAM,CAAC,UAAU,iBAAiB,MAAM,CAAC,SAAS;QACxD,MAAM,CAAC,IAAI,aAAa,MAAM,CAAC,YAAY;;;EAGjD,UAAU,CAAC,YAAY,CAAC;;;;;;;;;kBASR,MAAM,CAAC,SAAS,OAAO,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6DAuDG,MAAM,CAAC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCA8B3C,MAAM,CAAC,aAAa;;;;;;;;;;;;;;;;;;IAkBtD,QAAQ;;;;6FAIiF,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;;iBAKpG,UAAU,GAAG,CAAC;;wFAEyD,CAAC;AACzF,CAAC;AAMD,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wEA6BgC,CAAC;AAEzE,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;4DAakB,CAAC;AAG7D,MAAM,UAAU,sBAAsB,CACpC,QAAgB,EAChB,KAAa,EACb,SAAiB,EACjB,QAAgB,EAChB,QAAqB;IAErB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAAE,OAAO,EAAE,CAAC;IAEzD,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI;QAChC,CAAC,CAAC,6BAA6B;QAC/B,CAAC,CAAC,8BAA8B,CAAC;IAEnC,OAAO,2BAA2B,KAAK;;;;EAIvC,SAAS;;;EAGT,QAAQ;;;IAGN,QAAQ;;;0DAG8C,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"powerpoint-create-prompts.js","sourceRoot":"","sources":["../../../src/agents/office/powerpoint-create-prompts.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export declare const PROJECTS_DIR: string;
7
7
  export declare const CREDENTIALS_FILE_PATH: string;
8
8
  export declare const APP_NAME = "hanseol-dev";
9
9
  export declare const SERVICE_ID = "hanseol";
10
- export declare const APP_VERSION = "5.0.2-dev.130";
10
+ export declare const APP_VERSION = "5.0.2-dev.132";
11
11
  export declare const DASHBOARD_URL = "https://52.78.246.50.nip.io";
12
12
  export declare const ONCE_URL = "https://52.78.246.50.nip.io:5090";
13
13
  export declare const FREE_URL = "https://52.78.246.50.nip.io:6090";
package/dist/constants.js CHANGED
@@ -9,7 +9,7 @@ export const PROJECTS_DIR = path.join(LOCAL_HOME_DIR, 'projects');
9
9
  export const CREDENTIALS_FILE_PATH = path.join(LOCAL_HOME_DIR, 'credentials.json');
10
10
  export const APP_NAME = 'hanseol-dev';
11
11
  export const SERVICE_ID = 'hanseol';
12
- export const APP_VERSION = '5.0.2-dev.130';
12
+ export const APP_VERSION = '5.0.2-dev.132';
13
13
  export const DASHBOARD_URL = 'https://52.78.246.50.nip.io';
14
14
  export const ONCE_URL = 'https://52.78.246.50.nip.io:5090';
15
15
  export const FREE_URL = 'https://52.78.246.50.nip.io:6090';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hanseol-dev",
3
- "version": "5.0.2-dev.130",
3
+ "version": "5.0.2-dev.132",
4
4
  "description": "Hanseol - OpenAI-Compatible Coding Agent",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",