# Kingdee Ppt

> 将内容转化为金蝶官方风格的完整幻灯片文件（.pptx 或 .html）。当用户说「做PPT」「做个PPT」「做汇报材料」「做演示文稿」「生成deck」「生成幻灯片」「整理成幻灯片」「按金蝶模板整理」「make a presentation」「create a slide deck」「output slides」「HTML幻灯片」「交互式演示」「网页版PPT」「web slides」，或上传 .pptx/.docx 要求转化/重排为金蝶风格时，必须使用此Skill。只要涉及PPT、幻灯片、汇报材料、演讲稿输出（PPTX或HTML格式），就应触发。

- Skill: `waynezhon/kingdee-ppt` (Agent Skill, multi-file: 31 files)
- Install (CLI): `npx skillmds@latest add waynezhon/kingdee-ppt`
- Raw SKILL.md: https://api.skillmd.com/api/skills/waynezhon/kingdee-ppt/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: waynezhon (https://skillmd.com/u/waynezhon)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/waynezhon/kingdee-ppt

---


## Preamble (run first)

```bash
_KD_CHECK="kingdee-ppt-update-check"
if ! command -v kingdee-ppt-update-check &>/dev/null; then
  _KD_CHECK="$(npm root -g)/kingdee-ppt/bin/kingdee-ppt-update-check"
fi
_UPD=$("$_KD_CHECK" 2>/dev/null || true)
[ -n "$_UPD" ] && echo "$_UPD" || true
```

If output shows `UPGRADE_AVAILABLE <old> <new>`: inform user "kingdee-ppt **v{new}** is available (you're on v{old}). Run `kingdee-ppt-upgrade` to update." Do NOT auto-upgrade unless user explicitly confirms. Continue with current workflow.

# 金蝶 PPT/HTML 幻灯片生成 Skill v7.2

基于官方金蝶集团 2026 版 PPT 模板，支持 **HTML 交互式演示** 与 **PPTX 可编辑文件** 两种输出。默认先构建 HTML deck，再根据用户选择的输出格式交付或导出。官方背景图和 Logo 内嵌，零配置可用。
> v7.2：新增 HTML 编辑模式 — 右上角开关 + 点击任意文字直接修改 + 一键保存 HTML/PPTX 导出
>       所有组件（stat-card/callout/pillar-card/step-card）自动支持 contenteditable
> v7.1：新增 Bento Motion 风格变体 — Tailwind v4 + GSAP ScrollTrigger，纯白底 + Apple 滚动动效，可选风格切换
>       风格对比：Classic（传统PPT）vs Bento Motion（科技发布）
> v7.0：HTML-first 架构 — 融合 huashu-design 最佳实践，HTML 是第一公民，PPTX 是可选导出
>       新增：html2pptx.js + export_deck_pptx.mjs → 真文本框可编辑 PPTX 导出
>       新增：设计方向顾问（模糊需求时推荐 3 个风格选项）
>       新增：Anti AI-slop 规则（禁紫渐变/emoji图标/Inter字体）
> v6.0：HTML 原子组件系统 — 借鉴 open-design，放弃固定版式编号，采用组件+网格自由组合模式
> v5.0：HTML 输出模式 → 交互式网页幻灯片，键盘导航、触摸滑动、动画效果

---

## HTML 风格选择（v7.1 新增）

**双风格体系**：Classic（默认）与 Bento Motion（可选）

| 维度 | Classic（默认）| Bento Motion（科技感）|
|------|---------------|---------------------|
| **背景** | 冰蓝底/渐变封面 | 纯白 `#FFFFFF` |
| **网格** | 12 份比例系统 | Bento Grid span（1/2/4 列）|
| **字号对比** | 标题 18-28pt / 正文 16pt | Hero 数字 80-160pt / 正文 14pt |
| **动效** | Intersection Observer fade | GSAP ScrollTrigger（Apple 式）|
| **中英文** | 中文为主 | 中文大字粗体 + 英文小字点缀 |
| **图形** | 复杂 SVG/图表 | 勾线简洁图形 |
| **CDN** | 无外部依赖 | Tailwind v4 + GSAP + Font Awesome |
| **PPTX 导出** | **支持**（html2pptx.js）| **不支持**（走 PDF）|
| **适用场景** | 正式汇报、领导层、政府客户 | 产品发布、科技受众、创新展示 |

**触发词**：
- 用户说「Bento风格」「Apple动效」「科技感」「现代感」→ **Bento Motion**
- 内容是科技产品/AI/SaaS/开发者工具 → **推荐 Bento Motion**
- 默认 → **Classic**

---

## 文件读取顺序（v5.1 新增）

```
Phase 0 开始前必须按顺序读取以下文件：

1. design-tokens.md    → 设计变量常量（COLORS/COLOR_SEQ/RADIUS/SHADOWS/SPACING/FONT）
2. layout-schema.md    → 版式参数命名规范（bgColor/textColor 统一命名）
3. rhythm-templates.md → 节奏模板（页面组合预设 + 场景匹配）
4. style-guide.md      → 视觉规范（品牌色/字体/间距）
5. layout-base.md      → 通用辅助函数（loadAsset/addLogo/addFooter/addContentTitle/bentoCard）
6. layout-fixed.md     → 固定版式（封面/目录/章节/结尾：版式01-03,10）
7. layout-content.md   → 内容版式（要点/数据/对比/流程/图文/时间轴：版式04-09）
8. layout-advanced.md  → 高级版式（数据看板/Bento/架构/特性/矩阵/金句/沉浸/焦点：版式11-18）
9. layout-models.md    → 思维模型版式（金字塔/PDCA/SWOT/黄金圈/5W1H/SCQA/IPD：版式19-25）
10. layout-special.md  → 特殊版式（图标行/半出血/悬浮统计/对比栏：版式26-29 + 速查表）
11. pptx-builder.md    → 构建流程规范（资源加载/QA清单）

⚠️ design-tokens.md 和 layout-schema.md 是新增文件，必须最先读取。
⚠️ COLOR_SEQ/阴影工厂定义已迁移至 design-tokens.md，禁止在其他文件重复定义。
⚠️ layout-presets.md 已拆分为 6 个子文件（layout-base/fixed/content/advanced/models/special），按需读取。
```

---

## HTML-first 工作流（v7.0）

> **核心理念**：HTML 是第一公民，PPTX 是可选导出。先做能浏览器演讲的 HTML deck，再根据需要导出可编辑 PPTX。

