diff --git a/changelogs-v2/2026-07/16_4732_房务详情询房复制失败-前端修复-管理后台.md b/changelogs-v2/2026-07/16_4732_房务详情询房复制失败-前端修复-管理后台.md new file mode 100644 index 0000000..9be376d --- /dev/null +++ b/changelogs-v2/2026-07/16_4732_房务详情询房复制失败-前端修复-管理后台.md @@ -0,0 +1,75 @@ +# 房务详情「询房」按钮复制失败 + +> 模块:管理后台 · 房务工作台 `/housekeeper/orders` +> 类型:**前端修复(复制降级修正,无需新增后端接口)** +> 日期:2026-07-03 +> 关联工单:#4732 +> 背景:房务详情弹窗中,房务点击每日行程右侧「询房」按钮后,页面提示「复制失败,请手动选中复制」。当前业务口径是“询房=复制话术”,不恢复记录式询房。 + +## 问题现象 + +测试页面: + +- 页面:`http://192.168.100.160:9527/housekeeper/orders` +- 弹窗:房务订单详情 +- 订单示例:`HL20260702232103376` +- 操作:点击某天行程右侧「询房」 +- 当前结果:右上角 toast 提示「复制失败,请手动选中复制」 + +## 后端当前口径 + +后端不需要新增接口。 + +询房话术仍使用既有 preview 能力: + +```http +POST /v3/admin/order/inquiry/preview +``` + +业务口径: + +- 询房已经简化为“复制话术”。 +- 不恢复记录式询房、询房历史、发起询房记录等已删除能力。 +- 前端点击「询房」时,应先拿 preview 返回的话术,再完成复制。 + +## 【前端 · 管理后台】需改动 + +### 1. 复制逻辑需兼容 HTTP 测试环境 + +当前测试前端是 `http://192.168.100.160:9527`,属于非安全源。浏览器可能拒绝 `navigator.clipboard.writeText`,导致自动复制失败。 + +前端需要在 Clipboard API 不可用或被拒绝时,提供可靠降级,例如: + +- 优先使用 `navigator.clipboard.writeText` +- 失败后降级到临时 `textarea` + `document.execCommand('copy')` +- 降级仍失败时,再提示用户手动复制,并展示可选中的话术内容 + +### 2. 不要把 Clipboard API 权限失败当成接口失败 + +需要区分两类错误: + +| 场景 | 期望提示 | +|------|----------| +| `/inquiry/preview` 接口失败或返回空话术 | 提示“生成询房话术失败”或等价接口错误 | +| preview 成功但浏览器拒绝复制 | 尝试降级复制;降级失败后提示“复制失败,请手动复制” | + +### 3. 复制内容为空要阻断 + +如果 preview 返回的文本为空、只有空白字符,前端不要执行复制,应提示话术为空或生成失败,避免误报“已复制”。 + +## 验收标准 + +| 场景 | 期望 | +|------|------| +| `http://192.168.100.160:9527/housekeeper/orders` 点击「询房」 | 能复制 preview 话术,不再误报复制失败 | +| Clipboard API 被浏览器拒绝 | 自动走降级复制 | +| preview 接口失败 | 显示接口/生成失败,不显示复制成功 | +| preview 返回空文本 | 不复制,提示话术为空或生成失败 | +| 降级复制仍失败 | 弹出或展示可手动选中的询房话术 | + +## 影响范围 + +| 页面/能力 | 说明 | +|-----------|------| +| `/housekeeper/orders` | 房务订单详情弹窗每日行程「询房」按钮 | +| `/v3/admin/order/inquiry/preview` | 仅作为现有话术生成接口使用,无后端改动 |