Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

【2026飞猪AI旅行创新大赛】 -- GoGather 聚行 —— 团体出行一站式智能助手

Đang mở
#204 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
1/100
Loại issue
Tính năng
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Sôi nổi
Công nghệ
css, fastapi, html, javascript, python, sqlite
Lĩnh vực
web-dev

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

2026飞猪AI旅行创新大赛 showcase

参赛项目名称

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:98
    2 大纲生成 qwen-turbo 结构化参数 + 对话上下文 逐日大纲 JSON:days[].{day, theme, items[].{slot, title, type}} app/structured_planner.py:157
    3 完整方案编排 qwen-plus 大纲 + 飞猪真实数据(机/酒/景/餐)+ 参数 结构化方案 JSON:行动项、时间线、预算明细、分房、人均预算、摘要 app/structured_planner.py:297
    4 方案修订 qwen-turbo 原方案结构化数据 + 用户修改意见 修订后的完整结构化方案(用于版本历史与回滚) app/structured_planner.py:504
    5 行程文案润色 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

效果展示

在线演示(建议评委直接点开)
内容 链接
主站(新建方案对话态) 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 封面 + 真实价格 + 一键预订

团员无需注册即可查看。每条行程带真实价格与「飞猪预订/验价」链接。

分享页:AI 生成封面、地图时间线、真实价格与预订入口

③ 全屏地图时间线

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

全屏地图时间线

④ 使用指南页

使用指南页


项目链接与复现方式

本地复现
# 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 位奖品领取人;其他团队成员可以共同署名,但不重复发放奖品。

Ngôn ngữ chính
HTML
Star
11
Fork
3
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của modelstudioai/modelstudioai.github.io

Tất cả issue của modelstudioai/modelstudioai.github.io

Issue tương tự

Thêm issue về Web Dev

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.