```
──────────────────────────────────────────────────
  统一流程（Phase F → 0 → 1 → 2 → H → X）
──────────────────────────────────────────────────

Phase F：输出格式选择（⚠️ 用户未明确指定格式时触发）
  F.1 → 使用 AskUserQuestion 询问输出格式：
         · HTML 交互式演示 — 浏览器演讲、支持动画、可部署 Vercel、可导出 PDF
         · PPTX 可编辑文件 — 传统 PowerPoint、可二次编辑、离线演示
  F.2 → 若选 HTML → 记住 OUTPUT_FORMAT=html，进入 Phase 0
  F.3 → 若选 PPTX → 记住 OUTPUT_FORMAT=pptx，进入 Phase 0
         后续 Phase H 须严格遵守 html2pptx.js 4 条硬约束，完成后自动进入 Phase X
  F.4 → 用户已明确说「HTML」「网页版」「PPTX」「可编辑PPT」「PowerPoint」→ 跳过此阶段，直接赋值 OUTPUT_FORMAT

Phase 0：内容结构分析（核心引擎）
  0.1 → 读取用户内容（文字/大纲/文档）
  0.2 → 逐页分析内容特征（要点数量、层级关系、对比关系、数据图表）
  0.3 → 匹配思维模型信号（PDCA/SWOT/黄金圈等高置信信号）
  0.4 → 推荐最适合版式（每页单独分析，不套场景模板）
  0.5 → AI品牌Logo识别（如有AI品牌关键词）

Phase 0.5：设计方向顾问（⚠️ 仅当需求模糊时触发）
  0.5.1 → 若用户需求模糊（如"做个PPT介绍我们的产品"），触发顾问模式
  0.5.2 → 从 3 种金蝶风格方向推荐选项：
         · 风格 A：沉稳专业（深藏青 + 数据卡片 + 金字塔）
         · 风格 B：活力创新（品青渐变 + Bento Grid + 时间轴）
         · 风格 C：简洁克制（白底 + 要点列表 + 对比栏）
  0.5.3 → 用户选择后，进入 Phase 1

Phase 1：大纲+版式推荐
  1.1 → 输出大纲，每页标注推荐版式+推荐理由
  1.2 → 用户确认/调整版式 → 如需调整，标注新版式

Phase 2：内容脚本
  2.1 → 输出内容脚本（含排版指令）
  2.2 → 用户确认 → 进入 HTML 生成

Phase H：HTML 生成（v7.0 核心输出）
  ┌─ H.0 风格选择（新增 v7.1）
  │   ├─ 用户说「Bento风格」「Apple动效」「科技感」「现代感」→ 跳转 Phase H.Bento
  │   ├─ 内容是科技产品/AI/SaaS/开发者工具 → 推荐 Bento Motion，问用户确认
  │   └─ 默认 → Classic 风格（现有流程）
  │
  ┌─ Phase H.Classic（默认流程）
  │   H.0 → Read `html-kingdee-preflight.md` → 预检清单
  │   H.1 → Read `html-kingdee-template.md` → HTML 结构 + JS 功能
  │   H.2 → Read `html-kingdee-style.md` → CSS 品牌色 + 响应式
  │   H.3 → Read `html-kingdee-components.md` → 原子组件
  │   H.4 → Read `html-kingdee-grids.md` → 网格比例系统
  │   H.5 → Read `html-kingdee-typography.md` → 字体配对
  │   H.6 → Read `html-kingdee-presets.md` → CSS 版式预设（按需）
  │   H.7 → 生成多文件 HTML deck（index.html + slides/*.html）
  │         ⚠️ OUTPUT_FORMAT=pptx 时，必须严格遵守 html2pptx.js 4 条硬约束
  │         ⚠️ OUTPUT_FORMAT=html 时，可正常使用动画、渐变、背景图
  │   H.8 → 浏览器预览 → 用户确认
  │   H.9 → 若 OUTPUT_FORMAT=html → 交付 HTML
  │         若 OUTPUT_FORMAT=pptx → 进入 Phase X
  │
  └─ Phase H.Bento（Bento Motion 风格，v7.1 新增）
      H.B0 → Read `html-bento-template.md` → Tailwind v4 + GSAP CDN 骨架
      H.B1 → Read `html-bento-components.md` → Bento Grid 卡片 + 勾线图形
      H.B2 → Read `html-bento-presets.md` → 10 种 Bento 版式预设
      H.B3 → Read `html-bento-motion.md` → GSAP ScrollTrigger 动效库
      H.B4 → 生成单文件 HTML deck（全页滚动 + scroll-triggered 动效）
             ⚠️ Bento Motion 不支持 PPTX 导出（使用 CDN + Tailwind）
             ⚠️ 若 OUTPUT_FORMAT=pptx → 拒绝并建议改用 Classic 风格
      H.B5 → 浏览器预览 → 用户确认 → 交付 HTML

Phase X：PPTX 导出（⚠️ 仅当 OUTPUT_FORMAT=pptx 时执行）
  X.1 → 检查 HTML 是否已按 html2pptx.js 4 条硬约束生成
  X.2 → 若合规 → 执行 export_deck_pptx.mjs
  X.3 → 若未合规 → 列出具体错误项，建议修改 HTML 或改用 PDF
  X.4 → 输出 .pptx 文件 → 交付

──────────────────────────────────────────────────
  html2pptx.js 4 条硬约束（PPTX 导出必需）
──────────────────────────────────────────────────
1. body 固定 960pt × 540pt（匹配 LAYOUT_WIDE 13.333" × 7.5"）
2. 所有文字包在 <p>/<h1>-<h6>/<ul>/<ol> 里（禁止裸文本 div）
3. <p>/<h*> 标签自身不能有 background/border/shadow（放外层 div）
4. 不用 CSS gradient、不用 background-image（用 <img> 标签）

⚠️ 不遵守以上约束的 HTML 无法导出 PPTX，只能交付 HTML 或 PDF。
```

---

## Phase 0：内容结构分析引擎（版式匹配核心）

### 0.1 内容特征信号识别

**逐页/逐段分析以下信号，决定版式：**

| 内容特征 | 匹配版式 | 信号关键词/结构 |
|---------|---------|----------------|
| **单一核心结论 + 3个分论点** | 金字塔版式(19) | "结论先行"、"三大支柱"、1+N层级结构 |
| **4格循环结构** | PDCA版式(20) | 计划/执行/检查/改进、Plan/Do/Check/Act |
| **2×2矩阵对比** | SWOT版式(21) | 优势/劣势/机会/威胁、内外部维度对比 |
| **三层嵌套逻辑** | 黄金圈版式(22) | WHY/HOW/WHAT、核心使命→方法→产品 |
| **6要素均匀分布** | 5W1H版式(23) | Who/When/What/Where/Why/How ≥4项 |
| **4步因果链** | SCQA版式(24) | 场景→冲突→问题→解决 |
| **5列趋势分析** | IPD五看版式(25) | 看行业/看客户/看机会/看竞争/看自己 |
| **2-3个数据指标展示** | 数据卡片(05) | 百分比、增长率、数值对比 |
| **时间线/里程碑** | 时间轴(09) | Q1→Q2→Q3→Q4、里程碑、阶段推进 |
| **左右对比/方案对比** | 对比栏(29) | 方案A vs 方案B、优缺点对比 |
| **图标+要点列表** | 图标行(26) | 3-5个要点，每要点有图标对应 |
| **大数字+统计展示** | 悬浮统计(28) | 单个大数字强调、统计卡片组合 |
| **纯文字要点 ≤5条** | 要点列表(04) | 简洁要点列表，无特殊结构 |
| **架构图/层级关系** | 架构图(13) | 层级结构、模块关系、技术架构 |
| **单张大图+少量文字** | 半出血叠加(27) | 图片为主，文字叠加在图上 |

### 0.2 版式匹配优先级规则

```
优先级1：思维模型信号明确 → 直接使用模型版式（置信度高）
优先级2：数据/图表信号 → 数据卡片、统计版式
优先级3：对比/时间结构 → 对比栏、时间轴
优先级4：纯要点列表 → 要点列表版式（兜底）
```

**同一PPT版式多样性规则：**
- 相邻3页不得使用同一版式
- 纯文字要点页不得连续超过2页
- 每页至少包含一种视觉元素（图标、数字、色块、图片）

### 场景 → 默认结构偏好

| 场景 | 自动包含页面 | 首选版式组合 |
|------|------------|------------|
| 内部汇报 | 仅内容页 | 要点列表 + 数据卡片 + 时间轴 |
| 伙伴赋能 | 封面 + 内容 + 结尾 | 架构示意 + 流程图 + 对比页 |
| 客户大会 | 全结构（封面/目录/章节/内容/结尾） | 数据卡片 + 图文并排 + 章节页 + 思维模型 |
| 方案提案 | 封面 + 目录 + 内容 | 对比页 + 流程图 + 数据卡片 + PDCA/SWOT |

> ⚠️ 场景偏好作为**默认建议**，用户明确指定结构时按用户要求执行。

### 0.3 版式推荐输出格式

在大纲阶段输出每页推荐版式及理由：

```
第 05 页  推荐版式：[数据卡片05]  理由：包含3个百分比指标，适合卡片展示
第 07 页  推荐版式：[PDCA循环20] 理由：明确出现"计划→执行→检查→改进"四步结构
第 09 页  推荐版式：[对比栏29]   理由：方案A与方案B对比，左右对比布局最优
```

---

### 0.5 AI 品牌 Logo 识别（lobe-icons 自动嵌入）

> 在完成 Phase 0 内容结构分析后、进入 Phase 1 前，**扫描全文识别 AI 品牌/平台/模型关键词**，并在内容脚本阶段为对应页面标注 logo 嵌入指令。
>
> ⚠️ 映射表在 `references/ai-brand-logos.md`，仅当检测到 AI 品牌关键词时才读取该文件。

---

### 0.5.1 扫描触发条件

满足以下任意一条即触发扫描（并读取 `references/ai-brand-logos.md`）：

- 内容中出现 **AI 品牌名称**（如 DeepSeek、通义千问、华为云等）
- 内容中出现 **大模型/AI 平台描述**（如"接入 GPT-4"、"调用文心一言"、"基于 Claude"）
- 场景为「伙伴赋能」「客户大会」「方案提案」且内容涉及技术合作/生态展示

---

### 0.5.2 品牌识别映射表

> 📄 完整映射表见 `references/ai-brand-logos.md`，以下为常用示例：

| 常见品牌 | lobe-icons Slug | 彩色版 |
|---------|-----------------|--------|
| OpenAI / GPT | `openai` | 无 |
| Claude / Anthropic | `claude` | `claude-color` ✅ |
| DeepSeek | `deepseek` | `deepseek-color` ✅ |
| 华为云 / 盘古 | `huaweicloud` | `huaweicloud-color` ✅ |
| 阿里云 / 通义 | `alibabacloud` | `alibabacloud-color` ✅ |
| 文心一言 / 百度 | `wenxin` | `wenxin-color` ✅ |
| MCP 协议 | `mcp` | 无 |

> **CDN 地址**：npmmirror（首选）`https://registry.npmmirror.com/@lobehub/icons-static-svg/latest/files/icons/{slug}.svg`

---

### 0.5.3 识别结果输出（在大纲阶段标注）

在大纲每页末尾新增 `[logo: slug1, slug2]` 标注：

```
第 05 页  [内容-Bento卡片]  AI生态合作伙伴  [logo: huawei, alibaba, bytedance]
第 07 页  [内容-要点列表]   多模型接入方案  [logo: openai, claude, deepseek]
第 09 页  [内容-对比页]     模型能力对比    [logo: qwen, wenxin]
```

---

### 0.5.4 Logo 排版规则

| 场景 | 排版方式 | 尺寸 |
|------|---------|------|
| Bento 卡片页（每张卡片对应一个品牌） | 卡片左上角 logo 图标 + 右侧文字 | 0.45" × 0.45" |
| 合作伙伴展示页（横排 logo 墙） | 底部横排均匀分布，灰色浅底衬托 | 0.5" × 0.5" |
| 要点列表页（行首品牌标识） | 行首 logo 替代项目符号 | 0.3" × 0.3" |
| 技术架构图（标注组件来源） | 色块旁边紧贴放置 | 0.35" × 0.35" |
| 封面/章节页 | ❌ 不放 lobe-icons（避免喧宾夺主） | — |

**颜色处理规则：**
- 深色（主蓝/品青）背景卡片 → 使用 `{slug}-color.png` 彩色版，或白色单色版
- 浅色/白色背景 → 使用 `{slug}.svg` 原色版
- PNG fallback 路径：`https://registry.npmmirror.com/@lobehub/icons-static-png/latest/files/icons/{slug}.png`

---

### 0.5.5 内容脚本中的 Logo 标注格式

```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【第 X 页】版式：[内容-Bento卡片]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
标题：苍穹生态AI伙伴矩阵

卡片列表：
  卡片1  [logo: huawei]     华为云
         · 盘古大模型 + CodeArts IDE
         · 联合开发者竞赛合作方
  卡片2  [logo: alibaba]    阿里云
         · 通义千问接入苍穹
         · 云市场联合运营
  卡片3  [logo: deepseek]   DeepSeek
         · 企业级私有化部署方案
         · 财务场景专属模型微调

排版指令：3列等宽卡片，每卡左上角嵌入logo（0.45"），logo下方品牌名12pt灰色
图片：无（全部用lobe-icons）
```

---

### 0.5.6 执行限制与降级处理

| 情况 | 处理方式 |
|------|---------|
| Slug 在映射表中找不到 | 跳过 logo，使用 emoji 替代（如 🤖），不报错 |
| CDN 拉取失败（网络超时） | 自动切换备用 CDN；仍失败则跳过，大纲保留标注 |
| SVG 转 PNG 失败 | 直接用 PNG CDN 地址拉取 fallback |
| 单页 logo 数量 > 6 个 | 合并为「logo 墙」版式，底部横排，文字移至标题区 |
| 用户说「不要 logo」/「不要图标」 | 跳过整个 0.5 阶段，不执行任何 lobe-icons 拉取 |

---

## Phase 1：大纲+版式推荐

### 1.1 输出大纲（每页标注推荐版式+推荐理由）

输出完整大纲，**每页版式字段须标注推荐理由**：

```
──────────────────────────────────────────────────
  金蝶PPT大纲 · [主题] · 共 X 页
  版式分析：[PDCA × 1页 | 数据卡片 × 2页 | 要点列表 × N页]
──────────────────────────────────────────────────
第 01 页  [封面页]              主标题 / 副标题 / 日期
第 02 页  [目录页]              4个章节导览
第 03 页  [章节分隔 01]         章节名 / 副标题
第 04 页  [SWOT矩阵版式21]      页面标题  理由：明确出现优势/劣势/机会/威胁四要素
第 05 页  [数据卡片05]          页面标题  理由：包含3个百分比指标，适合卡片展示
第 06 页  [章节分隔 02]         章节名
第 07 页  [PDCA循环版式20]      页面标题  理由：计划→执行→检查→改进四步结构
第 08 页  [要点列表04]          页面标题  理由：5条简洁要点，无特殊结构
...
第 XX 页  [结尾页]              多语言致谢
──────────────────────────────────────────────────
```

### 1.2 用户确认/调整版式

使用 `ask_user_input` 提问：

```
问题  标题:"大纲确认"  类型:single_select
  选项: 没问题，开始写内容 / 需要调整版式
```

- 选「没问题」→ 进入 Phase 2
- 选「调整版式」→ 用户指定页码和新版式，更新大纲

---

## Phase 2：内容脚本

### 2.1 输出内容脚本

思维模型页须额外注明模型结构，格式如下：

**思维模型页脚本格式：**
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【第 X 页】版式：[PDCA循环版式]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
标题：2025年度项目复盘

模型结构：
  P（计划）：年初制定的三大目标
  D（执行）：实际落地情况，完成率80%
  C（检查）：发现效率瓶颈在交付环节
  A（改进）：2026年引入自动化流程

排版指令：4格循环色块（顺时针），中央↻符号
图片：无
```

**IPD五看页脚本格式：**
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【第 X 页】版式：[IPD五看版式]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
标题：市场全景分析

模型结构：
  看行业：企业数字化加速，AI原生应用渗透率 <10%
  看客户：核心诉求从降本转向增效，愿为Agent买单
  看机会：Skill生态市场规模预计 2026年达2亿
  看竞争：友商缺乏元数据治理，在AI准确性上有短板
  看自己：苍穹PaaS底座扎实，ISV生态已达2800+

排版指令：5列等宽卡片横排，奇偶列顶部交替主蓝/品青，内容区浅灰蓝底
图片：无
```

**标准内容页脚本格式：**
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【第 X 页】版式：[内容-要点列表]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
标题：xxxxxx

正文内容：
• 普通要点（≤30字，18pt普通）
• ★ 重点要点（≤30字，加粗+蓝色/金色强调）
• 普通要点

图片：无 / 图片N → 位置：左侧 / 右侧 / 全页
排版建议：[三列卡片 / 横向流程 / 左右对比 / 纯要点]
```

**层级标注规则：**
- `★` = 重点强调（20pt 加粗，蓝色 `2971EB` 或黄色 `FFB61A`）
- 无标记 = 普通内容（18pt 普通，1.3× 行距）
- `[底色块]` = 思维模型一级信息（品牌色背景 + 白字加粗）
- `[icon:📊]` = 指定图标（写在卡片/格子标注行，生成时调 `addIconBadge` 或直接 `addText`）

**图标使用规则（内容脚本阶段）：**
1. **思维模型页** — 每格默认带图标（见 `style-guide.md § 10.4`），脚本中可用 `[icon:默认]` 表示采用推荐值，或 `[icon:🎯]` 覆盖
2. **Bento 卡片页** — 主卡（深色背景）配大图标（28–32pt），次卡（浅色）配中图标（24pt）
3. **要点列表页** — 行首图标尽量统一（同一页不超过 2 种图标），或全部不用图标
4. **图标密度上限** — 单页最多 6 个图标；同一页不得出现 3 种以上图标类别（避免视觉噪声）
5. **颜色规则** — 深色背景格（主蓝/品青）→ 图标 `color: FFFFFF`；浅色底 → 图标 `color: 2971EB`

**内容原则：**
- 每页 ≤5 个要点，单条 ≤30 字；超出则拆页
- 思维模型页每个格 ≤3 个要点，核心词 ≤6 字加粗置中
- 内容不超过版面 70%，留白 ≥ 30%（参见 `style-guide.md § 12`）
- 品牌色背景上的文字必须用白色
- 语调简洁有力，企业高管演讲调性

**布局多样性规则（必须执行）：**
- 相邻 3 页不得使用同一版式——每页轮换：列数、卡片/统计/图片/文字型
- 纯文字要点页（版式04）不得连续出现超过 2 次——之后必须插入有视觉元素的版式
- 每页必须包含至少一种视觉元素（图标、数字统计、图片、色块、图表之一）

**对齐规则：**
- 段落文字、要点列表 → 左对齐
- 封面/金句页标题 → 居中；内容页标题 → 左对齐
- 禁止内容页标题下方添加强调线（章节分隔页品牌横线除外）

**间距规则（全张统一）：**
- 页面左右最小边距：0.5"
- 内容块之间间距：选 0.3" 或 0.5" 并全张保持一致，不混用

### 2.2 用户确认

> 「以上是全部 X 页的内容脚本，其中包含 [N] 个思维模型版式页（[模型名称列表]）。如需修改，告诉我页码和修改内容，我统一调整后再生成文件。没有问题请回复「开始生成」。」

收到「开始生成」→ 进入 2.3 生成文件。

---

### 2.3 生成文件

**第一步：读取生成阶段必需文件**

```
Read `layout-presets.md` → 获取版式代码模板
Read `pptx-builder.md`  → 获取构建流程规范
If AI品牌logo标注存在 → Read `references/ai-brand-logos.md`
```

**第二步：执行构建流程**

```
编写 /home/claude/build_pptx.js
  ↓
node build_pptx.js
  ↓
soffice PDF → pdftoppm 预览图
  ↓
视觉 QA（逐张检查，至少一次修复循环）
  ↓
cp output.pptx /mnt/user-data/outputs/
  ↓
present_files 交付
```

交付说明控制在 2 行以内：「共 X 页，包含[封面/章节/内容/结尾]，其中 [N] 页采用思维模型版式（[模型列表]），已通过视觉QA。」

---

## 6种思维模型版式规范

> ⚠️ **完整 PptxGenJS 代码见 `layout-presets.md § 版式 19-25`**，下方仅列排版原则和色块结构，供内容脚本阶段参照。

---

### 模型 A：金字塔 / MECE 版式（→ 版式 19）

**结构**：顶部结论 → 中层分论点 → 底层论据（三级分层）

```
┌────────────────────────────────┐  ← 主蓝 #2971EB，白字，结论一句话（全宽 1/4页高）
│           核心结论              │
└────────────────────────────────┘
┌──────────┐ ┌──────────┐ ┌──────────┐  ← 黄色 #FFB61A，白字，分论点（三列等宽）
│  分论点1  │ │  分论点2  │ │  分论点3  │
└──────────┘ └──────────┘ └──────────┘
  · 论据1       · 论据1       · 论据1     ← 浅灰蓝底 #E7F1FF，深色小字
```

**品牌色**：结论=主蓝`#2971EB` / 分论点=黄色`#FFB61A` / 论据=浅灰蓝`#E7F1FF`

---

### 模型 B：PDCA 循环版式（→ 版式 20）

**结构**：4格顺时针排布，中央循环符号

```
  ┌────────┐   ┌────────┐
  │ P 计划 │ → │ D 执行 │
  └────────┘   └────────┘
      ↑    ↻       ↓
  ┌────────┐   ┌────────┐
  │ A 改进 │ ← │ C 检查 │
  └────────┘   └────────┘
```

**品牌色**：P=主蓝`#2971EB` / D=品青`#22AAFE` / C=黄色`#FFB61A` / A=紫色`#966EFF`

---

### 模型 C：SWOT 矩阵版式（→ 版式 21）

**结构**：2×2 矩阵，横纵轴标注内外/优劣维度

```
              内部因素              外部因素
优势/机会  ┌──────────────────┐  ┌──────────────────┐
           │ S  优势           │  │ O  机会           │
           └──────────────────┘  └──────────────────┘
劣势/威胁  ┌──────────────────┐  ┌──────────────────┐
           │ W  劣势           │  │ T  威胁           │
           └──────────────────┘  └──────────────────┘
```

**品牌色**：S=主蓝`#2971EB` / O=蓝绿`#05C8C8` / W=浅灰蓝`#E7F1FF`(深字) / T=紫色`#966EFF`

---

### 模型 D：黄金圈版式（→ 版式 22）

**结构**：三层嵌套椭圆（WHY→HOW→WHAT 由内到外）+ 右侧说明列

```
左侧（椭圆嵌套）：              右侧（说明列）：
┌─── WHAT 浅灰 ───────────┐     [WHY蓝] WHY — 为什么做：核心使命
│  ┌─── HOW 品青 ───┐     │     [HOW青] HOW — 怎么做：方法路径
│  │  ┌─ WHY 蓝 ─┐  │     │     [WHAT灰] WHAT — 做什么：产品服务
│  │  └──────────┘  │     │
│  └───────────────┘      │
└─────────────────────────┘
```

**品牌色**：WHY内核=主蓝`#2971EB` / HOW中层=品青`#22AAFE` / WHAT外层=浅灰蓝`#E7F1FF`

---

### 模型 E：5W1H 六格版式（→ 版式 23）

**结构**：2行×3列均等卡片，顶部蓝色标签 + 内容区

```
┌──────────────┐  ┌──────────────┐  ┌──────────────┐
│ WHO  谁      │  │ WHAT  什么   │  │ WHEN  何时   │
├──────────────┤  ├──────────────┤  ├──────────────┤
│ · 内容要点   │  │ · 内容要点   │  │ · 内容要点   │
└──────────────┘  └──────────────┘  └──────────────┘
┌──────────────┐  ┌──────────────┐  ┌──────────────┐
│ WHERE  何地  │  │ WHY  为何    │  │ HOW  如何    │
├──────────────┤  ├──────────────┤  ├──────────────┤
│ · 内容要点   │  │ · 内容要点   │  │ · 内容要点   │
└──────────────┘  └──────────────┘  └──────────────┘
```

**品牌色**：卡片顶部标签=主蓝`#2971EB`白字 / 内容区=浅灰蓝`#E7F1FF`深字

---

### 模型 F：SCQA 四步流程版式（→ 版式 24）

**结构**：四步横向箭头流 + 底部内容说明行

```
[S 场景] → [C 冲突] → [Q 问题] → [A 解决]
 浅灰底      品金底      紫色底      主蓝底
  ↓            ↓           ↓           ↓
 说明文字    说明文字    说明文字    说明文字
```

**品牌色**：S=浅灰蓝`#E7F1FF`(深字) / C=黄色`#FFB61A` / Q=紫色`#966EFF` / A=主蓝`#2971EB`

---

### 模型 G：IPD 五看版式（→ 版式 25）【新增】

**结构**：5列等宽卡片横排，顶部序号色块 + 内容区

```
┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐
│ 01   │  │ 02   │  │ 03   │  │ 04   │  │ 05   │
│看行业│  │看客户│  │看机会│  │看竞争│  │看自己│
├──────┤  ├──────┤  ├──────┤  ├──────┤  ├──────┤
│核心  │  │核心  │  │核心  │  │核心  │  │核心  │
│观点  │  │观点  │  │观点  │  │观点  │  │观点  │
│      │  │      │  │      │  │      │  │      │
│支撑  │  │支撑  │  │支撑  │  │支撑  │  │支撑  │
│数据  │  │数据  │  │数据  │  │数据  │  │数据  │
└──────┘  └──────┘  └──────┘  └──────┘  └──────┘
```

**品牌色**：奇数列顶块=主蓝`#2971EB` / 偶数列顶块=品青`#22AAFE` / 内容区=浅灰蓝`#E7F1FF`

**脚本格式：**
```
模型结构：
  看行业：[核心观点] + [支撑数据/趋势]
  看客户：[核心观点] + [典型诉求/洞察]
  看机会：[核心观点] + [市场规模/增速]
  看竞争：[核心观点] + [竞品/差异化]
  看自己：[核心观点] + [优势/短板]

排版指令：5列等宽，顶部序号+标题色块（交替主蓝/品青），内容区浅灰蓝底
```

---

## 品牌色语义映射总表

> ⚠️ 严格约束：PPT 中**只允许使用以下颜色**，禁止使用任何不在此列表中的颜色（尤其禁止红色 `#E8210A`）。

### 主色系

| 品牌色 | 色值 | 思维模型中的语义角色 |
|--------|------|---------------------|
| 科技蓝（主蓝） | `#2971EB` | 核心结论 / 首要模块 / WHY / Plan / Strengths / Answer |
| 亮天蓝（品青） | `#22AAFE` | 执行流程 / 方法层 / HOW / Do / 次级信息 |
| 章节青 | `#00CCFE` | 章节页超大数字 + 装饰横线（专用，不用于内容页） |
| 深紫蓝（藏青） | `#28245F` | 强对比文字块 / 深色强调 / 图表深色底 |
| 白色 | `#FFFFFF` | 所有深色背景上的文字 |

### 辅助色系

| 品牌色 | 色值 | 思维模型中的语义角色 |
|--------|------|---------------------|
| 绿松石青 | `#05C8C8` | 增长正面 / 机会 / Opportunities |
| 薰衣草紫 | `#966EFF` | 挑战冲突 / 威胁风险 / Act改进 / Question / Threats / Complication |
| 橙黄 | `#FFB61A` | 强调要素 / 改进提示 / WHAT / Check / 警示信息 |
| 深灰 | `#373838` | 正文文字 / 浅色背景上的标注 |
| 浅灰 | `#BFBFBF` | 辅助说明文字 / 次级标注 / 分割线 / 边框 |
| 冰蓝 | `#E7F1FF` | 二级信息底色 / 论据区 / Weaknesses / Situation / 卡片背景 |

### 颜色禁止清单

| 禁止颜色 | 原因 |
|---------|------|
| ❌ 红色 `#E8210A` | 不在官方色盘中；章节页装饰横线必须用 `#00CCFE`，禁止用红色 |
| ❌ 旧主蓝 `#1770EA` | 已替换为官方科技蓝 `#2971EB` |
| ❌ 旧品金 `#FFC000` / `#FFB800` | 已统一为官方橙黄 `#FFB61A` |
| ❌ 任何不在上表中的颜色 | 破坏品牌一致性 |

---

## Anti AI-slop 规则（禁止事项）

> 防止生成内容落入AI模板通病，确保输出符合金蝶企业级标准。

| 问题 | ❌ 禁止 | ✅ 正确做法 |
|-----|------|---------|
| 过度渐变 | 全页渐变背景、彩虹配色 | 金蝶标准背景图或品牌色系 |
| 空洞图标 | generic 灯泡/齿轮/火箭图标 | 金蝶品牌图标或无图标纯文字 |
| 英文套话 | "Think Big" "Innovation" "Future" | 金蝶价值观：致良知、走正道、行王道 |
| 无意义装饰 | 抽象波浪、点阵、几何图形 | 只用官方气泡圆元素 |
| 章节编号滥用 | 01/02/03/04 但无章节内容 | 有实质章节才用章节分隔页 |
| 段落过长 | 单条要点超过50字 | ≤30字，每页≤5要点 |
| 数据空洞 | "显著提升""大幅增长"无数字 | 必须有具体数字或明确来源 |
| 堆砌热词 | AI Agent、大模型、数字化转型滥用 | 每页最多1个技术热词，配具体场景 |
| 假性对比 | 新旧对比但无差异描述 | 左右对比页必须列出≥3个差异点 |
| 时间轴空洞 | 只有年份无事件描述 | 每个时间点必须有事件+影响 |

---

## 金蝶品牌知识库

| 类别 | 内容 |
|------|------|
| 使命 | 予力企业成就不凡 |
| 愿景 | 做最值得托付的企业管理AI平台 |
| 价值观 | 致良知、走正道、行王道 |
| 金蝶哲学 | 以客户为中心，长期坚持专业主义；以奋斗者为本，长期坚持明心净心 |
| 四部曲 | 明心净心（起心动念/境界格局）→ 道 → 德（意识/语言/身行）→ 事（结果状况） |
| IPD五看 | 看行业 / 看客户 / 看机会 / 看竞争 / 看自己（每项：核心观点 + 支撑数据） |
| 项目层级 | 项目总监 → 项目经理 → 组长（含关键职责）→ 组员 |
| IT架构分层 | SaaS层 / PaaS层 / IaaS层 |
| 保密级别 | ④ 内部公开 请勿外传 |

---

## 常见情况处理

