Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

【2026飞猪AI旅行创新大赛】TravelMate · 240 小时过境免签行程规划助手(入境游)

Ouverte
#209 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
1/100
Type d'issue
Fonctionnalité
Clarté
À clarifier
Activité
Active
Stack technique
fastapi, html, javascript, python
Domaine
ai, full-stack

Piste de recherche

This issue is a contest entry describing the TravelMate project; its source repository is linked as FlyPigTravel, while the current issue gives no change request or target files there. Read the project’s setup instructions and the referenced travel policy and demo script to understand the implementation. The issue does not define a specific change or completion criteria, so a newcomer cannot determine what work would be considered done.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

2026飞猪AI旅行创新大赛 showcase

参赛项目名称

TravelMate · 240 小时过境免签行程规划助手(入境游)

团队 / 作者与奖品领取人

团队名称:锦鲤
主要提交人 GitHub ID(仅 1 位,必填):colorfulee
其他成员(可选,仅用于署名):colorfulee
旅行场景与目标用户

命题方向:入境游助手

场景:外国游客持 240 小时过境免签入境中国,规划一段多城市的中国之行。

用户:适用过境免签、但不在 30 天单方面免签名单里的游客,主要是美国、墨西哥、印度尼西亚、越南等 15 国。按 2026 年 10 月的政策,57 个过境免签国家里有 42 个已能 30 天单方面免签,剩下这 15 国的游客最依赖过境免签。2026 年上半年入境外国人 2291.4 万人次,同比增长 20.4%,其中免签入境占 77.7%。

痛点:过境免签有一套很硬的规则,写在移民局公告里,游客很难自己对一遍:

只能在 24 个省份的指定区域活动。四川只开放 11 个市,九寨沟所在的阿坝州不在其中;云南只开放 9 个市州,香格里拉所在的迪庆不在其中。
离开中国必须前往第三国或地区,回到出发国不算过境。
240 小时从入境次日 0 时起算,而不是从落地那一刻。
只能从 60 多个指定口岸入境、离境。
游客按攻略排行程,常常到了才发现某个景点不能去、回程票不符合规定,或者算错了截止时间。现在的旅行 App 只负责卖票,不会告诉游客"这样走合不合规"。

我做了什么
游客用英文说一句话,或者直接上传机票截图。TravelMate 会:

先判断适用哪项政策:是 240 小时过境免签,还是更宽松的 30 天单方面免签。如果是后者,直接告诉游客"你不需要过境免签"。
逐条核对 9 条规则:国籍、是否前往第三国、联程票、入境口岸、240 小时期限、停留区域、离境口岸、活动事由、单方面免签。每个结论都标出规则编号和中文规则原文,可以复核。
把出界景点移出行程,并推荐替代:九寨沟会被移出,系统推荐青城山、都江堰、西岭雪山。每个替代景点都由代码定位并校验在允许区域内,距行程城市不超过 400 公里。
排出可预订的行程:按城市就近排序,用飞猪实时数据查每段高铁或航班,并选一班从适用口岸、在截止时间前起飞的离境航班。如果最后一个城市没有航班(例如丽江飞新加坡),就改从附近的枢纽城市离境。排完后,整份行程再过一遍规则引擎。
自动修正:原定的离境日超出 240 小时,又还没订票时,系统直接按最后一个可离境日重排,并在结论里说明。
主动提醒:行前提醒打印联程票;入境时说明申请过境免签;每段车前一晚提醒带护照;出门时给出可以给司机看的中文地址;到达成都当天提醒"不要顺路去九寨沟";离境前 48、24、6 小时各提醒一次。所有提醒可以一键导入手机日历。
机票截图识别(多模态):上传电子行程单、订单页或登机牌,系统自动识别入境段和离境段,填入时刻、口岸和下一站。经第三地转机时(如洛杉矶→首尔→北京),会追溯真实出发地。
创新点:

AI 理解,规则判定:模型负责听懂英文、看懂机票、推荐相似景点;能不能这样走,由按移民局公告写成的规则引擎判定,不交给模型。模型推荐的景点要先经过代码校验才会展示。
把签证政策和空间规划结合起来:区域判定精确到地级市;替代景点按距离筛选;排线路时同时满足口岸、时间和区域三项约束。
主动服务:系统按行程时间线推送提醒,而不是等游客来问;提醒可以直接导入手机日历。
百炼使用说明(必填)
百炼位于运行时链路,负责理解与生成;合规判定由代码完成,二者分工明确。

