【2026飞猪AI旅行创新大赛】 -- GoGather 聚行 —— 团体出行一站式智能助手
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 1/100
- Issue-Typ
- Feature
- Klarheit
- Muss geklärt werden
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- css, fastapi, html, javascript, python, sqlite
- Bereich
- web-dev
Rechercherichtung
The issue describes a complete travel-planning product and links its implementation at https://github.com/mikelgh/gogather, but gives no specific change to make in this repository. Start by checking the repository’s contribution guidance and existing site structure to see whether this submission needs a defined update. Done would require a concrete requested change and acceptance criteria; none are provided here.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
参赛项目名称
GoGather 聚行 —— 团体出行的「可执行方案」生成器
团队 / 作者与奖品领取人
- 团队名称:睿欣达
- 主要提交人 GitHub ID(仅 1 位,必填):
mikelgh - 其他成员(可选,仅用于署名):无
旅行场景与目标用户
场景:行程规划 —— 但我们解决的不是「去哪玩」,而是「怎么把 N 个人按时按预算组织起来」。
现有的 AI 旅行产品绝大多数停在「生成一篇攻略」:一篇图文并茂的 Markdown。
但团建、聚会、家庭游的真正难点在攻略之后 ——
- 50 人的预算到底怎么分摊到人头?分房怎么分?
- 几点集合、几点退房、哪个车次、哪家酒店、多少钱?
- 团员没装 App、不注册账号,怎么把方案发到每个人手上?
目标用户
| 用户 | 典型诉求 |
|---|---|
| 企业 HR / 行政 | 20–60 人团建,跨城出行,需要预算明细、分房方案、可对外分享 |
| 同学聚会 / 校友会召集人 | 30 人左右,跨城 2–5 天,预算敏感,要能直接下单 |
| 家庭游 / 多代同行 | 需要儿童数、老人数、无障碍信息在行程里被真正考虑 |
痛点一句话:团体出行缺的不是攻略,是一份能直接照着执行、并且能发下去的方案。
我做了什么
GoGather 把「一句话描述活动」变成「一份可预订、可跟进、可分享的执行清单」。
核心链路
用户一句话 → 百炼抽取结构化参数 → 百炼生成逐日大纲(卡片确认)
→ 飞猪真实数据(机票/高铁/酒店/景点/餐厅)
→ 百炼编排完整方案 → 地图时间线 + 主动提醒 + 一键分享
差异化能力
1. 数据是真的,不是编的
交通、酒店、景点、餐厅全部来自飞猪 AI 开放平台(flyai-cli),带实时价格和一键预订链接。
车次号、航班号、酒店星级、门票链接都来自真实库存 —— 这是「攻略」和「方案」的分界线。
2. 大纲先行,确认后再生成
不让用户等一个黑盒结果。先用百炼出一张逐日行程大纲卡片(D1/D2 主题 + 上午/下午/晚上条目 + 类型标签),
用户确认或提出修改(「第二天换个景点」)后再生成完整方案。可改可迭代,不是一次性抽奖。
3. 地图时间线(空间感知)
把时间线按天着色映射到地图上。团队一眼看出「这三天在哪一片区域」,
重叠地点做环形偏移避免标记互相遮挡,支持自动播放逐点巡视。
4. 主动提醒(主动服务)
不是被动查询,而是到点该做什么 —— 「11-01 06:30 广州飞往成都(川航 3U6710)」、
「11-01 14:00 酒店入住与休整」,由行程节点自动推导,演示方案生成 18 条。
5. 分享即协作
一键生成分享链接,团员无需注册即可查看。分享页服务端渲染 OpenGraph meta tags,
微信 / 社交平台抓取直接出卡片(城市、日期、人数、摘要 + AI 生成的城市专属封面)。
6. 方案可迭代
已生成的方案支持二次调整、重新生成、版本回滚,每次修订都进版本历史。
产品完成度
从 0 到 1 完成了完整的产品化:品牌设计令牌与 Logo 体系、集中式文案表、
/guide 功能说明页、首次使用 3 步遮罩式引导、空状态与错误态、品牌 404 页、
响应式布局(1440 / 1280 / 1024 / 390px 全适配)。
百炼使用说明(必填)
-
百炼能力 / 模型:
qwen-plus—— 完整方案编排、行程文案润色qwen-turbo—— 参数抽取、大纲生成、方案修订等低延迟环节- 调用形态:Chat Completions,开启
response_format: {"type": "json_object"}强制结构化输出
-
调用方式:百炼 API(DashScope OpenAI 兼容模式 HTTP 接口)
POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions,
Authorization: Bearer $DASHSCOPE_API_KEY。
统一封装在app/llm_client.py,主备供应商链:百炼(qwen)为默认主供应商,
配置了 MiniMax 密钥时作为故障备援,带冷却期避免反复打到已挂的供应商。 -
使用环节与输入输出(百炼位于运行时链路,用户每次对话都会调用):
# 环节 模型 输入 输出 代码位置 1 参数抽取 qwen-turbo 最近 6 轮对话 + 用户本轮消息 + UI 已选预算/交通/偏好 结构化参数:出发地、目的地、入住/退房、人数、预算档次、活动类型、儿童数、老人数、无障碍需求、兴趣标签 app/chat.py:982 大纲生成 qwen-turbo 结构化参数 + 对话上下文 逐日大纲 JSON: days[].{day, theme, items[].{slot, title, type}}app/structured_planner.py:1573 完整方案编排 qwen-plus 大纲 + 飞猪真实数据(机/酒/景/餐)+ 参数 结构化方案 JSON:行动项、时间线、预算明细、分房、人均预算、摘要 app/structured_planner.py:2974 方案修订 qwen-turbo 原方案结构化数据 + 用户修改意见 修订后的完整结构化方案(用于版本历史与回滚) app/structured_planner.py:5045 行程文案润色 qwen-plus 结构化方案 + 行程原始素材 面向人阅读的行程叙述文案 app/planner.py:111设计要点:把「快思考」和「慢思考」拆开 —— 抽取、大纲、修订这类需要在秒级返回的环节走
qwen-turbo;真正做长文本编排的环节走 qwen-plus。用户感知到的首屏时间因此可控。 -
Skill 名称(如有):无。本作品使用百炼的 Chat Completions 结构化输出能力,
未使用百炼 Agent / Skill 编排,链路完全自研。 -
其他工具 / 技术栈:
- 飞猪 AI 开放平台:
@fly-ai/flyai-cli,子进程调用ai-search/search-hotel/
search-poi/search-flight/search-train,提供实时价格与预订链接(app/flyai_client.py) - 高德 Web 服务:地理编码兜底,修正飞猪坐标缺失导致的跨省误定位(
app/amap_geocode.py) - 地图:Leaflet.js + 高德瓦片;时间线/提醒/封面共用
map_component.js - 后端:FastAPI + SQLite(用户、方案、对话、AI 用量、版本历史)
- 前端:原生 HTML / CSS / JS,无框架
- 部署:单服务器 uvicorn + Caddy 反向代理 + HTTPS
- 飞猪 AI 开放平台:
效果展示
在线演示(建议评委直接点开)
| 内容 | 链接 |
|---|---|
| 主站(新建方案对话态) | https://gogather.partystack.cn/ |
| 主演示方案(广州→成都→九寨沟→乐山,50 人,6 天 5 晚) | https://gogather.partystack.cn/share/h5ydji |
| 使用指南页 | https://gogather.partystack.cn/guide |
主演示方案数据:18 个行程节点、14 项预算明细、人均 ¥3,602、18 条主动提醒、
含真实航班号(川航 3U6710 / 九元 AQ1116)与酒店分房方案。
其他可看方案
以下全部为线上可直接点击的分享链接(无需注册),覆盖不同人数、不同天数、不同场景:
| 方案 | 场景 | 规模 | 行程节点 | 人均预算 | 链接 |
|---|---|---|---|---|---|
| 杭州 | 同学聚会 | 上海出发 30 人 · 4 晚 | 29 | 约 ¥3,198 | https://gogather.partystack.cn/share/o16u75 |
| 西安 | 文化团建 | 上海出发 50 人 · 4 天 3 晚 | 20 | ¥2,830 | https://gogather.partystack.cn/share/rfvox5 |
| 三亚 | 度假出行 | 广州出发 30 人 · 2 晚 | 6 | 约 ¥1,386 | https://gogather.partystack.cn/share/9nwhqj |
| 杭州 | 小型聚会 | 上海出发 10 人 · 1 晚 | 6 | 约 ¥1,081 | https://gogather.partystack.cn/share/ca1gmt |
o16u75 的 29 个行程节点是目前最密的一份,可以重点看它的地图时间线和预算拆分。
截图
① 对话态 + 大纲确认卡片
用户一句话描述活动,百炼抽取参数后先出逐日大纲卡片供确认,确认(或提出修改)后再生成完整方案。

