# 房务详情「询房」提示已复制但剪贴板为空

> 模块：管理后台 · 房务工作台 `/housekeeper/orders`
> 类型：**前端待处理（后端无接口变更）**
> 日期：2026-07-03
> 说明：仅通知前端处理；本问题不需要后端新增接口，也不需要恢复记录式询房。

## 问题现象

测试页面：

- 页面：`http://192.168.100.160:9527/housekeeper/orders`
- 弹窗：房务订单详情
- 订单示例：`HL20260702232103376`
- 操作：点击某天行程右侧「询房」
- 当前结果：右上角 toast 提示「已复制询房话术，去微信粘贴发给酒店」
- 实际结果：系统剪贴板为空，去微信粘贴没有内容

## 后端当前口径

后端不需要新增接口、不改字段。

询房话术仍使用既有 preview 能力：

```http
POST /v3/admin/order/inquiry/preview
```

业务口径：

- 询房已经简化为“复制话术”。
- 不恢复记录式询房、询房历史、发起询房记录等已删除能力。
- 前端点击「询房」时，应先拿 preview 返回的话术，再完成复制。

## 【前端 · 管理后台】处理要求

### 1. 不要在复制未可信成功时提示“已复制”

当前现象说明前端复制链路存在误判：页面提示已复制，但系统剪贴板实际为空。

请前端检查复制实现，不要只根据 `document.execCommand('copy')` 返回值、按钮点击成功、或接口成功就展示“已复制”。

### 2. 复制逻辑需兼容 HTTP 测试环境

当前测试前端是 `http://192.168.100.160:9527`，属于非安全源。浏览器可能拒绝或限制 `navigator.clipboard.writeText`。

建议处理口径：

- 安全源且 Clipboard API 可用时，优先使用 `navigator.clipboard.writeText`。
- Clipboard API 不可用或被拒绝时，再降级到临时 `textarea` + `document.execCommand('copy')`。
- 降级复制无法确认写入成功时，不要提示“已复制”，应展示可选中的询房话术并提示用户手动复制。

### 3. 区分接口失败和复制失败

需要区分两类错误：

| 场景 | 期望提示 |
|------|----------|
| `/inquiry/preview` 接口失败或返回空话术 | 提示“生成询房话术失败”或等价接口错误 |
| preview 成功但浏览器拒绝复制 | 尝试降级复制；无法确认成功时提示手动复制 |

### 4. 复制内容为空要阻断

如果 preview 返回的文本为空、只有空白字符，前端不要执行复制，应提示话术为空或生成失败，避免误报“已复制”。

## 验收标准

| 场景 | 期望 |
|------|------|
| `http://192.168.100.160:9527/housekeeper/orders` 点击「询房」 | 复制成功时剪贴板实际有 preview 话术 |
| 浏览器限制 Clipboard API | 不误报“已复制”，提供可手动选中的话术 |
| preview 接口失败 | 显示接口/生成失败，不显示复制成功 |
| preview 返回空文本 | 不复制，提示话术为空或生成失败 |
| 去微信粘贴 | 内容应与 preview 话术一致 |

## 影响范围

| 页面/能力 | 说明 |
|-----------|------|
| `/housekeeper/orders` | 房务订单详情弹窗每日行程「询房」按钮 |
| `/v3/admin/order/inquiry/preview` | 仅作为现有话术生成接口使用，无后端改动 |
