@danceiny/gotry 0.0.1-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +267 -0
- package/bin/gotry-inner.js +214 -0
- package/bin/gotry-stdio-ask.js +59 -0
- package/bin/gotry.js +28 -0
- package/cordis.gotry-patch.yml +86 -0
- package/data/flights_2026.json +218 -0
- package/data/golden_erhai.json +92 -0
- package/data/golden_trip_2026.json +75 -0
- package/data/hotels_2026.json +151 -0
- package/data/openflights-skeleton.json +895 -0
- package/data/time-slot-eval.json +384 -0
- package/data/yunnan-pack.json +202 -0
- package/dist/capabilities/agent-reach-bridge.py +90 -0
- package/dist/capabilities/agent-reach-deep.js +172 -0
- package/dist/capabilities/agent-reach.js +204 -0
- package/dist/capabilities/anything.js +139 -0
- package/dist/capabilities/flyai.js +131 -0
- package/dist/capabilities/hbcli.js +143 -0
- package/dist/capabilities/incident-log.js +100 -0
- package/dist/capabilities/opensky.js +74 -0
- package/dist/capabilities/session/action-cache.js +120 -0
- package/dist/capabilities/session/adapters/ctrip-flight.js +83 -0
- package/dist/capabilities/session/adapters/meituan-local.js +73 -0
- package/dist/capabilities/session/extract.js +40 -0
- package/dist/capabilities/session/read-guard.js +99 -0
- package/dist/capabilities/session/transport.js +101 -0
- package/dist/capabilities/session-search.js +93 -0
- package/dist/capabilities/weather.js +180 -0
- package/dist/scripts/action-cache-tests.js +107 -0
- package/dist/scripts/agent-reach-deep-tests.js +54 -0
- package/dist/scripts/agent-reach-tests.js +38 -0
- package/dist/scripts/agent-reach-wrapper-tests.js +79 -0
- package/dist/scripts/anything-tests.js +95 -0
- package/dist/scripts/async-collect.js +37 -0
- package/dist/scripts/companion-tests.js +112 -0
- package/dist/scripts/diff-test.js +39 -0
- package/dist/scripts/engine-run.js +14 -0
- package/dist/scripts/engine-tests.js +45 -0
- package/dist/scripts/hbcli-tests.js +101 -0
- package/dist/scripts/incident-tests.js +96 -0
- package/dist/scripts/journey-tests.js +45 -0
- package/dist/scripts/ledger-tests.js +365 -0
- package/dist/scripts/ledger-workflow-crash.js +42 -0
- package/dist/scripts/memory-capture-tests.js +77 -0
- package/dist/scripts/memory-decay-tests.js +83 -0
- package/dist/scripts/memory-metrics.js +24 -0
- package/dist/scripts/nudge-digest.js +83 -0
- package/dist/scripts/opensky-check.js +20 -0
- package/dist/scripts/opensky-tests.js +52 -0
- package/dist/scripts/probe-poi-tests.js +88 -0
- package/dist/scripts/publish-preverify.js +68 -0
- package/dist/scripts/replay-async.js +44 -0
- package/dist/scripts/replay-real.js +38 -0
- package/dist/scripts/replay.js +116 -0
- package/dist/scripts/session-attach-diagnose.js +27 -0
- package/dist/scripts/session-attach-poc.js +65 -0
- package/dist/scripts/session-extract-tests.js +81 -0
- package/dist/scripts/session-tests.js +162 -0
- package/dist/scripts/skeleton-check.js +37 -0
- package/dist/scripts/skeleton-integration-test.js +22 -0
- package/dist/scripts/skills-contract-tests.js +85 -0
- package/dist/scripts/smoke.js +328 -0
- package/dist/scripts/state-cli-tests.js +136 -0
- package/dist/scripts/state-cli.js +248 -0
- package/dist/scripts/time-eval-tests.js +318 -0
- package/dist/scripts/travel-timeline-tests.js +123 -0
- package/dist/scripts/unified-tests.js +49 -0
- package/dist/scripts/weather-tests.js +48 -0
- package/dist/src/bridge.js +34 -0
- package/dist/src/companions.js +112 -0
- package/dist/src/contracts.js +64 -0
- package/dist/src/dsh-llm.js +174 -0
- package/dist/src/engine.js +331 -0
- package/dist/src/index.js +1239 -0
- package/dist/src/journey.js +147 -0
- package/dist/src/loop.js +360 -0
- package/dist/src/memory-capture.js +40 -0
- package/dist/src/memory-decay.js +31 -0
- package/dist/src/memory-utility.js +55 -0
- package/dist/src/mock-llm.js +103 -0
- package/dist/src/model.js +134 -0
- package/dist/src/slot-spec.js +165 -0
- package/dist/src/state-ledger.js +901 -0
- package/dist/src/time-anchor.js +100 -0
- package/dist/src/tool-packet.js +12 -0
- package/dist/src/travel-slots.js +144 -0
- package/dist/src/travel-timeline.js +78 -0
- package/dist/src/unified.js +538 -0
- package/dist/src/wish-pool.js +27 -0
- package/package.json +84 -0
- package/ts/capabilities/agent-reach-deep.ts +114 -0
- package/ts/capabilities/agent-reach.ts +158 -0
- package/ts/capabilities/anything.ts +201 -0
- package/ts/capabilities/flyai.ts +151 -0
- package/ts/capabilities/hbcli.ts +152 -0
- package/ts/capabilities/incident-log.ts +148 -0
- package/ts/capabilities/opensky.ts +121 -0
- package/ts/capabilities/session/action-cache.ts +148 -0
- package/ts/capabilities/session/adapters/ctrip-flight.ts +107 -0
- package/ts/capabilities/session/adapters/meituan-local.ts +70 -0
- package/ts/capabilities/session/extract.ts +54 -0
- package/ts/capabilities/session/read-guard.ts +141 -0
- package/ts/capabilities/session/transport.ts +114 -0
- package/ts/capabilities/session-search.ts +129 -0
- package/ts/capabilities/weather.ts +176 -0
- package/ts/package.json +27 -0
- package/ts/scripts/async-collect.ts +50 -0
- package/ts/scripts/skeleton-check.ts +49 -0
- package/ts/scripts/skeleton-integration-test.ts +23 -0
- package/ts/scripts/state-cli.ts +201 -0
- package/ts/src/bridge.ts +44 -0
- package/ts/src/companions.ts +113 -0
- package/ts/src/contracts.ts +165 -0
- package/ts/src/dsh-llm.ts +155 -0
- package/ts/src/index.ts +968 -0
- package/ts/src/loop.ts +411 -0
- package/ts/src/memory-capture.ts +59 -0
- package/ts/src/memory-decay.ts +55 -0
- package/ts/src/memory-utility.ts +70 -0
- package/ts/src/mock-llm.ts +100 -0
- package/ts/src/model.ts +220 -0
- package/ts/src/slot-spec.ts +172 -0
- package/ts/src/state-ledger.ts +849 -0
- package/ts/src/time-anchor.ts +134 -0
- package/ts/src/tool-packet.ts +32 -0
- package/ts/src/travel-slots.ts +219 -0
- package/ts/src/travel-timeline.ts +83 -0
- package/ts/src/unified.ts +582 -0
- package/ts/src/wish-pool.ts +66 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# GoTry × dsh 成品组合(DeepSeek 原生——创始人官方 key)
|
|
2
|
+
# 用法(在仓库根或 gotry 安装目录):
|
|
3
|
+
# DEEPSEEK_API_KEY=<key> dsh web --patch ./cordis.gotry-patch.yml
|
|
4
|
+
# (从 npm 安装: npx gotry web 自动应用本 patch)
|
|
5
|
+
- insert:
|
|
6
|
+
- id: gotry-tools
|
|
7
|
+
name: 'placeholder/ts/src/index.ts' # 占位:bin/gotry-inner.js 运行时
|
|
8
|
+
# 重写为按本包位置解析的绝对路径(repo 与 npm 安装均正确)
|
|
9
|
+
config:
|
|
10
|
+
stateRoot: '.'
|
|
11
|
+
timeoutMs: 30000
|
|
12
|
+
hbcliBin: 'hbcli'
|
|
13
|
+
- id: dsh-map-tools
|
|
14
|
+
name: 'placeholder/dsh-map-tools'
|
|
15
|
+
- id: dsh-calendar
|
|
16
|
+
name: 'placeholder/dsh-calendar'
|
|
17
|
+
# {ask-user-insert} ← inner 运行时填充(dsh-user-questions 服务 + ask_user_question
|
|
18
|
+
# 工具,结构化澄清卡);解析失败整块剔除
|
|
19
|
+
|
|
20
|
+
# 注:insert 里 dsh-map-tools 的 name 是占位符,bin/gotry-inner.js 运行时重写为
|
|
21
|
+
# 绝对路径(repo=vendored runtime;npm=依赖解析,裸包名绕 exports 子路径限制);
|
|
22
|
+
# 依赖缺失时该条目整块剔除,不挡启动。地图/路线/POI 工具,零 key 走 OSRM/OSRM。
|
|
23
|
+
|
|
24
|
+
# GoTry 成品人格:行为契约=产品语义
|
|
25
|
+
- id: system-prompt
|
|
26
|
+
config:
|
|
27
|
+
persona: >-
|
|
28
|
+
你是 GoTry——从出发到下一次出发的 AI 旅行伙伴(中国出境首发,workation 场景)。
|
|
29
|
+
今天是 {{current_date}}。时间锚点卡(相对日期换算的唯一依据,一律查卡不自算):
|
|
30
|
+
{{time_anchor_card}}
|
|
31
|
+
用户记忆 brief(空 = 首访,按 (1) 访谈;非空 = 回访——已答字段不重复问,
|
|
32
|
+
先引用画像再确认变化,冲突以用户当轮为准):
|
|
33
|
+
{{motivation_brief}}
|
|
34
|
+
行为契约:
|
|
35
|
+
(1)动机先行:首轮必问工作窗口(几点到几点/什么时区)与已订资源(航班/酒店);
|
|
36
|
+
(2)日历一次断言:日期换算以锚点卡为准并记住,冲突让用户裁决,永不重算;
|
|
37
|
+
(3)翻译不造数:班次/价格只来自工具(gotry_feasibility_check/gotry_skeleton_check/gotry_hotel_search);
|
|
38
|
+
(4)判定归引擎:可行性/全成本由工具计算,你只解释;
|
|
39
|
+
(5)待决=选择题:优先用 ask_user_question 工具发结构化选项(2-3 个带 trade-off,
|
|
40
|
+
web 界面渲染成卡片;该工具不可用或无响应时退化为文本选择题);
|
|
41
|
+
(6)憧憬不被拒绝:不可行进 gotry_wish_pool_add(带条件);
|
|
42
|
+
用户表达新的出行意图时,若时间/预算窗口可能命中已存憧憬,先调
|
|
43
|
+
gotry_wish_pool_list 查询再答——命中就用清单里的选项开场(它是用户自己许过的愿);
|
|
44
|
+
「下一次出发」建议一轮至多 surface 1 条(0..1 纪律),条件不命中就不硬推;
|
|
45
|
+
成效归因只能按用户明说的记(wish confirm-outcome),不许自评「有用」;
|
|
46
|
+
(7)证据链:引用工具返回的标注([骨架:openflights]/[实时API:hbcli]/[静态包:估算])。
|
|
47
|
+
(8)时间感知:以锚点卡的今天为锚点——已过的月份不说「将」,当下所在的季节
|
|
48
|
+
直接点明(如「现在正是雨季」而非把当前月份当成远期选项);用户给的绝对日期
|
|
49
|
+
早于今天时,主动点明已过并请用户裁决(笔误还是指明年),不静默顺延;
|
|
50
|
+
周/月/节日表述一律按锚点卡换算,不自算;用户说「在 X 年内完成」时,
|
|
51
|
+
只推荐今天之后的时段,今天之前的一律排除。
|
|
52
|
+
(9)年界断言:「元旦/新年/春节」先断年再谈——今天是 {{current_date}},
|
|
53
|
+
「2026 年内」不含 2027-01-01 元旦;农历节日先换算公历日期再判断归属年份。
|
|
54
|
+
(10)不重复问:预算/日期/窗口/出发地等已问过或用户已给的信息,会话内
|
|
55
|
+
永不重复询问;缺信息先查已有上下文,再决定是否发问。
|
|
56
|
+
(11)零示例泄漏:工具参数里的示例值只是格式占位,不是推荐目的地;
|
|
57
|
+
用户没提过的地点永不主动引入。
|
|
58
|
+
(12)术语不猜:不认识的术语/缩写(如 IRW)直接问用户含义或用工具查,
|
|
59
|
+
绝不假装理解、绝不编造解释。
|
|
60
|
+
(13)外部事实先查工具:价格/班次/政策/新闻等实时或外部事实,
|
|
61
|
+
一律先调工具,不凭记忆作答。
|
|
62
|
+
(14)数据源路由:通用外部事实/内容平台(网页/社媒/行情/视频/播客)优先
|
|
63
|
+
gotry_agent_reach(上游全渠道,不许自行降级跳过);酒店与目的地库存才走
|
|
64
|
+
gotry_hotel_search / gotry_anything_search;天气/航班用专用工具。
|
|
65
|
+
(15)渠道 setup 协助:agent-reach 渠道返回 needs-setup 不是终点——把上游
|
|
66
|
+
配置命令原样给用户(如 agent-reach configure --from-browser chrome
|
|
67
|
+
--platform <渠道>),说明配好后你会复检,并主动提出下一步;绝不就此放弃该渠道。
|
|
68
|
+
(16)域边界(宿主 skill 共存):旅行规划/目的地/行程/预算规划永远是 gotry 的
|
|
69
|
+
工具链,绝不因关键词(差旅/年假/IRW)路由进宿主其他 skill(如 cis-cli);
|
|
70
|
+
只有用户明确要查公司系统(假期余额/出差订单/报销审批)时才调对应 skill;
|
|
71
|
+
交界场景(用年假去旅行)分两步——余额查询归公司 skill,去哪/怎么去归 gotry。
|
|
72
|
+
(17)判定前背景调查:给可行性结论前,先对每个候选目的地取气候背景
|
|
73
|
+
(gotry_weather_check 的 climate 模式);季节性/天气论断必须带
|
|
74
|
+
[实时API:open-meteo@ts] 证据,没查过就不写天气相关理由。
|
|
75
|
+
(18)动态吸收与开放性选题:对话中用户透露的新事实(动机/约束/偏好/
|
|
76
|
+
已订资源/实际经历)当轮即并入动机画像(gotry_motivation_save,
|
|
77
|
+
evidence=用户原话),不等确认;班次/房型/落脚点等开放性选择不外问
|
|
78
|
+
用户——基于已知动机与约束给出最有说服力的方案并说明理由,用户否决
|
|
79
|
+
才改。校准类疑问永不阻塞推进。
|
|
80
|
+
(19)实时价与班期三级路由:机票/火车班次与票价先 gotry_flyai_search
|
|
81
|
+
(飞猪官方只读,主链路);关键决策(临近下单/价差存疑)再用
|
|
82
|
+
gotry_session_search 在用户本人登录态交叉验证,直达/中转分桶比对,
|
|
83
|
+
不比裸最低价;两源皆不可用退静态包并显式标 [静态包:估算]。
|
|
84
|
+
会话工具返回 needs-login→请用户跑 scripts/session-login.ts 并
|
|
85
|
+
继续用官方源推进;返回 challenged→立即停手如实告知,绝不重试
|
|
86
|
+
绝不绕过。[会话:*] 证据链随结论必达用户。
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"note": "静态数据包(P0-3):公开渠道调研的真实班期;价格为估算区间标记,非实时报价(真实 API 属 T3)。日期为 2026-07/08 重放场景。",
|
|
4
|
+
"sources": [
|
|
5
|
+
"阿联酋航空官网-深圳迪拜航线: EK329 SZX 00:45 → DXB 04:20(每日,B777);EK328 DXB 11:00 → SZX 22:40",
|
|
6
|
+
"新华网 2025-07-01:阿联酋航空开通深圳直飞迪拜(开航时刻 23:55→03:40,后调整为 00:45→04:20)",
|
|
7
|
+
"携程/国泰时刻表: CX771 HKG 08:05→HKT 10:50;CX773 HKG 14:45→HKT 17:20;香港航空 HX741 约 20:20→23:05(有取消记录,出行前需确认)"
|
|
8
|
+
],
|
|
9
|
+
"roundtrip_note": "7.17 22:40 落地深圳与 EK328(DXB 11:00→SZX 22:40)完全吻合——发起人入境段即该航线,demo 与真实对账的第一处交叉验证",
|
|
10
|
+
"work_window": {
|
|
11
|
+
"note": "M-1:发起人工作时间(家=迪拜 UTC+4)10:00-19:00,周一至周五",
|
|
12
|
+
"home_tz_offset_min": 240,
|
|
13
|
+
"start_min": 600,
|
|
14
|
+
"end_min": 1140,
|
|
15
|
+
"workdays": [
|
|
16
|
+
0,
|
|
17
|
+
1,
|
|
18
|
+
2,
|
|
19
|
+
3,
|
|
20
|
+
4
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"reconcil": [
|
|
24
|
+
"f3 真实:8.4 周二 FD582 DMK 08:10→KMG 11:25 + 昆明转飞丽江(Kimi 终轮四方案对比后采纳)",
|
|
25
|
+
"f2 起点真实:8.1 从甲米(奥南)出发,周末换防模式:Rawai 7.18-8.1 主基地 + 8.1-3 奥南 2 晚 + 8.7-9 奥南 2 晚(共 3 晚)",
|
|
26
|
+
"住宿模式:Rawai 拉威基地 7.18-8.1,周末甲米换防 2 段(非整体搬迁);demo 主基地+中途换防结构命中",
|
|
27
|
+
"f2 起点真实:8.1 从甲米 KBV 机场出发(不是 HKT)——周末换防 7.31 普吉→甲米,2 晚奥南,8.3 甲米→曼谷(从 KBV 飞,不是本 leg 的 HKT→DMK)",
|
|
28
|
+
"auto-guess 2026-08-24 吸收:f1=HX741 20:20 / f4-SZX≈22:00 / EK329→家 1.5h(docs/decisions-needed.md D-2 auto-guess 块,founder 校正任意行即改)",
|
|
29
|
+
"f1 真值(founder 2026-08-26):实际乘 ~16:xx 起飞班次(非 CX773 14:45 也非 HX741 20:20),23:00 落地 HKT;13:xx 办完事地铁赴港机正合适。教训:班次=开放性选题,agent 以合理说服选案即可,不应外问",
|
|
30
|
+
"f4 真值(founder 2026-08-26):实际昆明→珠海(动机:没去过,想待半天),因行李不便落地后不久坐顺风车返深圳——auto-guess 的『昆明→深圳直飞 22:00 到』路线错误",
|
|
31
|
+
"EK329 后真值(founder 2026-08-26):深圳无住所;当晚办完通行证事务已晚,按摩店过夜(按摩+过夜比酒店划算且舒服)——auto-guess 的『到家 1.5h』前提(有家)不成立"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
"legs": [
|
|
35
|
+
{
|
|
36
|
+
"id": "f1",
|
|
37
|
+
"note": "7.18 香港办证后飞普吉,当天与女朋友会合",
|
|
38
|
+
"date": "2026-07-18",
|
|
39
|
+
"services": [
|
|
40
|
+
{
|
|
41
|
+
"id": "CX773",
|
|
42
|
+
"dep": "14:45",
|
|
43
|
+
"arr": "17:20",
|
|
44
|
+
"price_cny": 2300,
|
|
45
|
+
"price_note": "7 月旺季经济舱估算"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "HX741",
|
|
49
|
+
"dep": "20:20",
|
|
50
|
+
"arr": "23:05",
|
|
51
|
+
"price_cny": 1600,
|
|
52
|
+
"price_note": "低价备选;准点率弱于国泰"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"buffer_min": 90,
|
|
56
|
+
"origin_transfer_min": 60,
|
|
57
|
+
"dest_transfer_min": 45,
|
|
58
|
+
"arrive_by": "23:59",
|
|
59
|
+
"anchors_note": "办证预计 12:00 前完成:CX773 需 12:15 离开港岛(满打满算);HX741 需 18:50 前",
|
|
60
|
+
"origin_tz_offset_min": 480,
|
|
61
|
+
"evidence": [
|
|
62
|
+
{
|
|
63
|
+
"tag": "[auto-guess:2026-08-24]",
|
|
64
|
+
"note": "f1 实际=HX741 20:20(晚班;Kimi 7.18 当天飞+早高峰,CX773 12:15 过紧)—founder 校正即改【已校正 2026-08-26,真值见 meta.reconcil】"
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "f5",
|
|
70
|
+
"note": "8.10 凌晨红眼回迪拜,落地直奔办公室(真实锚点)",
|
|
71
|
+
"date": "2026-08-10",
|
|
72
|
+
"services": [
|
|
73
|
+
{
|
|
74
|
+
"id": "EK329",
|
|
75
|
+
"dep": "00:45",
|
|
76
|
+
"arr": "04:20",
|
|
77
|
+
"price_cny": 3400,
|
|
78
|
+
"price_note": "单程估算;往返约 ¥3825 起"
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"buffer_min": 120,
|
|
82
|
+
"origin_transfer_min": 60,
|
|
83
|
+
"dest_transfer_min": 45,
|
|
84
|
+
"arrive_by": "08:30",
|
|
85
|
+
"red_eye": true,
|
|
86
|
+
"red_eye_duration_min": 455,
|
|
87
|
+
"anchors_note": "8.9 22:45 离开住处即可;DXB 04:20 落地,09:00 上班前余量 4.5h;时差迪拜 -4h",
|
|
88
|
+
"tz_offset_min": -240,
|
|
89
|
+
"origin_tz_offset_min": 480,
|
|
90
|
+
"evidence": [
|
|
91
|
+
{
|
|
92
|
+
"tag": "[auto-guess:2026-08-24]",
|
|
93
|
+
"note": "EK329 落地→躺床上≈1.5h(SZX→南山车程;D-6 精力模型落地端附加 1.5h 口径)—founder 校正即改【已校正 2026-08-26,真值见 meta.reconcil】"
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"id": "f2",
|
|
99
|
+
"note": "普吉→曼谷度周末(gate q3:7.31 周五晚 vs 8.1 周六早,引擎双选项都保留)",
|
|
100
|
+
"date": "2026-07-31 或 08-01",
|
|
101
|
+
"services": [
|
|
102
|
+
{
|
|
103
|
+
"id": "VZ303",
|
|
104
|
+
"dep": "09:00",
|
|
105
|
+
"arr": "10:30",
|
|
106
|
+
"price_cny": 350,
|
|
107
|
+
"price_note": "泰越捷,行李另购",
|
|
108
|
+
"weekday": "sat"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "TG216",
|
|
112
|
+
"dep": "16:55",
|
|
113
|
+
"arr": "18:25",
|
|
114
|
+
"price_cny": 750,
|
|
115
|
+
"price_note": "周五晚班,最大化周末",
|
|
116
|
+
"weekday": "fri"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"id": "TG218",
|
|
120
|
+
"dep": "19:15",
|
|
121
|
+
"arr": "20:50",
|
|
122
|
+
"price_cny": 800,
|
|
123
|
+
"price_note": "周五最晚班",
|
|
124
|
+
"weekday": "fri"
|
|
125
|
+
}
|
|
126
|
+
],
|
|
127
|
+
"buffer_min": 75,
|
|
128
|
+
"origin_transfer_min": 45,
|
|
129
|
+
"dest_transfer_min": 60,
|
|
130
|
+
"arrive_by": "21:30",
|
|
131
|
+
"anchors_note": "HKT→BKK 每天约 15 班(泰航 5-7 + 泰越捷 8 + 曼航/亚航),频次极高;此处只列代表性班次",
|
|
132
|
+
"origin_tz_offset_min": 420,
|
|
133
|
+
"evidence": [
|
|
134
|
+
{
|
|
135
|
+
"tag": "[demo-reconcil:已]",
|
|
136
|
+
"note": "真实 8.1 从甲米(奥南)出发:7.31 普吉→甲米短驳 + 8.3 甲米→曼谷(本腿的 VZ303 8.1 选项在甲米机场 KBV 出发,不是 HKT)。Demo 数据包按\"普吉→曼谷\"标注为抽象段;M-2 reconcile 时 f2 起点切 KBV"
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"id": "f3",
|
|
142
|
+
"note": "曼谷→昆明,云南一周开始(8.3 周日 MU6088 demo 备选 / 8.4 周二 FD582 真实选)",
|
|
143
|
+
"date": "2026-08-02 或 08-03",
|
|
144
|
+
"services": [
|
|
145
|
+
{
|
|
146
|
+
"id": "MU9622",
|
|
147
|
+
"dep": "07:50",
|
|
148
|
+
"arr": "11:15",
|
|
149
|
+
"price_cny": 1100,
|
|
150
|
+
"price_note": "到达为北京时间(泰国慢 1h)"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"id": "MU6088",
|
|
154
|
+
"dep": "13:20",
|
|
155
|
+
"arr": "16:50",
|
|
156
|
+
"price_cny": 950,
|
|
157
|
+
"price_note": "午后班,周末收尾从容"
|
|
158
|
+
}
|
|
159
|
+
],
|
|
160
|
+
"buffer_min": 120,
|
|
161
|
+
"origin_transfer_min": 60,
|
|
162
|
+
"dest_transfer_min": 45,
|
|
163
|
+
"arrive_by": "18:00",
|
|
164
|
+
"anchors_note": "BKK→KMG 每天约 6 班,飞行约 2h25m + 时差 1h",
|
|
165
|
+
"tz_offset_min": 60,
|
|
166
|
+
"origin_tz_offset_min": 420,
|
|
167
|
+
"evidence": [
|
|
168
|
+
{
|
|
169
|
+
"tag": "[demo-reconcil:已]",
|
|
170
|
+
"note": "8.4 周二 FD582 DMK 08:10→KMG 11:25 + KMG 转飞丽江(已挖,对话第 12 轮)"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"tag": "[demo-reconcil:已]",
|
|
174
|
+
"note": "8.4 FD582 DMK 08:10→KMG 11:25 是真实选择(demo 8.3 MU6088 是备选);但 journey 求解器当前仅用 f3 services 内的 data,FD582 改后触发 journey §3 回归(DZ6252 选深夜班)。FD582 真实值移到 flights_2026.json 的 meta 备查 + yunnan-pack 的 yn0 衔接仍写,引擎层不挂接直至 f4 真值校准(M4 待 founder 答 4 题)"
|
|
175
|
+
}
|
|
176
|
+
]
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"id": "f4",
|
|
180
|
+
"note": "昆明→深圳,衔接 8.10 凌晨红眼(EK329 需 ~22:45 前到 SZX 值机)",
|
|
181
|
+
"date": "2026-08-09",
|
|
182
|
+
"services": [
|
|
183
|
+
{
|
|
184
|
+
"id": "ZH9108",
|
|
185
|
+
"dep": "09:05",
|
|
186
|
+
"arr": "11:20",
|
|
187
|
+
"price_cny": 1150,
|
|
188
|
+
"price_note": "早班,深圳白天还能休整"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"id": "MU5233",
|
|
192
|
+
"dep": "16:20",
|
|
193
|
+
"arr": "18:35",
|
|
194
|
+
"price_cny": 980,
|
|
195
|
+
"price_note": "午后班"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"id": "DZ6252",
|
|
199
|
+
"dep": "22:40",
|
|
200
|
+
"arr": "01:20",
|
|
201
|
+
"price_cny": 700,
|
|
202
|
+
"price_note": "深夜班——到达晚于红眼值机截止,应被引擎的 arrive_by 锚点排除"
|
|
203
|
+
}
|
|
204
|
+
],
|
|
205
|
+
"buffer_min": 90,
|
|
206
|
+
"origin_transfer_min": 60,
|
|
207
|
+
"dest_transfer_min": 0,
|
|
208
|
+
"anchors_note": "KMG→SZX 每天约 16 班(06:55-23:00),约 2h15m;深夜班是负例,验证锚点排除能力",
|
|
209
|
+
"origin_tz_offset_min": 480,
|
|
210
|
+
"evidence": [
|
|
211
|
+
{
|
|
212
|
+
"tag": "[auto-guess:2026-08-24]",
|
|
213
|
+
"note": "f4 实际到达 SZX≈22:00(MU6088/DZ6252 中间值,给 EK329 红眼留 4h 缓冲)—founder 校正即改【已校正 2026-08-26,真值见 meta.reconcil】"
|
|
214
|
+
}
|
|
215
|
+
]
|
|
216
|
+
}
|
|
217
|
+
]
|
|
218
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"request": {
|
|
3
|
+
"note": "想去这儿(素材:一张大理洱海的照片,湖边什么都不干的感觉)",
|
|
4
|
+
"home": {
|
|
5
|
+
"city": "上海",
|
|
6
|
+
"hubs": {
|
|
7
|
+
"PVG": { "to_hub_min": 90 },
|
|
8
|
+
"Hongqiao": { "to_hub_min": 40 }
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"motivation": {
|
|
12
|
+
"weights": { "escape_rest": 0.7, "curiosity": 0.3 },
|
|
13
|
+
"hard": { "wake_not_before": "06:30", "min_arrival_energy_pct": 40 }
|
|
14
|
+
},
|
|
15
|
+
"window_days": 2,
|
|
16
|
+
"budget_cny": 3000
|
|
17
|
+
},
|
|
18
|
+
"candidates": [
|
|
19
|
+
{
|
|
20
|
+
"id": "dali",
|
|
21
|
+
"name": "大理·洱海",
|
|
22
|
+
"hub": "PVG",
|
|
23
|
+
"buffer_out_min": 90,
|
|
24
|
+
"buffer_ret_min": 90,
|
|
25
|
+
"services_out": [
|
|
26
|
+
{ "id": "MU9712", "dep": "07:50", "arr": "12:20", "price_cny": 980 },
|
|
27
|
+
{ "id": "MU9714", "dep": "11:30", "arr": "16:05", "price_cny": 1180 }
|
|
28
|
+
],
|
|
29
|
+
"services_ret": [
|
|
30
|
+
{ "id": "MU9713", "dep": "13:40", "arr": "17:10", "price_cny": 890 },
|
|
31
|
+
{ "id": "MU9715", "dep": "17:20", "arr": "20:45", "price_cny": 950 }
|
|
32
|
+
],
|
|
33
|
+
"dest_transfers": [
|
|
34
|
+
{ "mode": "taxi", "min": 75, "price_cny": 120 },
|
|
35
|
+
{ "mode": "bus_plus_taxi", "min": 105, "price_cny": 40 }
|
|
36
|
+
],
|
|
37
|
+
"stay_cny_per_night": 450,
|
|
38
|
+
"local_daily_cny": 200,
|
|
39
|
+
"min_days_for_purpose": 5,
|
|
40
|
+
"imagery_match": 0.95,
|
|
41
|
+
"best_months": [3, 4, 5, 9, 10, 11]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "qiandao",
|
|
45
|
+
"name": "千岛湖",
|
|
46
|
+
"hub": "Hongqiao",
|
|
47
|
+
"buffer_out_min": 20,
|
|
48
|
+
"buffer_ret_min": 20,
|
|
49
|
+
"services_out": [
|
|
50
|
+
{ "id": "G7315", "dep": "07:35", "arr": "09:47", "price_cny": 120 },
|
|
51
|
+
{ "id": "G7481", "dep": "08:53", "arr": "11:02", "price_cny": 126 }
|
|
52
|
+
],
|
|
53
|
+
"services_ret": [
|
|
54
|
+
{ "id": "G7482", "dep": "16:36", "arr": "18:52", "price_cny": 126 },
|
|
55
|
+
{ "id": "G7316", "dep": "18:40", "arr": "20:58", "price_cny": 120 }
|
|
56
|
+
],
|
|
57
|
+
"dest_transfers": [
|
|
58
|
+
{ "mode": "taxi", "min": 25, "price_cny": 30 },
|
|
59
|
+
{ "mode": "bus", "min": 40, "price_cny": 8 }
|
|
60
|
+
],
|
|
61
|
+
"stay_cny_per_night": 380,
|
|
62
|
+
"local_daily_cny": 180,
|
|
63
|
+
"min_days_for_purpose": 2,
|
|
64
|
+
"imagery_match": 0.8,
|
|
65
|
+
"best_months": [4, 5, 9, 10]
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"id": "taihu",
|
|
69
|
+
"name": "苏州·太湖",
|
|
70
|
+
"hub": "Hongqiao",
|
|
71
|
+
"buffer_out_min": 20,
|
|
72
|
+
"buffer_ret_min": 20,
|
|
73
|
+
"services_out": [
|
|
74
|
+
{ "id": "G101", "dep": "08:12", "arr": "08:47", "price_cny": 42 },
|
|
75
|
+
{ "id": "G103", "dep": "09:05", "arr": "09:41", "price_cny": 42 }
|
|
76
|
+
],
|
|
77
|
+
"services_ret": [
|
|
78
|
+
{ "id": "G110", "dep": "17:22", "arr": "18:05", "price_cny": 42 },
|
|
79
|
+
{ "id": "G112", "dep": "19:10", "arr": "19:55", "price_cny": 42 }
|
|
80
|
+
],
|
|
81
|
+
"dest_transfers": [
|
|
82
|
+
{ "mode": "taxi", "min": 35, "price_cny": 45 },
|
|
83
|
+
{ "mode": "bus", "min": 55, "price_cny": 6 }
|
|
84
|
+
],
|
|
85
|
+
"stay_cny_per_night": 320,
|
|
86
|
+
"local_daily_cny": 150,
|
|
87
|
+
"min_days_for_purpose": 2,
|
|
88
|
+
"imagery_match": 0.6,
|
|
89
|
+
"best_months": [4, 5, 9, 10]
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"case": "gotry-demo-1:普吉岛 workation 多段行程(真实任务重放,2026-07/08)",
|
|
4
|
+
"note": "日期为 2026 年(已过去):这是重放评测用例,发起人知道真实答案,用于对账。2026-07-17 是周五、08-01 是周六、08-09 是周日、08-10 是周一。",
|
|
5
|
+
"source_brief": "7.17周五22:40落地深圳;7.18早上去香港办银行开户&保险签约;争取7.18当天飞泰国普吉岛,跟女朋友在普吉岛见面;在普吉岛和附近(对岸有个万xx的海边小城听说也不错)待两周,居家办公,女朋友潜水出海;周五晚或周六早到曼谷,周末在曼谷;周日或周一飞昆明,云南玩一周(请假);8.9赶到深圳,8.10周一凌晨(周日晚)从深圳起飞,周一上班前到迪拜(机场回来直接上班)。请做机票和酒店的行程规划和推荐。"
|
|
6
|
+
},
|
|
7
|
+
"traveler": {
|
|
8
|
+
"home_base": "迪拜(工作地);中国护照",
|
|
9
|
+
"profile_notes": "远程办公者(workation);女朋友先在普吉岛;请假期=云南一周",
|
|
10
|
+
"motivation": {
|
|
11
|
+
"weights": { "relationship": 0.35, "work_efficiency": 0.25, "curiosity": 0.2, "instrumental": 0.2 },
|
|
12
|
+
"taxonomy_note": "复合动机:关系陪伴(与女朋友会合)+ workation 工作效率 + 云南探索 + 工具性目标(香港办证)。instrumental 子目标不进动机谱系,固化为硬锚点(legs.hard_anchors)。"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"hard_anchors": [
|
|
16
|
+
{ "id": "a1", "time": "2026-07-17T22:40", "place": "深圳宝安国际机场(T1/T2 待确认)", "event": "航班落地", "note": "上游航段不在本规划范围" },
|
|
17
|
+
{ "id": "a2", "time": "2026-07-18 上午(银行营业 09:00-12:00 区间)", "place": "香港", "event": "银行开户 + 保险签约", "note": "时效型事务:决定 7.18 必须一早过境;开户通常需 1-3 小时,签约可能同网点" },
|
|
18
|
+
{ "id": "a3", "time": "2026-07-18 晚间", "place": "普吉岛(HKT)", "event": "与女朋友会合", "note": "争取当天飞;软锚点,若不可行则 7.19 早班(但损耗一天 workation)" },
|
|
19
|
+
{ "id": "a4", "time": "2026-07-31(周五)晚 或 2026-08-01(周六)早", "place": "曼谷", "event": "抵达曼谷度周末", "note": "08-01 是周六;周五晚出发可最大化周末" },
|
|
20
|
+
{ "id": "a5", "time": "2026-08-02(周日) 或 08-03(周一)", "place": "昆明(KMG)", "event": "飞抵昆明,云南一周开始", "note": "请假周 8.3-8.9" },
|
|
21
|
+
{ "id": "a6", "time": "2026-08-09(周日) 全天", "place": "深圳", "event": "必须赶到深圳", "note": "云南→深圳当日航段;需为凌晨红眼留接驳余量" },
|
|
22
|
+
{ "id": "a7", "time": "2026-08-09 深夜 ~ 08-10 凌晨起飞,08-10 周一 06:00 前落地", "place": "深圳 → 迪拜(DXB)", "event": "红眼航班,落地直奔办公室(09:00 前到岗)", "note": "全成本红旗:整段旅行的『充电』以最大生物钟破坏收尾;引擎职责是把代价摆上桌(当日精力预估),不是禁止" }
|
|
23
|
+
],
|
|
24
|
+
"stay_blocks": [
|
|
25
|
+
{
|
|
26
|
+
"id": "s1", "place": "香港/深圳边境侧", "nights": 1,
|
|
27
|
+
"window": "7.17 深夜 - 7.18 清晨过境",
|
|
28
|
+
"requirements": ["落地 22:40 后可达", "靠近口岸(福田/深圳湾)", "极早退房或行李寄存"],
|
|
29
|
+
"note": "落地太晚,多数口岸已关或即将关闭;宿深圳口岸侧最稳"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "s2", "place": "普吉岛(+对岸『万xx』海边小城,候选:考拉克 Khao Lak / 甲米·奥南 Krabi-Ao Nang / 董里 Trang)", "nights": 13,
|
|
33
|
+
"window": "7.18 - 7.31(约两周,7.20-7.31 含 10 个工作日)",
|
|
34
|
+
"requirements": [
|
|
35
|
+
"workstation 级住宿:稳定 WiFi(≥50Mbps/低延迟)、书桌、安静、可长住(服务式公寓/公寓式酒店优于酒店)",
|
|
36
|
+
"女朋友出海便利:靠近潜店码头(Chalong/查龙一带或奥南)",
|
|
37
|
+
"长住价格谈断(14 晚连住折扣)",
|
|
38
|
+
"『万xx』为模糊引用:素材是憧憬表达式,候选地待研究阶段以 workation+潜水双需求打分裁决"
|
|
39
|
+
],
|
|
40
|
+
"note": "workation 是本行程的最大住宿决策:按『办公室』标准而非『度假房』标准选"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "s3", "place": "曼谷", "nights": 2,
|
|
44
|
+
"window": "8.1(或 7.31 晚)- 8.2/8.3",
|
|
45
|
+
"requirements": ["周末生活圈(BTS 沿线/Sukhumvit/暹罗)", "近地铁站", "退房时间衔接周日或周一航班"]
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "s4", "place": "云南(昆明起始,一周环线)", "nights": 6,
|
|
49
|
+
"window": "8.3 - 8.9",
|
|
50
|
+
"requirements": ["请假周纯旅行:昆明为航点,环线候选(大理/丽江/香格里拉)由动机『curiosity+关系』裁决", "8.9 需回到昆明机场飞深圳(或环线终点直飞)"],
|
|
51
|
+
"note": "此段是全行程唯一的『纯休整/探索』段——动机权重在此最高"
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
"flight_legs": [
|
|
55
|
+
{ "id": "f1", "from": "香港 HKG", "to": "普吉 HKT", "date": "2026-07-18", "pattern": "午后/傍晚直飞(约 3h10m-3h40m);办证完成后口岸→机场接驳约 60-90min", "open": "直飞 vs 经 BKK 中转;当天达是软锚点" },
|
|
56
|
+
{ "id": "f2", "from": "普吉 HKT(或万xx候选地机场如 KBV 甲米)", "to": "曼谷 BKK/DMK", "date": "2026-07-31 晚 或 08-01 早", "pattern": "高频短途(1h25m),周五晚班或周六首班", "open": "出发机场取决于 s2 的最终选址" },
|
|
57
|
+
{ "id": "f3", "from": "曼谷 BKK", "to": "昆明 KMG", "date": "2026-08-02 或 08-03", "pattern": "直飞约 2h30m(泰航/东航/昆航等);周日班衔接周末,周一班衔接工作日心态" },
|
|
58
|
+
{ "id": "f4", "from": "昆明 KMG(或云南环线机场)", "to": "深圳 SZX", "date": "2026-08-09", "pattern": "白天直飞约 2h;需为 a7 红眼留接驳与休整余量" },
|
|
59
|
+
{ "id": "f5", "from": "深圳 SZX", "to": "迪拜 DXB", "date": "2026-08-09 深夜(~23:00-01:00 起飞)", "pattern": "红眼直飞约 8h30m,08-10 清晨落地;『机场回来直接去上班』" }
|
|
60
|
+
],
|
|
61
|
+
"constraints": {
|
|
62
|
+
"budget": null,
|
|
63
|
+
"budget_note": "未提供——demo 应输出分层预算(经济/舒适/便利三档)而不是替用户猜",
|
|
64
|
+
"documents": ["中国护照;泰国免签时限需确认(2026 政策)", "香港办证所需材料不在引擎范围,列为前置检查项"],
|
|
65
|
+
"work": ["7.20-7.31 为远程工作日(10 个),每天需要 workstation 与会议静音环境"],
|
|
66
|
+
"energy_red_flags": ["a7 红眼+直奔办公室:落地精力预估 <40%,当日不宜安排重要会议(全成本模型的招牌场景)"]
|
|
67
|
+
},
|
|
68
|
+
"open_questions": [
|
|
69
|
+
{ "id": "q1", "q": "『万xx』海边小城是哪?(素材模糊引用)", "candidates": ["Khao Lak 考拉克", "Krabi/Ao Nang 甲米·奥南", "Trang 董里"], "resolve_by": "研究阶段:以 workation 质量 + 潜水便利双维度打分" },
|
|
70
|
+
{ "id": "q2", "q": "预算档位?", "options": ["经济", "舒适", "便利优先"], "resolve_by": "回访选择题(gate)" },
|
|
71
|
+
{ "id": "q3", "q": "7.31 晚走还是 8.1 早走去曼谷?", "options": ["周五晚(最大化周末,但终结 workation 傍晚)", "周六早(多一夜普吉)"], "resolve_by": "回访选择题(gate)" },
|
|
72
|
+
{ "id": "q4", "q": "云南环线选向(大理/丽江/香格里拉组合)?", "resolve_by": "研究阶段+动机匹配" }
|
|
73
|
+
],
|
|
74
|
+
"engine_status": "本用例为 multi-leg 扩展的需求输入:当前引擎(单 leg×候选)不足以直接求解,leg 链/跨日/串联全成本核算为 P0 第二项"
|
|
75
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"note": "四个住宿块的价格档(经济/舒适/便利),公开渠道估算,非实时报价。workation 块按『办公室标准』建模。短住场景块(如 dali-short)为公开渠道均价锚定的估算,证据链标 [静态包:估算]。",
|
|
4
|
+
"sources": [
|
|
5
|
+
"HOMA/PropertyScout:查龙服务式公寓月租 27,720-165,000 THB;本地公寓 5,000-10,000 THB/月(6-12 月约)",
|
|
6
|
+
"Expedia/Airbnb:卡塔/卡伦公寓 $18-25/晚起;两周连住议价空间 20-30%",
|
|
7
|
+
"Reddit 数字游民:普吉『工作+海滩』区域排名 Rawai/查龙/普吉老城/卡塔卡伦;查龙骑摩托出行方便、租金更低",
|
|
8
|
+
"Trip.com:曼谷周末三星约 RM388(≈¥240)/晚,四星约 RM765(≈¥528)/晚",
|
|
9
|
+
"Booking:大理短租均价 ¥408/晚,淡季包周民宿 ¥1,000-2,500;丽江月租淡季 ¥1,500/月",
|
|
10
|
+
"携程:深圳机场雅斯特(免费接送机)¥218 起;航站楼内凯悦系人均 ¥150 起;乐港计时休息室 ¥283 起"
|
|
11
|
+
],
|
|
12
|
+
"key_finding": "查龙(Chalong)同时是数字游民聚集区与潜水出海主码头——发起人 workation 与女朋友潜水的双需求在同一点交汇,是 s2 基地的首选;『万xx』候选(考拉克/甲米奥南/董里)作为中途换防的备选而非主基地"
|
|
13
|
+
},
|
|
14
|
+
"stays": [
|
|
15
|
+
{
|
|
16
|
+
"id": "s1",
|
|
17
|
+
"note": "7.17 深夜落地后的过夜(次日一早过境香港)",
|
|
18
|
+
"nights": 1,
|
|
19
|
+
"options": [
|
|
20
|
+
{
|
|
21
|
+
"tier": "经济",
|
|
22
|
+
"name": "雅斯特国际酒店(深圳机场 T3 店)",
|
|
23
|
+
"price_cny": 218,
|
|
24
|
+
"why": "免费接送机;但次日需先回市区再过境"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"tier": "便利",
|
|
28
|
+
"name": "福田口岸侧连锁酒店",
|
|
29
|
+
"price_cny": 320,
|
|
30
|
+
"why": "落地后打车约 1h ¥120;清晨 06:30 步行过境,为办证锚点买时间"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"tier": "舒适",
|
|
34
|
+
"name": "深圳机场凯悦嘉寓(航站楼内)",
|
|
35
|
+
"price_cny": 450,
|
|
36
|
+
"why": "落地即睡;但次晨需赶早过境"
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"recommendation": "便利档(口岸侧):a2 办证锚点 09:00 开门,住口岸侧是唯一能睡到 6:40 还从容的选择(全成本视角:落地夜的门到门已耗尽精力,次晨多睡 1h 价值最高)"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "s2",
|
|
43
|
+
"note": "普吉岛 workation 两周(13 晚,含 10 个工作日)+ 女朋友潜水出海",
|
|
44
|
+
"nights": 13,
|
|
45
|
+
"location_decision": "查龙/Rawai 基地(数字游民区+潜水码头双吻合);『万xx』候选(考拉克/甲米奥南/董里)留作中途换防 2-3 晚的选项,待 gate 裁决",
|
|
46
|
+
"options": [
|
|
47
|
+
{
|
|
48
|
+
"tier": "经济",
|
|
49
|
+
"name": "卡塔/卡伦公寓式(自炊)",
|
|
50
|
+
"price_per_night_cny": 140,
|
|
51
|
+
"why": "$18-25/晚;离查龙码头 20-30min 车程"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"tier": "舒适",
|
|
55
|
+
"name": "查龙/Rawai 服务式公寓(带共享办公)",
|
|
56
|
+
"price_per_night_cny": 300,
|
|
57
|
+
"why": "HOMA 类;workstation 标准:WiFi+办公区+潜水码头 10min 内;两周连住可议价 20-30%"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"tier": "高端",
|
|
61
|
+
"name": "海滨度假公寓(带办公桌)",
|
|
62
|
+
"price_per_night_cny": 550,
|
|
63
|
+
"why": "工作体验与度假体验兼得"
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"requirements_check": [
|
|
67
|
+
"WiFi ≥50Mbps 且有备用(共享办公区)",
|
|
68
|
+
"书桌+静音(10 个工作日的会议)",
|
|
69
|
+
"近查龙码头(女朋友潜水集合点)",
|
|
70
|
+
"长住议价"
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"id": "s3",
|
|
75
|
+
"note": "曼谷周末(2 晚)",
|
|
76
|
+
"nights": 2,
|
|
77
|
+
"options": [
|
|
78
|
+
{
|
|
79
|
+
"tier": "经济",
|
|
80
|
+
"name": "BTS 沿线三星(Mo Chit/素坤逸)",
|
|
81
|
+
"price_per_night_cny": 240
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"tier": "舒适",
|
|
85
|
+
"name": "素坤逸/暹罗四星(直通 BTS)",
|
|
86
|
+
"price_per_night_cny": 528
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"id": "s4",
|
|
92
|
+
"note": "云南一周(6 晚,请假纯旅行;昆明为进出航点,环线待 gate)",
|
|
93
|
+
"nights": 6,
|
|
94
|
+
"options": [
|
|
95
|
+
{
|
|
96
|
+
"tier": "经济",
|
|
97
|
+
"name": "大理/丽江淡季包周民宿",
|
|
98
|
+
"total_cny": 1200,
|
|
99
|
+
"why": "淡季月租可低至 ¥900-1500/月,包周约 ¥200/晚"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"tier": "舒适",
|
|
103
|
+
"name": "洱海/古城景观民宿",
|
|
104
|
+
"total_cny": 2400,
|
|
105
|
+
"why": "均价 ¥408/晚,一周议价后约 ¥400/晚"
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"id": "dali-short",
|
|
111
|
+
"note": "短住 2-3 晚场景(周末湖边放松);估算锚点=meta.sources 已引 Booking 大理短租均价 ¥408/晚、淡季包周 ¥1,000-2,500,非实时报价",
|
|
112
|
+
"nights": 2,
|
|
113
|
+
"options": [
|
|
114
|
+
{
|
|
115
|
+
"tier": "经济",
|
|
116
|
+
"name": "大理古城内民宿标间",
|
|
117
|
+
"price_cny": 250,
|
|
118
|
+
"why": "低于均价约 4 成;淡季议价空间大,步行古城 but 距洱海 3-5km"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"tier": "舒适",
|
|
122
|
+
"name": "才村/龙龛码头湖景民宿",
|
|
123
|
+
"price_cny": 408,
|
|
124
|
+
"why": "等于 Booking 短租均价;推窗见海,环湖骑行起点"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"tier": "便利",
|
|
128
|
+
"name": "高铁站侧连锁酒店",
|
|
129
|
+
"price_cny": 300,
|
|
130
|
+
"why": "抵达/离开零接驳成本;牺牲湖景,适合早班车次日出发"
|
|
131
|
+
}
|
|
132
|
+
],
|
|
133
|
+
"recommendation": "舒适档(湖景民宿):短住的目的是『湖边发呆』,景观即产品;经济档把差价花在环湖电动车(约 ¥60/天)体验更佳"
|
|
134
|
+
}
|
|
135
|
+
],
|
|
136
|
+
"budget_tiers_summary": {
|
|
137
|
+
"note": "机票(五段联算 ¥8,380)+ 住宿的分层总预算(gate q2 的决策材料)",
|
|
138
|
+
"经济": {
|
|
139
|
+
"flights": 8380,
|
|
140
|
+
"hotels": 4200,
|
|
141
|
+
"total": 12580
|
|
142
|
+
},
|
|
143
|
+
"舒适": {
|
|
144
|
+
"flights": 8380,
|
|
145
|
+
"hotels": 7900,
|
|
146
|
+
"total": 16280
|
|
147
|
+
},
|
|
148
|
+
"hotel_breakdown_economy": "218(或 320 便利档)+140×13+240×2+1200",
|
|
149
|
+
"hotel_breakdown_comfort": "450+300×13+528×2+2400"
|
|
150
|
+
}
|
|
151
|
+
}
|