===========================================
ATOM-VISUAL-030 - 过滤 Emoji 和特殊符号（V1.0）
TTS 语音前置处理：纯文本，无 emoji
===========================================

【这个动作是干啥的】
从文本中移除所有 emoji、Markdown 符号，只保留纯文字，适合 TTS 朗读

【什么时候用】
- 调用 TTS 生成语音前
- 需要把格式化文本转成纯文本
- 避免 TTS 把 emoji 念出来（如"空心对勾"）

【核心功能】
过滤 emoji（Unicode 范围）：
  - 表情符号：😀😁😂等
  - 符号和象形文字：🌍🌎🌏等
  - 交通和地图：🚀🚁🚂等
  - 旗帜：🇨🇳🇺🇸🇯🇵等
  - 特殊符号：✅❌📊❤️🔥等

过滤 Markdown 符号：
  - 粗体：**text**
  - 斜体：*text*
  - 标题：### text
  - 列表：- item
  - 链接：[text](url)

过滤多余空格：
  - 多个连续空格 → 单个空格
  - 首尾空格 → 移除

保留内容：
  - ✅ 中文文字
  - ✅ 中文标点（，。？！）
  - ✅ 英文字母和数字
  - ✅ 正常空格

【举个例子】

过滤前：
"🔴 优先：飞书 OAuth 配置
📊 统计：13 项完成
✅ 完成：TTS 精简"

过滤后：
"优先：飞书 OAuth 配置
统计：13 项完成
完成：TTS 精简"

【用户反馈的问题】
问题：TTS 会把 emoji 也念出来
- ✅ 念成"空心对勾"
- ❤️ 念成"红心"
- 📊 念成"图表"

解决方案：
调用 TTS 前，先用 ATOM-VISUAL-030 过滤 emoji

【关联原子动作】
前置动作：
  - 无（可独立执行）

后置动作：
  - ATOM-VISUAL-008（生成 TTS 语音）

使用场景：
  - SKILL-TTS-001（TTS 自动化）
  - 任何需要 TTS 语音的场景

【操作步骤】
1. 接收输入文本
2. 过滤 emoji（Unicode 范围）
3. 过滤特殊符号
4. 过滤 Markdown 符号
5. 过滤多余空格
6. 返回纯文本

【检查清单】
执行前：
  - [ ] 输入文本不为空
  - [ ] 文本编码为 UTF-8

执行后：
  - [ ] 所有 emoji 已移除
  - [ ] 所有 Markdown 符号已移除
  - [ ] 无多余空格
  - [ ] 保留中文标点

【常见错误】
❌ 错误：只过滤了部分 emoji 范围
✅ 正确：覆盖所有常用 emoji Unicode 范围

❌ 错误：把，。？！也过滤了
✅ 正确：保留中文标点，只过滤 emoji 和特殊符号

❌ 错误：留下多个连续空格
✅ 正确：用 \s+ 替换为单个空格

【核心价值】
纯文本 TTS：
  - 无 emoji 干扰
  - 自然流畅的语音
  - 避免"空心对勾"等废话

用户体验：
  - 语音更自然
  - 没有奇怪的描述
  - 像正常人说话

【技术细节】
Emoji Unicode 范围：
  - \x{1F600}-\x{1F64F}：表情符号
  - \x{1F300}-\x{1F5FF}：符号和象形文字
  - \x{1F680}-\x{1F6FF}：交通和地图
  - \x{1F1E0}-\x{1F1FF}：旗帜
  - \x{2600}-\x{26FF}：杂项符号
  - \x{2700}-\x{27BF}：装饰符号

PowerShell 实现：
  $cleanText = $text -replace '[\x{1F600}-\x{1F64F}]', ''
  $cleanText = $cleanText -replace '\*\*', ''
  $cleanText = $cleanText -replace '\s+', ' '

【文件位置】
MD 模块：atomic-actions/02-visual/ATOM-VISUAL-030-过滤 Emoji.md
TXT 说明：原子动作说明/02-呈现层/030-过滤 Emoji.txt

===========================================
创建时间：2026-03-07 21:07
版本：V1.0
===========================================