② 分享页:AI 封面 + 真实价格 + 一键预订
团员无需注册即可查看。每条行程带真实价格与「飞猪预订/验价」链接。

③ 全屏地图时间线
18 个地点编号徽章、按天着色、自动播放;重叠地点环形偏移避免遮挡。

④ 使用指南页

项目链接与复现方式
- GitHub 仓库:https://github.com/mikelgh/gogather
- 在线 Demo:https://gogather.partystack.cn/
- 主演示分享页:https://gogather.partystack.cn/share/h5ydji
本地复现
# 1. 安装依赖
pip install -r requirements.txt # Python 3.11+
npm install # Node.js 18+(flyai-cli 依赖全局 fetch)
# 2. 配置环境变量
cp .env.example .env
# 至少填入 DASHSCOPE_API_KEY(百炼)与 FLYAI_API_KEY(飞猪)
# AMAP_API_KEY 可选,用于坐标兜底
# 3. 启动
uvicorn app.main:app --host 0.0.0.0 --port 8000
打开首页注册账号,输入一句「10月25日30个同学去杭州聚会,从广州出发」即可完整体验全链路。
仓库不含任何密钥,所有 Key 通过 .env 注入(已在 .gitignore 中)。
踩坑记录(可选)
1. 跨省坐标误定位
早期用硬编码 POI 坐标表按城市名匹配,出现「衡山」被定位到错误省份的情况。
改为:优先透传飞猪返回的坐标,缺失时用高德地理编码兜底,两级都拿不到才退回内置表。
修复后回归验证 15/15 坐标正确。
2. flyai-cli 在 Node < 18 上直接崩
flyai-cli 依赖全局 fetch,服务进程 PATH 上若命中旧版 Node 会报
ReferenceError: fetch is not defined。在 config.resolve_flyai_prefix() 里显式挑选
Node ≥ 18 的可执行文件,找不到则回退 npx。
3. 深链接被自己吃掉
登录逻辑里 history.replaceState 清理 ?token= / ?username= 时,
把地图页带回的 ?plan=<id> 一起清掉了,导致「返回方案页」失效。
改为只在两个认证参数同时存在时才清理。
4. 大纲卡片刷新后退化成一坨文字
conversations 表只存了 content 纯文本,结构化的大纲在刷新后无法还原。
新增 meta 列持久化结构化大纲,回放时以只读模式重新渲染卡片
(隐藏已失效的确认按钮),并给气泡补上 white-space: pre-wrap 兼容存量消息。
5. LLM 单点故障
百炼超时会让整条生成链路中断。做了主备供应商链 + 冷却期:
主供应商连续失败后临时切到备援,冷却结束后自动回切。
**奖品说明:**每个团队最多发放 1 份奖品。同一团队即使提交多个参赛作品,
也只登记 1 位奖品领取人;其他团队成员可以共同署名,但不重复发放奖品。
- Vorherrschende Sprache
- HTML
- Sterne
- 11
- Forks
- 3
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus modelstudioai/modelstudioai.github.io
-
2026飞猪AI旅行创新大赛 showcase
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
2026飞猪AI旅行创新大赛 showcase
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 1/100
-
2026飞猪AI旅行创新大赛 showcase
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 10/100
-
2026飞猪AI旅行创新大赛 showcase
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 1/100
-
2026飞猪AI旅行创新大赛 showcase
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 15/100
Alle Issues in modelstudioai/modelstudioai.github.io
Ähnliche Issues
-
Type/Bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
-
accessibility bug html websites
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
quarto-dev/quarto-cli#15187 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug needs triage P3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
pbakaus/impeccable#1143 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
solidjs-community/solid-primitives#1082 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag