•VOLO Engineering
开发日记:48 小时构建多语言 AI 航空平台
dev diaryNext.jsengineeringi18nAImonorepo
构建 VOLO 是一场紧张的冲刺。以下是我们构建的内容、做出的技术决策,以及沿途解决的问题。
技术栈
VOLO 运行在 Turborepo monorepo 上,包含三个包:Next.js 16 Web 应用、Prisma 数据库层和 AI 服务包。我们选择 Next.js 16 是因为它支持 React 19 和 Turbopack 构建速度——我们的完整构建在 15 秒内完成。
双模架构
我们最有趣的工程决策之一是构建双模界面。同一个 URL 可以呈现两种完全不同的体验:为人类访客准备的奢华衬线营销网站,以及为 AI Agent 准备的终端风格等宽字体界面。
我们通过 User-Agent 模式、自定义 Header(X-Agent-ID)和 Accept 头启发式来检测 Agent。注册的 Agent 拥有自己的个性化仪表板,包含 API 使用指标和佣金跟踪。
i18n:4 种语言,零妥协
从第一天起,支持英语、中文、法语和西班牙语就是优先事项。我们使用 next-intl,通过 Vercel 的 x-vercel-ip-country header 进行基于 IP 的区域检测。从导航到预订表单,每个组件都以检测到的语言呈现。
棘手的部分是在不同语言中保持奢华感。中文和法语有非常不同的排版传统,所以我们花时间确保衬线标题和无衬线正文在所有四种语言中看起来同样优雅。
AI 层
我们的航班搜索接受任何语言的自然语言,并将其转换为结构化查询。"从上海飞东京,下周五"变成一个针对机队数据库的出发/目的地/日期查询。系统处理模糊性,建议替代方案,并从交互模式中学习。
经验教训
- Vercel 默认的
cache-control: private, no-cache头部会杀死 SEO。务必为公共页面覆盖它们。 - next-intl 的
useTranslations()必须在每个组件中调用——没有全局注入。 - 同时为 AI Agent 和人类构建迫使你以不同的方式思考信息架构。
- 结构化数据(JSON-LD、FAQ Schema、Service Schema)对 SEO 和 GEO 都值得投入。
我们会继续分享我们的旅程。如果你是对 AI 与奢华服务交叉领域感兴趣的工程师,请持续关注。