百炼能力 / 模型:通义千问 qwen-plus(英文需求解析、相似景点推荐)、通义千问 VL qwen3-vl-plus(机票截图识别)
调用方式:百炼 API(DashScope OpenAI 兼容接口 /compatible-mode/v1/chat/completions)
使用环节与输入输出:
需求解析(qwen-plus):英文一句话 → 国籍、来去国家、入境 / 离境口岸与时刻、想去的地方(英文地名翻译为中文标准名),输出 JSON。代码再补全日期、统一国名;用户原话里没写钟点时,不采用模型补出的时刻。
机票截图识别(qwen3-vl-plus):截图 → 每段航班的航班号、起降机场、城市、国家、当地时刻,输出 JSON。代码校验格式,丢弃不合理的时刻(例如把登机时间当成起飞时间),按航段衔接关系判定入境段、离境段和真实出发地。文字解析和识图并行进行。
替代景点推荐(qwen-plus):出界景点及其所在州、允许区域、行程城市 → 每个景点 3–5 个同类替代,输出 JSON。代码逐个用高德定位并校验区域和距离,不合格的直接丢弃。
Skill 名称:飞猪 flyai Skill(@fly-ai/flyai-cli:search-train、search-flight)
其他工具 / 技术栈:Python FastAPI(分阶段流式返回)、原生 H5 前端、高德地图 Web 服务(地点搜索、地理编码)、pytest(178 个单测)
效果展示

Image

九寨沟出界被移出、240 小时倒计时、规则检查清单

Image

飞猪实时车次与航班组成的行程,以及区域内的替代景点

Image

主动提醒时间线(可导入日历)

Image

机票截图识别出入境段和离境段

在线体验(离线预览页,5 个真实录制的案例):https://claude.ai/artifact/3TvouH4hmPg7CU4akkHvRv
演示视频:https://www.bilibili.com/video/BV1BCnW6XEQP/
分镜见docs/travelmate/演示剧本.md
项目链接与复现方式
GitHub:https://github.com/colorfulee/FlyPigTravel
在线 Demo:[https://claude.ai/artifact/3TvouH4hmPg7CU4akkHvRv]
演示视频:https://www.bilibili.com/video/BV1BCnW6XEQP/
复现:
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
npm i -g @fly-ai/flyai-cli
cp .env.example .env # 填写 DASHSCOPE_API_KEY、FLYAI_API_KEY、AMAP_KEY(高德“Web服务”类型)
.venv/bin/uvicorn app.main:app --port 8000

打开 http://localhost:8000/transit

不联网也能验证规则引擎:.venv/bin/pytest。重新录制离线预览:python scripts/build_transit_preview.py。
规则来源:docs/travelmate/240小时过境免签规则表.md(每条标注出处和核实状态);程序读取的是 data/transit_240h.json

踩坑记录

政策重叠:57 个过境免签国家里有 42 个已能 30 天单方面免签。不先判断适用哪项政策,就会把德国游客按 240 小时规则拦下,而他们其实可以去香格里拉。
时间算法:240 小时从入境次日 0 时起算,不是"落地时刻 + 240 小时",两种算法最多差将近一天。另外,超期 1 分钟时剩余小时数四舍五入会变成 -0.0,导致漏判。现在改为按分钟比较。
模型会补用户没说的信息:用户只说了日期,模型会填上 09:00;用户没说日期,模型会填上今天;qwen-flash 还会编出用户没提的离境机场。现在只有用户原话里有钟点、有日期才分别采用,解析模型保留更稳的 qwen-plus。
地名歧义:"香格里拉"会先搜到北京的香格里拉饭店,"沙溪古镇"会定位到江苏太仓。解决办法是跳过酒店、餐馆等同名商户,并让模型同时给出城市名。西安咸阳机场位于咸阳,行程会因此多排一段西安→咸阳,现在机场按它服务的城市计算。
飞猪数据:每次查询只返回 10 条结果、按时间排序,不带出发时段时只能拿到清晨的车次;没有航线的城市对(如丽江→新加坡)会直接报错。另外,15 分钟内约 90 次请求会触发风控(451)。现在每份行程只调用 2–6 次,并对结果做缓存;演示使用录制的结果。
识图:登机牌上的登机时间常被读成起飞时间(实测 12:40 / 13:20)。现在由代码判断,国际航段短于 45 分钟就视为不可信。
未核实项:港澳台是否算"第三地区"、广东新增的 5 个口岸,官方原文没有写明。页面提示用户向 12367 确认,不做硬性拦截。48 个国家的 30 天单方面免签施行至 2026-12-31,到期后需要更新规则表。

Langage dominant
HTML
Étoiles
11
Forks
3
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de modelstudioai/modelstudioai.github.io

Toutes les issues de modelstudioai/modelstudioai.github.io

Issues similaires

Plus d'issues AI Infra & Agents

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.