三亚奢牌酒店定制查询
用途
把「我想要安静一点、视野好、别太潮」这类说不清但很具体的偏好,变成能查、能比、能验证的推荐。
凭印象推荐三亚酒店是重灾区——同一个"海景房",可能是正对海面 11 层,也可能是 1 层看椰林。这个技能的全部价值在于:在给结论之前,先把模糊词翻译成数据能回答的问题。
何时使用
- 用户给出体验诉求而非人数:不潮、安静、私密、视野好、出片、酒吧好、孩子少、想下海
- 用户问「情侣/两个成年人去三亚住哪家」
- 用户列出 2 家以上酒店问选哪个(体验维度而非容量维度)
- 用户指定某家酒店问「哪个房型值得」
不适用:以人数/多卧/加床为核心的问题(如「4 大 3 小住哪家」「7 个人怎么配房」)——那是 hotel-compare-advisor 的活,那边有容量筛选流程。本技能遇到多卧需求时转交。
工作流
第 1 步:把诉求逐条翻译成硬指标
先把这张表在回复里列给用户看,让他确认理解一致,再往下走。 这一步能防住 80% 的推荐错误。
| 用户说法 | 硬指标 | 怎么查 |
|---|---|---|
| 奢牌 / 顶奢 | 梯队 顶奢+奢华 | --lux |
| 不潮 / 太湿 | 楼层 ≥2 | --no-ground |
| 安静 / 不被打扰 | 套房 + 非连通房 + 门禁 | 数据 + 外部核实 |
| 视野好 / 正面看海 | 海景命名分级 5 档 | --view-tier 5 |
| 孩子少 / 情侣 | 亲子房型占比 ≤10% + Adults Only | --list --sort kid + 官方 |
| 酒吧好 | 屋顶/DJ/成人专享 | 必须查官网餐饮页 |
| 想下海 | 海湾属性 | 海棠湾不行 |
完整对照表见 references/preference-mapping.md,里面还有十条最常踩的误判。
第 2 步:跑数据
python scripts/match.py --list --sort kid # 22 家亲子密度排名
python scripts/match.py --list --lux --sort kid # 只看顶奢+奢华
python scripts/match.py --hotel 艾迪逊 # 单店全房型 + 价格阶梯
python scripts/match.py --hotel 艾迪逊 --no-ground --view-tier 2
python scripts/match.py --match --lux --view-tier 5 --kid-max 10 --max-price 4000
python scripts/match.py --match --lux --view-tier 5 --json # 结构化输出,取全量
脚本自动读 data/rooms.json,也可用 --db 或环境变量 HOTEL_ROOM_DB 覆盖。路径写错会直接报错退出,不会静默回退到包内数据——查自定义库时尤其要留意这一点。
奢牌场景必加 --lux。 不加的话 --match 纯按价格排序,海棠湾红树林 ¥902、天域这类高端度假会排在最前面,而这里面一家奢牌都没有。
筛选顺序必须是:梯队 → 楼层 → 海景档 → 亲子密度 → 价格。 反过来先按价格筛,会得到一堆不符合体验要求的选项。
第 3 步:补外部核实
数据里没有的四件事,必须查:酒吧规格、海景覆盖率(全部 vs 百分之多少)、有没有阳台、亲子设施实况。
方法和信源分级见 references/verify-sources.md。A 级信源(官网原文)才能写成结论,点评不算。
各家已知的硬伤与隐藏条件见 references/luxury-quirks.md——柏悦多数房型无阳台、艾迪逊别墅是庭院景、文华东方加床无统一价,这些查数据查不出来。
第 4 步:按固定五段输出
① 一句话结论 —— 点名酒店 + 一句为什么。不要铺垫。
② 四条需求逐条对照 —— 每条都要落到数据或可核实事实。写「Sky Bar 位于 12 层、官方标注 Adults Only、营业至 24:00」,不写「酒吧氛围很好」。
③ 对比表 —— 至少含:海景覆盖率、阳台、遮挡风险、成人专享场所、亲子设施、私密性、能否下海、起价。「短板」一列不能空,这是可信度的来源。
④ 什么情况该换 —— 反向条件。写「如果你还想下海游泳,答案就换成 X,因为海棠湾浪大不能下水」。比单方面吹首推有用。
⑤ 数据口径 —— 价格是抓取期值、哪家没有本地数据、哪些事实是实测口径。
硬性规则
- 「起价」不等于推荐房型的价格。 艾迪逊起价 ¥2549 是 1 层园景房,真正正面观海 ¥2910。必须用
--hotel看价格阶梯,把「起价 / 能看海 / 正面海景 / 套房门槛」四个数字分开报。 - 不编房型。 数据库只有海棠湾 12 家 + 亚龙湾 10 家。柏悦、文华东方、保利瑰丽等没有本地数据,只能做定性判断,房型名/面积/价格一律让用户向酒店确认。
- 「XX% 客房是海景」和「全部客房是海景」不是一回事。 必须查到官方原文才敢下判断。
- 但官方原文也会和在售房型打架。 艾迪逊官方写 "All of the 501 guest rooms have ocean views",携程却在售 4 档 view 为「花园景」的园景房(¥2549–3630)。冲突时以在售房型为准:说「建筑全朝海,但必须指定正面观海房型」,不说「随便订都有海」。
- 「唯一 / 最强 / 全店都没有」这类最高级,没逐家查过就别写。 柏悦门禁严是核实的,「三亚唯一」不是。
- 「孩子少」要用亲子房型占比说话,且要补充说明该店有没有亲子设施——两者可能矛盾。
- 区分事实与实测口径。 楼层遮挡这类只有实测帖能回答,写「按实测帖」,不要写成官方结论。
- 易混酒店必须核对区域。 大东海 JW 万豪 ≠ 海棠湾 JW 万豪;亚龙湾红树林 ≠ 海棠湾红树林。
- 不确定就说不确定。 查不到就说查不到,这比给一个像模像样的错答案好。
输出示例(骨架)
结论:**<酒店>**,四项需求全中。
## 四条逐条对
1. **不潮** —— 全海景房型位于 5-11 层,1 层只有园景房,避开即可
2. **安静** —— 亲子房型占比 5%(全库 22 家最低,全库平均 21%)
3. **酒吧** —— Sky Bar 12 层顶楼,官方标注 Adults Only,营业至 24:00
4. **正面看海** —— 官方原文 501 间房全部海景、马蹄形建筑全朝海;但携程在售 4 档园景房,要指定「正面观海」才稳
| | A | B |
|---|---|---|
| 海景覆盖率 | 官方称 100%(但在售 4 档园景) | 80% |
| 阳台 | 部分有 | 仅少数「阳台海景房」 |
| 亲子设施 | 有,但房型仅 5% | 全套齐备 |
| 短板 | 房间正对私属水域 | 多数房型无阳台,低层遮挡 |
**什么情况该换**:想下海 → 换 B,海棠湾浪大不能下水。
**数据口径**:价格抓取于 <日期>;B 家本地无房型数据。
资源
scripts/match.py— 房型匹配引擎(梯队 / 亲子密度 / 楼层 / 海景分级 / 价格阶梯 / 跨店筛选)data/rooms.json— 22 家 537 档房型离线数据references/preference-mapping.md— 核心:软性诉求→硬指标翻译表 + 十条误判references/luxury-quirks.md— 各家硬伤、隐藏条件、覆盖边界、易混酒店references/verify-sources.md— 外部核实的信源分级与查询方法