工程日记・第六天:199 款机型、197 张新图、以及一场干掉 10 架飞机的数据审计
CEO 打开了 NetJets
三个字改变了我的一整天:"太小儿科了"。Wei 打开了 NetJets 的机队页面,又打开了我们的。差距立刻显现,让人痛苦。
NetJets 展示真实飞机。左右分栏卡片,右边是电影级摄影,左边是详细参数。类别导航让人感觉在浏览奢侈品目录。我们的机队页面呢?五段模糊的类别描述,零架真实飞机。一个号称提供私人飞机包机的平台,连一架飞机都不展示——回头想想,确实荒谬。
这篇日记记录了随后六个小时的冲刺。三个提交,228 个文件变更,3,868 行新增。
先修复已坏的东西
航线页 500 错误
所有 10 个程序化航线着陆页(/routes/beijing-to-shanghai、/routes/new-york-to-london 等)都在返回 500 错误。根因:generateStaticParams 没有传递 locale 参数。Next.js 16 要求每个动态段都在静态参数中覆盖。4 个语言 × 10 个 slug = 40 个静默失败的预渲染页面。
修复只用了三行代码。调试花了三十分钟。欢迎来到 Web 开发。
Canonical URL 分裂
Google 把 flyvolo.ai 和 www.flyvolo.ai 当作两个独立站点索引,SEO 权重被一分为二。更新了 robots.ts、sitemap.ts、layout.tsx 元数据、所有 OpenGraph 图片和 JSON-LD 结构化数据,统一指向 www.flyvolo.ai。
双层数据架构
机队重设计从数据问题开始。aircraft.ts 里有 15 架飞机的完整参数——客舱尺寸、性能数据、设施、AI 匹配说明。但真实包机市场有数百种机型,只展示 15 架显得不完整。
解决方案:双层目录系统。
- 第一层:
aircraft.ts— 15 架旗舰机型,有深度编辑内容和完整详情页 - 第二层:
aircraft-catalog.ts— 199 款已验证机型,有展示元数据(名称、制造商、类别、图片 ID、载客量、航程)
这反映了包机行业的实际运作方式。我们可以通过运营商网络安排 199+ 种机型的包机,但只为 15 架旗舰机型策划了深度内容。
干掉 10 架飞机的数据审计
初始目录有 209 条。然后我戴上航空专家的帽子,逐条审计。
发现令人震惊。10 架根本不存在的飞机混进了数据库:
- Citation IV — Cessna 从未制造过。Citation III 直接跳到了 Citation V。
- Hawker 450XP — 已取消的项目,从未投产。
- Hawker 850X、850XPi、850、900 — 错误的型号名称。真实系列是 800XP、850XP、900XP。
- Legacy 550 — 不存在。巴航工业制造的是 Legacy 450 和 500。
- Gulfstream GI — 这是涡桨飞机,不是公务机。不属于喷气包机目录。
- Cessna 750、551 — 现有条目的重复(营销名称为 Citation X 和 Citation II)。
除了幽灵飞机,18 个机型分类错误。Learjet 60 系列被列为重型——它是中型喷气机。G100 和 G150 被列为中型——它们是轻型喷气机。
总修正:10 个删除、18 个重新分类、2 个制造商修正、2 个命名修正、15 个 hasDetailPage 标志校准、2 个 slug 不匹配。最终验证数量:199 款机型,7 个类别。
如果你在一个非专业领域用 AI 构建平台,AI 生成的数据会包含自信满满的错误。Citation IV 听起来完全合理。你需要领域知识——或者至少一次严格的事实核查——才能发现这些问题。
四个新组件
ManufacturerBadge
小型大写斜体文本组件。"CESSNA" 和 "Cessna" 的感觉完全不同——全大写传达奢华和权威感。
AircraftCard
旗舰组件。NetJets 风格的左右分栏布局:42% 文字 + 58% 图片,交替左右排列营造视觉节奏。每张卡片展示制造商徽章、衬线字体机型名、核心参数(载客量、航程、速度)、简短描述和 CTA 按钮。
CatalogCard
199 机型目录的紧凑网格卡片。展示飞机图片、名称、制造商、载客量、航程和类别标签。有详情页的机型显示"Full Specs"指示器。响应式 3 列网格。
RelatedAircraft
详情页"您可能还想考虑"板块。展示同类别的 2-3 架飞机,放在最终预订 CTA 之前鼓励探索。
197 张飞机图片
目录中每个机型都需要图片。我们为每架飞机生成了 1200×396(3:1 比例)的 AI 侧视图渲染。统一风格——白色背景、轻微阴影、侧面视图——营造整洁的目录美学。
每张图片以数据库机型 ID 命名([modelId]_ai_exterior.jpg),实现确定性映射。不需要查找表,不需要字符串匹配。
全站文案审计
审计机队数据时,我发现我们在 18 个文件中宣称"500+ aircraft"。这个数字是早期搭建阶段的幻觉——听起来很厉害,但完全是编造的。
真实表述:VOLO 覆盖 200+ 种喷气机型,涵盖全球数以万计的包机飞机。区别很重要。我们不拥有 500 架飞机。我们提供通往全球运营商网络的入口。每一处引用都已更新。
今日发货
| 变更 | 范围 | 影响 |
|---|---|---|
| 航线 500 修复 | 1 文件,3 行 | 40 个预渲染页面恢复 |
| Canonical URL 统一 | 8 文件 | SEO 权重整合到 www.flyvolo.ai |
| 机队页面重设计 | 228 文件,3,868 行新增 | 199 已验证机型,197 张新图,4 个新组件 |
| 数据审计 | aircraft-catalog.ts | 删除 10 架假飞机,重新分类 18 架,共 21 处修正 |
| 文案审计 | 18 文件 | "500+ aircraft" 幻觉全站修正 |
反思
今天是关于标准的一课。机队页面之前"还行"——有内容、能渲染、不崩溃。但当你要求人们为一次包机汇款五位数时,"还行"不是标准。标准是 NetJets。标准是 VistaJet。标准是:一个净资产 1000 万美元的人会信任这个网站安排他的出行吗?
今天之前,答案是不会。今天之后,更接近于会了。199 款真实、已验证的机型。每一款都有照片。每一款都在正确的类别中。每一项参数都经过制造商数据核实。零幽灵飞机,零幻觉数字。
用 AI 构建最难的部分不是生成内容——而是验证内容。AI 可以在几秒钟内生产 209 条飞机条目。发现其中 10 条不应该存在的,需要任何语言模型都不具备的领域专业知识。人机协作不是"AI 生成,人类批准",而是"AI 起草,人类审计,AI 修正"。质量就在这个循环里。
订阅资讯
空腿航班优惠、新航线与航空洞察,直达您的邮箱。