| 情况 | 处理方式 |
|------|---------|
| 用户未指定输出格式 | 触发 Phase F，询问 HTML vs PPTX，选择后再进入 Phase 0 |
| 用户直接提供完整内容 | 若格式已明确，直接进入 Phase 0 内容分析；否则先走 Phase F |
| 用户需求模糊（如"做个PPT介绍产品"） | 先触发 Phase F 选格式，再触发 Phase 0.5 设计方向顾问 |
| 用户明确指定模型 | 跳过 Phase 0 扫描，直接采用指定模型版式 |
| 用户说「不要思维模型」 | Phase 0 结果全部忽略，按标准版式处理 |
| 用户说「直接生成」/「不用确认」 | 若格式未明确，先触发 Phase F；然后快速模式：Phase 0+1+2+H 合并输出，末尾一个确认问题 |
| 用户只要内容脚本不要文件 | 完成 Phase 2 后停止 |
| 用户说「不要封面/结尾」 | 记住偏好，大纲中删除对应页 |
| 章节超过4个 | 建议合并或设附录，目录页最多4章 |
| 单页内容过多 | 拆为2页，用承接标题「（一）」「（二）」 |
| 检测到4种以上模型 | 保留主要3种，其余降级为标准版式，大纲中注明 |
| 用户上传已有 .pptx | 提取内容后重排为金蝶风格 HTML deck |
| 用户提供数据要求图表 | 收集数据后在 HTML 中用 CSS/Canvas 绘制，PPTX 导出时转为图片 |
| 内容含 AI 品牌/大模型关键词 | 大纲标注 `[logo: slug]`，HTML 中用 lobe-icons SVG |
| 用户说「不要 logo」 | 跳过 logo 拂取，不调用 CDN |
| 用户中途要求切换输出格式 | 若未进入 Phase H，回退到 Phase F 重新选择；若已进入 Phase H，评估调整成本 |
| **OUTPUT_FORMAT=pptx 且用户要求导出 PPTX** | 进入 Phase X，执行 `scripts/export_deck_pptx.mjs` |
| **用户说「可编辑PPTX」/「要PPT文件」** | 设置 OUTPUT_FORMAT=pptx，Phase H 必须按 html2pptx 4 条硬约束执行 |
| **html2pptx 导出失败** | 提示 HTML 不合规，列出具体错误，建议修改 HTML 或输出 PDF |
| **OUTPUT_FORMAT=html 且用户只要 HTML** | 交付 HTML deck，可浏览器演讲或部署 Vercel，跳过 Phase X |
| **用户要 PDF** | 用 Playwright 截图合并导出 PDF（⚠️ 动画丢失），不依赖 OUTPUT_FORMAT |
| **用户说「编辑好了」/「保存修改」** | 提示用户在 HTML 页面点击「保存 HTML」按钮导出 |
| **用户编辑后要导出 PPTX** | 提示保存 HTML → 运行 CLI 命令 `node scripts/export_deck_pptx.mjs` |
| **用户说「不要编辑功能」** | HTML 中移除 EditController 和编辑工具栏 UI |

---

## HTML 输出详细规范（v7.0）

> HTML 是第一公民，PPTX 是可选导出。本节规范 HTML deck 的生成和导出。

### HTML 输出特点

| 特点 | 说明 |
|------|------|
| **单文件** | 全部 CSS/JS 内联，零依赖，可直接浏览器打开 |
| **交互式** | 键盘导航、触摸滑动、动画效果、进度条、导航点 |
| **响应式** | `clamp()` 字号自适应，移动端/投影仪完美适配 |
| **品牌一致** | 与 PPTX 共用相同的品牌色系、版式逻辑、内容密度规范 |
| **可分享** | 支持 Vercel 一键部署（在线 URL）、Playwright PDF 导出 |

---

### Phase H3：HTML 生成流程

**第一步：读取必需文件**

```
Read `html-kingdee-template.md` → HTML 结构 + SlidePresentation 类 + 动画触发
Read `html-kingdee-style.md`    → CSS 自定义属性 + 视口锁定 + 响应式断点
Read `html-kingdee-presets.md`  → 按需加载版式 CSS（只复制使用的版式）
If AI品牌logo标注存在 → 使用 lobe-icons CDN SVG
```

**第二步：生成 HTML 文件**

```html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>{演示标题} | 金蝶</title>
  <style>
    /* 1. CSS 自定义属性（品牌色系） */
    /* 2. 视口锁定基础样式 */
    /* 3. 响应式断点 */
    /* 4. 动画与过渡 */
    /* 5. 卡片通用样式 */
    /* 6. 品牌色语义映射 */
    /* 7. 版式 CSS 类（按需加载） */
  </style>
</head>
<body>
  <div class="progress-bar"></div>
  <div class="nav-dots"></div>
  <!-- 幻灯片内容 -->
  <script>
    /* SlidePresentation 类 */
    /* Intersection Observer */
    /* 键盘/触摸/滚轮导航 */
  </script>
</body>
</html>
```

**第三步：浏览器预览**

```
写入 {主题}.html 文件
  ↓
本地 HTTP 服务预览（可选）
  ↓
用户确认 → 交付文件 / 部署 URL
```

---

### HTML 版式类名对照表

| PPTX 版式编号 | HTML CSS 类名 | 结构示例 |
|--------------|---------------|---------|
| 01 封面页 | `.slide-cover` | `<section class="slide slide-cover">` |
| 02 目录页 | `.slide-toc` | `<section class="slide slide-toc">` |
| 03 章节分隔 | `.slide-section` | `<section class="slide slide-section">` |
| 04 要点列表 | `.slide-bullets` | `<section class="slide slide-bullets">` |
| 05 数据卡片 | `.slide-data-cards` | `.data-card-grid` + `.data-card` |
| 11 数据看板 | `.slide-dashboard` | `.dashboard-grid` + `.dashboard-card` |
| 12 Bento Grid | `.slide-bento` | `.bento-grid` + `.bento-main` + `.bento-card` |
| 19 金字塔 | `.slide-pyramid` | `.pyramid-wrapper` + `.pyramid-top/.middle/.bottom` |
| 20 PDCA | `.slide-pdca` | `.pdca-grid` + `.pdca-cell` + `.color-plan/.do/.check/.act` |
| 21 SWOT | `.slide-swot` | `.swot-grid` + `.swot-cell` + `.color-strength/.weakness/.opportunity/.threat` |
| 22 黄金圈 | `.slide-golden` | `.golden-wrapper` + `.golden-circles` + `.golden-explain` |
| 25 IPD五看 | `.slide-ipd` | `.ipd-grid` + `.ipd-card` + `.color-view-1/2/3/4/5` |
| 16 金句 | `.slide-quote` | `<section class="slide slide-quote">` |
| 28 悬浮统计 | `.slide-floating-stats` | `.floating-grid` + `.floating-stat` |

