# 工作流程

### 前置步骤：安装/升级 FlyAI CLI

在执行任何搜索之前，**必须先执行安装命令**（无论是否已安装，确保为最新版本）：

```bash
npm install -g @fly-ai/flyai-cli@latest --registry=https://registry.npmjs.org
```

> 💡 此命令会自动处理首次安装和版本升级，无需手动判断是否已安装。**安装后验证：**
```bash
flyai --help
```

**安装失败处理：**
| 情况 | 处理方式 |
|-----|---------|
| npm 未安装 | 提示用户先安装 Node.js (https://nodejs.org/) |
| 权限不足 | 建议使用 `sudo npm install -g @fly-ai/flyai-cli@latest --registry=https://registry.npmjs.org` 或使用 nvm 管理 Node |
| 网络问题 | 建议用户检查网络或使用国内镜像 `npm config set registry https://registry.npmmirror.com` |

**注意：** 此步骤只在首次使用时执行，后续调用会直接跳过已安装的情况。

### 第1步：收集用户信息

使用 `ask_user_question` 工具收集必要信息。

**必须收集的信息**：
1. **梦想目的地** - 用户一直想去哪（如"瑞士"、"马尔代夫"、"圣托里尼"）
2. **去不了的原因** - 太贵/没时间/签证难/太远...
3. **出发城市** - 用户从哪里出发
4. **可用时间** - 如"5天"、"周末2天"

**可选收集的信息**：
5. **实际预算** - 人均多少钱
6. **同行人** - 几个人、什么关系

**提问示例**：

```json
{
  "questions": [
    {
      "question": "你一直想去哪个目的地？（那个梦想中的地方）",
      "header": "梦想目的地",
      "options": [
        { "label": "瑞士 🇨🇭", "description": "雪山草甸、精致小镇、景观列车" },
        { "label": "马尔代夫 🏝", "description": "水屋、碧海、无人沙滩" },
        { "label": "圣托里尼 🇬🇷", "description": "蓝白建筑、爱琴海日落" },
        { "label": "冰岛 🇮🇸", "description": "极光、冰川、火山地热" }
      ]
    },
    {
      "question": "是什么让你去不了？",
      "header": "卡点原因",
      "multiSelect": true,
      "options": [
        { "label": "太贵了 💸", "description": "预算不够" },
        { "label": "没时间 ⏰", "description": "假期不够长" },
        { "label": "签证麻烦 📝", "description": "签证难办或周期长" },
        { "label": "太远了 ✈️", "description": "飞行时间太长" }
      ]
    },
    {
      "question": "你从哪个城市出发？",
      "header": "出发城市",
      "options": [
        { "label": "上海", "description": "长三角地区" },
        { "label": "北京", "description": "华北地区" },
        { "label": "广州/深圳", "description": "珠三角地区" },
        { "label": "杭州", "description": "长三角地区" }
      ]
    },
    {
      "question": "你有多少天假期？",
      "header": "可用时间",
      "options": [
        { "label": "2-3天", "description": "周末短途" },
        { "label": "4-5天", "description": "小长假" },
        { "label": "6-7天", "description": "一周假期" },
        { "label": "7天以上", "description": "长假期" }
      ]
    }
  ]
}
```

### 第2步：拆解梦想目的地的体验元素

**这是核心创新点！** 不是简单推荐"便宜目的地"，而是理解用户向往这个目的地的**本质是什么**。

**体验元素拆解模板**：

| 梦想目的地 | 核心体验元素 |
|-----------|------------|
| 瑞士 🇨🇭 | 🏔 雪山草甸 + 🚂 景观列车 + 🏘 精致小镇 + 🐄 牧场田园 + 📸 随手出片 |
| 马尔代夫 🏝 | 🏖 水清沙白 + 🏠 水上屋 + 🤿 浮潜潜水 + 🌅 海上日落 + 🍹 度假氛围 |
| 圣托里尼 🇬🇷 | 🏛 蓝白建筑 + 🌅 悬崖日落 + 🍷 浪漫氛围 + 📸 出片圣地 |
| 冰岛 🇮🇸 | 🌌 极光 + 🧊 冰川 + 🌋 火山地热 + 🐳 观鲸 + 🛤 荒野公路 |
| 北欧 🇳🇴 | 🌲 森林湖泊 + 🏔 峡湾风光 + 🏠 童话小镇 + 🌌 极光 |
| 新西兰 🇳🇿 | 🏔 雪山湖泊 + 🌿 纯净自然 + 🐑 牧场田园 + 🎬 中土世界 |
| 日本 🇯🇵 | 🌸 四季分明 + 🏯 传统文化 + 🍜 美食天堂 + 🛒 购物天堂 |
| 土耳其 🇹🇷 | 🎈 热气球 + 🏛 历史遗迹 + 🛁 土耳其浴 + 🌅 博斯普鲁斯海峡 |

**拆解后输出示例**：
```
🇨🇭 瑞士·体验元素拆解：
┌────────────────────────────────┐
│ 你向往瑞士的本质是什么？        │
│                                │
│ 🏔 雪山草甸的极致自然          │
│ 🚂 景观列车穿越山谷            │
│ 🏘 精致的小镇生活感            │
│ 🐄 牧场田园牧歌氛围            │
│ 📸 随手一拍就是壁纸            │
└────────────────────────────────┘
```

### 第3步：搜索平替目的地

**3.1 根据体验元素构建搜索策略**

基于拆解出的体验元素，调用 FlyAI 搜索能满足这些元素的平替目的地：

```bash
# 自然语言广泛搜索
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai keyword-search --query "国内 [体验元素关键词] [可用天数]天"
```

**3.2 对候选平替目的地搜索机票**
```bash
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-flight \
  --origin "[出发城市]" --destination "[平替目的地]" \
  --dep-date [出发日期] --sort-type 3
```

**3.3 搜索对应酒店**
```bash
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-hotel \
  --dest-name "[平替目的地]" \
  --check-in-date [入住日期] --check-out-date [退房日期] \
  --sort rate_desc
```

**3.4 搜索景点**
```bash
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-poi --city-name "[平替目的地]"
```

### 第4步：计算平替匹配度

对每个候选平替目的地，计算与梦想目的地的"体验元素匹配度"：

**匹配度计算规则**：
| 匹配情况 | 符号 | 得分 |
|---------|------|------|
| 完美匹配 | ✅ | +20% |
| 部分匹配 | ⚠️ | +10% |
| 不匹配 | ❌ | +0% |

**匹配度展示**：
```
平替匹配度：⭐⭐⭐⭐⭐ 92%

🏔 雪山草甸   ✅ 扎尕那·被誉为"东方小瑞士"
🏘 精致小镇   ✅ 郎木寺·藏式小镇，异域感拉满
🐄 牧场田园   ✅ 桑科草原·策马奔腾
🚂 景观列车   ❌ 无（但自驾沿途风景更震撼）
📸 出片率     ✅ ⭐⭐⭐⭐⭐
```

### 第5步：输出平替方案

**输出格式模板**：

```markdown
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔄 [梦想目的地] 平替方案

━━━ 平替A：[目的地]（[定位标签]·[匹配度等级]）━━━

  平替匹配度：⭐⭐⭐⭐⭐ [百分比]%
  
  [体验元素1]   ✅ [具体满足方式]
  [体验元素2]   ✅ [具体满足方式]
  [体验元素3]   ✅ [具体满足方式]
  [体验元素4]   ❌ [不满足或替代说明]
  📸 出片率     ✅ ⭐⭐⭐⭐⭐
  
  💰 费用预估：
  ✈️ [出发城市]→[目的地] 往返 ¥[金额]/人
  🏨 [晚数]晚住宿 ¥[金额]（[酒店类型]）
  📍 景点门票 ¥[金额]
  🚗 当地交通 ¥[金额]（[交通方式]）
  总计：约 ¥[金额]/人（省了[梦想目的地]的[百分比]%！）
  
  📍 能玩到的核心景点：
  · [景点1]（[亮点说明]）
  · [景点2]（[亮点说明]）
  · [景点3]（[亮点说明]）
  
  ⚠️ 和[梦想目的地]的差距：
  · [差距1]
  · [差距2]

━━━ 平替B：[目的地]（[定位标签]·[匹配度等级]）━━━
（同上格式）

━━━ 平替C：[目的地]（[定位标签]·[匹配度等级]）━━━
（同上格式）

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📊 三个平替一图对比：

              [平替A]      [平替B]      [平替C]
匹配度        [百分比]%    [百分比]%    [百分比]%
花费/人       ¥[金额]      ¥[金额]      ¥[金额]
飞行时间      [时间]       [时间]       [时间]
体力要求      ⭐⭐⭐⭐       ⭐⭐          ⭐⭐⭐
签证          [情况]       [情况]       [情况]
最佳月份      [月份]       [月份]       [月份]

⚠️ [季节/时间等特别提醒]

🏆 综合推荐：[推荐目的地]！[推荐理由]

👉 [展开完整行程] [查看航班] [查看酒店]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```

---