---

### HTML 导航功能

| 操作 | 触发方式 |
|------|---------|
| 上一页 | `←` / `↑` / `PageUp` |
| 下一页 | `→` / `↓` / `PageDown` / `Space` |
| 首页 | `Home` |
| 结尾 | `End` |
| 左滑（移动端） | 下一页 |
| 右滑（移动端） | 上一页 |
| 鼠标滚轮 | 下一页/上一页（300ms 防抖） |

---

### HTML 内容密度规范（与 PPTX 一致）

| 幻灯片类型 | 最大内容 | 版面占比上限 |
|-----------|---------|------------|
| 标题页（封面） | 1 标题 + 1 副标题 + 元信息 | 50% |
| 内容页 | 1 标题 + 4–6 要点 | 70% |
| 特征网格 | 1 标题 + 最多 6 张卡片 | 80% |
| 数据看板 | 3 个数字卡片 | 75% |

```css
/* CSS 强制留白 */
.slide-content {
  padding: clamp(0.3rem, 1vw, 0.5rem);
}

.text-block {
  max-width: min(80vw, 800px);
}
```

---

### HTML 图标使用（Emoji）

与 PPTX 版一致，使用 Microsoft YaHei 字体渲染 emoji：

```html
<span class="icon">📊</span>  <!-- 数据看板 -->
<span class="icon">⚡</span>  <!-- 快速响应 -->
<span class="icon">🤖</span>  <!-- AI/智能体 -->
<span class="icon">🚀</span>  <!-- 起飞/增长 -->
```

---

### HTML 分享与导出（可选）

**本地预览**

```bash
python3 -m http.server 8080 --directory .
# 或
npx serve .
```

**Vercel 部署**

```bash
vercel --prod
# 输出在线 URL，可分享给他人
```

**PDF 导出（⚠️ 动画效果丢失）**

```bash
# 使用 Playwright 以 1920×1080 分辨率截图并合并
node scripts/export-pdf.js {主题}.html output.pdf
```

---

### 常见情况处理（HTML 模式）

| 情况 | 处理方式 |
|------|---------|
| 用户说「HTML幻灯片」/「网页版PPT」/「交互式演示」 | 自动选择 HTML 输出格式 |
| 用户说「传统PPT」/「PPTX文件」 | 选择 PPTX 输出格式 |
| 用户明确指定输出格式 | 按用户指定执行 |
| 用户说「不要动画」 | HTML 中移除 `.animate-*` 类，跳过动画触发 |
| 用户说「不要导航点」 | 移除 `.nav-dots` 容器 |
| 用户说「可编辑」/「内联编辑」 | 启用 `contenteditable`，⚠️ 导出前必须清除编辑状态 |
| 用户要求 PDF 导出 | 警告动画丢失，使用 Playwright 截图合并 |
| 用户要求在线分享 | 使用 Vercel CLI 部署，输出 URL |
| 移动端预览 | 响应式自动适配，触摸滑动导航生效 |
| 用户上传已有 .pptx 要求转 HTML | 先提取内容（Phase 4），再走 HTML 流程 |

---

## HTML 编辑模式（v7.2 新增）

> **HTML 输出自带编辑功能**：右上角开关 + 点击任意文字直接修改 + 一键保存导出。

### 编辑模式 UI

| 元素 | 功能 |
|------|------|
| 右上角 Toggle Switch | 开启/关闭编辑模式 |
| 「保存 HTML」按钮 | 清除编辑状态 + 导出干净 HTML 文件 |
| 「导出 PPTX」按钮 | 提示运行 CLI 命令导出 PPTX |

### 自动可编辑元素

以下元素开启编辑模式后自动支持 `contenteditable`：

| 元素类型 | CSS 选择器 | 说明 |
|---------|-----------|------|
| 标题 | `h1, h2, h3, h4, h5, h6` | 所有标题可编辑 |
| 正文 | `p, li` | 段落和列表项可编辑 |
| 卡片标题 | `.card-title, .pillar-title, .step-title` | 卡片标题可编辑 |
| 卡片描述 | `.pillar-desc, .step-desc` | 卡片描述可编辑 |
| 统计数字 | `.stat-nb, .stat-label, .stat-note` | 数据卡片内容可编辑 |
| 引用文字 | `.callout-text` | 金句内容可编辑 |

**不可编辑元素**：序号 `.pillar-ic, .step-nb`、logo、背景图、导航 UI

### 编辑模式操作流程

```
1. 打开 HTML 文件 → 右上角自动显示编辑工具栏
2. 点击 Toggle 开启编辑模式 → 所有文字元素出现蓝色虚线悬停框
3. 点击任意文字 → 进入编辑状态，出现蓝色实线边框
4. 修改内容 → 点击其他位置或 Tab 跳到下一元素
5. 点击「保存 HTML」→ 导出干净的 HTML 文件（无编辑 UI）
6. 如需 PPTX → 点击「导出 PPTX」查看 CLI 命令提示
```

### 导出时清除状态清单

| 状态 | 清除方式 |
|------|---------|
| `contenteditable` 属性 | `el.removeAttribute('contenteditable')` |
| `.editable-text` class | `el.classList.remove('editable-text')` |
| `.edit-active` class | `el.classList.remove('edit-active')` |
| `.edit-toolbar.hidden` | `toolbar.classList.add('hidden')` |
| `.nav-hint.show` | `navHint.classList.remove('show')` |
| `.nav-dot.active` | `dot.classList.remove('active')` |

⚠️ **CRITICAL**: 不清除这些状态会导致导出的 HTML/PPTX 包含编辑 UI 和临时样式。

### 用户编辑后的处理

| 用户操作 | 处理方式 |
|---------|---------|
| 用户说「编辑好了，保存」 | 执行保存 HTML 流程 |
| 用户说「导出 PPTX」 | 提示 CLI 命令，若已保存 HTML 则可直接运行 |
| 用户说「我改错了，恢复原内容」 | 无法恢复，建议重新生成原始 HTML |
| 用户编辑后要求调整版式 | 需重新走 Phase H 生成流程，编辑内容不保留 |

