LONG TAO
从“拼贴资料”到“设计一门可信课程”

把 AI 接进航校课程生产。重做整套工作方式。

这个故事讲的是:一名 UX 设计师怎么和产品、研发、数据、教学质控一起,把一家民航合作航校的老平台改造成 AI 课程生产系统。这里不只讲界面,也讲技术、埋点、数据、失败、迭代和上线后的治理。

技术术语尽量讲人话保留完整数据和迭代服务蓝图 + 系统图
拖入手册、SOP、旧课件或网页链接 AI 先建立来源地图,再生成可编辑课程草稿
Course Studio Copilot 正在核对资料版本与课程目标
来源覆盖 94%
THE DESIGNER’S STORY · PLAIN LANGUAGE VERSION

我的目标是让课程生产更快、更稳,也更容易追责。

OAT AERO 系统同时服务内部课程团队和外部航空公司。

Act 00
先看清旧系统
第 0–2 周

老师做课很慢,编辑器只是其中一个问题。

原来的平台有三个入口:老师做课程,学员上课,航司管理员看培训结果和导出报告。老师接到航司需求后,要去翻航司手册、SOP、运行通告、旧 PPT、本地文件和网页资料,然后再一点点整理成章节、题目和讲师备注。

我和架构师一起把旧系统画了一遍。前端是 React,后端是 Java/Spring,课程、学员和报表数据主要放在 PostgreSQL,附件放对象存储。最大的问题是,课程正文只是一大段富文本 HTML。系统根本不知道哪句话来自哪份手册、适用于哪家航司、哪个机型、哪个岗位,也不知道这道题在考哪个学习目标。

旧系统有什么限制

我们不能推倒重来,因为历史课程、学员记录、权限和报表都已经在用。

React 前端Java / Spring 后端PostgreSQL对象存储富文本课程租户权限PDF / Excel 报表缺少完整埋点

项目开始时的数据

21.8h做一门 60–90 分钟课程的中位工时
31%第一次交给教学质控后被退回
44%老师的时间花在找资料、核对和复制
64%课程里的事实能找到明确来源
核心问题是:平台能不能知道这段内容从哪来、适用于谁、谁看过、谁批准、以后怎么更新。
Act 01
别只听访谈,要看真实行为
第 3–5 周

只听老师说“编辑器不好用”,很容易把问题缩小成按钮和布局。

我跟着 10 名老师做了 8 门真实课程,也访谈了教学质控、航司培训经理和研发。因为旧系统几乎没埋点,我们先用数据库时间戳、页面访问日志、课程版本差异和质控退回记录拼出一个大概流程,然后再补了 23 个关键事件。

source_added

老师加了什么资料、来自哪、属于哪家航司、是什么版本。

editor_external_switch

老师离开平台去搜网页或打开本地文件多少次。

qc_returned

质控为什么退回,是来源、版本、范围还是教学问题。

objective_changed

学习目标改了以后,哪些内容和题目受到了影响。

question_rewritten

题目被改了多少,改的是题干、选项、答案还是解析。

report_exported

航司导出什么报告、哪个批次、哪个课程版本、有没有失败。

数据告诉我们,最严重的掉点不在“写正文”,而在“资料收集完之后,不知道下一步怎么组织”。新老师会开很多网页。资深老师常复用旧课件。前者找不到资料,后者容易用错版本。

57%质控退回和来源、版本、适用范围有关
68%做课时会离开平台去搜索或找本地资料
42%网页内容进入课程后没有保留完整来源信息
0.18旧题库平均题目区分度,很多题只考记忆
重新定义问题

先帮老师把资料整理成一个可信的“知识包”,再从知识包生成课程。课程中的每段事实、每个学习目标和每道题都要能找到来源,也要能知道后来改了什么。

Act 02
先测技术,再画界面
第 6–7 周

我们先做了一个技术小实验,看看哪种 AI 方案真的值得继续。

我和机器学习工程师、教学质控、数据分析师一起做了一套小型评估集。里面有 60 份培训需求、4 家航司的脱敏资料、240 个权威知识片段、480 个课程块和 160 道题。我的工作是把“好课程”拆成一套可共同打分的标准。

方案怎么做内容有可靠依据找到正确版本输出格式正确最慢响应
一次塞进全部资料把所有文件和需求一起发给模型61%54%73%96 秒
关键词搜索后生成先搜 20 段文字,再交给模型76%71%88%68 秒
混合检索后生成先查权限,再做关键词和向量搜索,最后排序91%89%98%42 秒

这个结果直接影响了设计。流程改成两步:先生成大纲和知识缺口,老师确认方向后,再按章节生成内容。这样一旦方向错了,不用等整门课生成完才发现。

我们要求模型按固定结构返回课程块

{ "block_id": "每个课程块自己的唯一 ID", "learning_objective_id": "它对应哪个学习目标", "block_type": "说明 / 情境 / 题目 / 讲师备注", "airline_scope": ["适用航司"], "aircraft_type": ["适用机型"], "role_scope": ["适用岗位"], "generated_text": "生成内容", "source_refs": [ {"document_id":"资料 ID","version":"版本","page":42,"chunk_id":"片段 ID"} ], "grounding_score": 0.94, "risk_level": "风险等级", "model_version": "模型版本", "prompt_version": "提示词版本" }
这为什么和 UX 有关:如果后端只返回一大段文字,界面就没法告诉老师哪一句来自哪里,也没法只改一小段、只重试一个章节,或者在以后还原当时的生成过程。
Act 03
第一版很炫,但不安全
第 8–9 周

老师觉得“太省事了”,但数据说明他们没有认真检查。

第一版上传资料后会直接生成完整课程。测试时 8 位老师说体验很好,可是 78% 的人没有打开过来源。更危险的是,有 4 段内容引用了旧版本资料,老师还是直接接受了。

所以我们把“AI 正在生成”拆成一套真正的系统状态。每个状态都对应真实后端状态、错误码、埋点和下一步操作。

正在接收资料上传、病毒检查、OCR、表格识别。用户可以取消。
正在建立索引切分资料、提取版本和权限信息、写入搜索索引。
培训简报不完整缺岗位、机型、目标或时长,需要老师补充。
大纲已准备好先看覆盖、冲突和缺口,不会自动继续。
需要人工审阅内容生成完成,高风险块必须逐项确认。
系统发现的问题页面怎么说用户能怎么处理
账号没有权限使用某份资料直接说明无权使用,不展示摘要请航司管理员授权,或者移除资料
两个版本互相冲突把冲突内容、版本和生效日期放在一起比较老师选择、请质控判断,或拆开课程范围
某个章节生成超时保留已经生成好的部分只重试失败章节,不从头再来
找不到足够可靠的来源不显示猜出来的正文,只显示缺什么资料补资料,或者把内容降级为背景介绍
我后来越来越确定:AI 产品的状态设计,就是把技术情况翻译成用户能理解、能处理的下一步。
Act 04
把设计原则写进系统
第 10–14 周

我不写后端代码,但需要知道数据怎么走。

资料上传以后,系统不会直接把文件丢给大模型。它会先检查权限,再解析 PDF、PPT、Word 和网页,提取版本、生效日期、航司、机型、岗位和保密等级。搜索前先排除用户无权查看和已经过期的内容。

系统会同时做关键词搜索和语义搜索。搜到候选内容后,再由一个排序模型把最相关的片段放到前面。最后只把少量、最相关、并且有权限的内容交给生成模型。

这些技术细节会直接影响体验。资料切得太大,老师看不出到底哪一句支持了生成内容;切得太小,又会丢掉前后逻辑。一次取太多搜索结果,会变慢,也更容易出现互相冲突的内容。

系统字段后端为什么需要页面为什么需要
job_id / idempotency_key避免同一个生成任务被重复执行用户重复点击时,不会出现两份一样的章节
source_ref[]记录资料、页码、片段和版本老师可以看到每一段内容的证据
risk_level决定要做多严格的检查高风险内容必须逐条确认
model / prompt / index_version以后能重现当时的生成结果课程历史能说清楚“当时用了哪套系统”
stream_sequence控制流式内容的顺序和断线恢复章节逐步出现,但不会乱跳或重复
设计师不必亲自实现这些服务,但要理解它们如何工作,才能判断问题出在界面、数据、搜索还是模型。
Act 05
四次迭代,都从数据开始
第 15–19 周

我们先找行为异常,再决定怎么改产品。

第 1 轮 · 老师没看来源

内容接受得很快,但并没有真的检查。

来源打开率 18% → 57%
我们看到什么高风险内容接受率 81%,但只有 18% 打开来源。
为什么会这样来源藏在右侧抽屉里,“94% 支持率”又让人觉得很安全。
怎么改把来源放到正文旁边;高风险内容看过来源后才能确认;埋点区分“看过预览”和“真正打开原文”。
第 2 轮 · AI 问太多

问题都合理,但连续问 11 个,老师还是会烦。

放弃率 23% → 8%
我们看到什么平均要问 10.8 个问题,第 6 个以后回答质量明显下降。
为什么会这样后端按缺失字段一个个问,用户不知道还要问多久。
怎么改把问题按“必须、建议、以后再补”分组,并按信息价值排序。平均问题降到 4.1 个。
第 3 轮 · 等太久,用户重复点

最慢要等 74 秒,很多人以为系统坏了。

重复任务 16% → 3.2%
我们看到什么16% 的任务被重复创建,弱网下更严重。
为什么会这样原来是一个长时间不返回的同步请求,没有进度,也不能取消。
怎么改改成异步任务;先快速返回大纲,再并行生成章节;失败只重试那一章。
第 4 轮 · 接受率看起来很好,但是假成功

老师接受了 84% 的内容,质控还是改了很多。

质控退回 31% → 17%
我们看到什么老师很少改 AI,但质控还是重写 29% 的内容。
为什么会这样一键接受太方便,界面也没让老师看到 AI 做了哪些推断。
怎么改增加差异对比、风险抽查和修改原因。接受率反而下降了,但第一次质控通过率提高了。
AI 接受率高不代表产品一定好。它也可能说明用户过度信任,或修改成本太高。
Act 06
用学员数据继续改课程
第 19–21 周

课程发布后,学员数据才能说明它是否真的有效。

我们把学习目标 ID、课程块 ID、题目 ID 和课程版本连起来。这样就能知道:学员在哪一段停留久、哪里会反复重播、哪道题总答错、哪个知识点经常需要补训。

这些行为不会直接进入生产模型。因为答错不一定说明内容错,也可能是题目有歧义、岗位差异太大,或者课程讲得不够清楚。先由老师和质控判断原因,再决定要不要进入评估集。

模型本身

  • 搜索结果准不准
  • 有没有找到正确版本
  • 生成内容有没有依据
  • 返回格式是否稳定

老师做课

  • 花了多久
  • 改了多少
  • 有没有认真看来源
  • 失败后多久恢复

课程质量

  • 目标有没有覆盖
  • 题目有没有歧义
  • 质控为什么退回
  • 内容是否重复

学习结果

  • 题目区分度
  • 哪些知识点要补训
  • 完成课程要多久
  • 报告能否追溯版本

数据又帮我们发现一个问题:AI 生成的题目看起来很完整,但太简单。它经常把原文直接改成正确答案,再随便凑几个明显不对的选项。第一版题目平均区分度只有 0.12。

后来我们要求每道题绑定学习目标、岗位情境和“常见误解”。错误选项不能乱编,而要对应真实的错误理解。改完以后,题目区分度提高到 0.31,质控重写率也从 46% 降到 24%。

我们还发现,互联网资料只占候选内容的 27%,却贡献了 68% 的来源修正。所以系统后来明确区分:互联网内容可以做背景、案例和延伸阅读,但程序和标准必须来自航司或监管机构批准的资料。

Act 07
小范围上线,不一次全开
第 22–24 周

我们分阶段扩大 AI 的使用范围。

第一阶段只开放资料解析、来源地图和大纲;第二阶段开放服务类和地面理论课程;第三阶段才开放题目和讲师备注。应急程序、执照评定和模拟机检查课程不在首版范围。

系统用 Feature Flag 控制谁能用:可以按航司、教师、课程类型和风险级别开关。这样某个模型版本有问题时,不需要整个平台一起回退。

上线后我们同时看四类指标

系统速度31s完整模块生成的 p95
模型质量96%事实内容有来源
工作流程17%第一次质控退回
学习效果0.31AI 题目平均区分度

我们也提前写好“什么时候必须停”。比如跨航司资料误召回必须是 0;高风险内容的来源支持率低于 95% 就关闭;质控退回连续两周上涨,就比较模型、提示词和索引版本;某类题目让学员表现明显变差,就暂停对应模板。

−45%从接到需求到提交质控的制作时间
31%→17%第一次质控退回率
64%→96%事实内容的来源覆盖
93%航司报告能追溯到课程和资料版本
Act 08
UX 到底碰了多少技术
项目复盘

设计师不必代替工程师,但要理解 AI 系统。

我实际参与了这些技术工作

  • 和研发一起定义课程对象、接口状态、错误码和恢复方式。
  • 理解资料切块、权限过滤、混合搜索和排序会怎么影响体验。
  • 定义埋点、指标口径、实验分组和异常分析方法。
  • 参与建立评估集、失败分类和质控打分标准。
  • 检查接口返回、日志和版本字段,确认设计真的能实现。
  • 和数据分析师一起看漏斗、分群、编辑距离和题目数据。

我没有假装自己负责这些

  • 不独立训练基础模型,也不把所有问题都归结为“再调一下 Prompt”。
  • 不替航司或教学质控决定航空标准。
  • 不独自实现检索、权限、数据仓库和监控系统。
  • 不拿接受率、满意度或漂亮 Demo 当上线证据。
  • 不让用户修改直接自动训练生产模型。
AI 时代的 UX 设计师,要把用户工作、模型行为、系统状态、数据证据和组织责任接起来。
THE SAME SYSTEM, FIVE VIEWS

同一个系统的五个视角。

老师在做课程,学员在学习,航司在看结果,AI 在处理知识,产品和研发在保证整套系统跑得稳。

教师视角
老师
以前主要花时间找资料和拼课件;现在更像是在定义教学方向、检查来源和处理冲突。
1
写培训简报

选航司、岗位、机型、时长和学习目标。

2
整理资料

上传手册、旧课件和网页,并确认版本。

3
先看大纲

确认知识够不够、有没有冲突。

4
逐段审阅

看来源、改内容、拒绝不合适的建议。

5
交给质控

系统自动带上来源、版本和修改记录。

学员视角
机组学员
学员看不到“生产中的 AI”,只看到已经审核通过的课程、练习和补训安排。
1
收到课程

课程绑定岗位、批次和版本。

2
学习和答题

系统记录停留、重播和答题情况。

3
看到反馈

反馈引用已批准课程,不让实时模型乱解释程序。

4
需要时补训

按知识点补,不必整门课重学。

5
留下记录

成绩、补训和课程版本进入培训档案。

航司视角
航司培训经理
他们关心课程是否合规、学员是否完成、报告能否审计。
1
发需求

确定人员、岗位、标准和时间。

2
给资料权限

决定哪些资料可以给哪些项目使用。

3
看制作进度

知道缺什么资料、什么时候能发布。

4
看培训情况

按批次、岗位和知识点查看结果。

5
导出报告

PDF / Excel 都能追溯到课程和资料版本。

AI 系统视角
知识与模型管线
它是一串有权限、有版本、有检查的服务。
1
解析资料

识别文字、表格、标题、版本和适用范围。

2
先查权限

没权限的资料不会进入搜索结果。

3
搜索和排序

关键词和语义一起搜,再把最相关的排前面。

4
按结构生成

每段内容都带来源、风险和版本。

5
持续评估

看离线测试,也看线上行为。

交付团队视角
产品、研发、数据、质控
他们负责把设计变成真实服务、日志、阈值、审批和回滚机制。
1
产品经理

定范围、指标和停止条件。

2
研发

实现权限、队列、搜索、接口和审计。

3
数据团队

做埋点、指标、实验和异常分析。

4
教学质控

判断内容是否正确、是否适合教学,以及风险等级。

5
安全团队

检查跨航司隔离、版权、隐私和提示注入。

SERVICE BLUEPRINT · EXPERIENCE + DATA + OPERATIONS

把这件事放到一张图里看:前台、后台、AI、数据和人工是怎么接力的。

横向看完整流程,纵向看每一步背后有哪些页面、系统、数据、人员和风险。

提示:蓝图可横向滚动。
1. 航司需求
2. 资料接入
3. 知识治理
4. 大纲生成
5. 内容与题目
6. 教师审阅
7. 质控发布
8. 学习与报告
用户行为
航司经理定义人员、岗位、机型、时间和标准。
教师上传内部资料、旧课件和网页链接。
教师确认版本、适用范围、来源等级和冲突。
教师检查目标覆盖、知识缺口和建议结构。
按章节生成案例、说明、练习和题目。
打开来源、比较差异、接受、改写或拒绝。
质控审查高风险块并冻结课程版本。
学员学习;航司查看进度并导出打印报告。
前台触点
培训需求表、范围模板、交付状态。
上传队列、网页抓取、权限与隐私提示。
来源地图、版本标签、冲突对比和缺口。
大纲、目标覆盖矩阵、预计生成时间。
异步进度、结构化课程块、题目编辑器。
行内证据、风险状态、差异模式、撤销。
审批队列、退回原因、版本与审计记录。
学习播放器、补训、管理看板、PDF / Excel。
AI / 自动化
解析培训简报,发现缺失上下文。
OCR、表格识别、文档分类、网页元数据抽取。
ACL 过滤、切块、Embedding、版本与冲突检测。
混合检索、重排、生成目标与章节 Schema。
分块生成、来源支持检查、题目结构校验。
计算编辑距离、保存原因,不自动修改模型。
风险路由、完整性校验、冻结 model/prompt/index 版本。
题目分析、知识点诊断、异常提示与评估样本候选。
后台系统
租户、合同、学员批次、课程项目服务。
对象存储、病毒检测、解析队列、抓取策略。
元数据 DB、向量索引、全文索引、权限服务。
AI 编排、模型网关、Prompt Registry、Feature Flag。
课程对象 API、异步 job、流式事件、幂等与重试。
版本差异、审计日志、评论和人工决策。
发布服务、LMS 分配、历史版本和回滚。
事件流、数据仓库、报表服务、评估 Dashboard。
数据 / 埋点
brief_created
范围缺失、变更次数、需求等待。
source_added
类型、版本、解析失败、外部切换。
conflict_detected
冲突类型、解决时间、授权失败。
outline_reviewed
覆盖率、删除、重新生成、时延。
block_streamed
支持率、失败、重试、重复任务。
source_opened
编辑距离、接受、拒绝和修改原因。
qc_decision
退回类型、风险、审批时间。
item_response
区分度、补训、导出和版本追溯。
人员 / 运营
产品经理、航司客户成功。
平台运营、信息安全、版权支持。
知识管理员、航司资料所有者。
教师、教学设计师、ML 工程师。
教师、前后端、模型平台与 SRE。
教师、教学质控、数据分析。
质控负责人、航司审批人、发布运营。
学员支持、航司经理、数据与模型评估团队。
风险 / 控制
风险:培训范围不清。
控制:必填范围和简报完整度。
风险:恶意文件、版权和隐私。
控制:隔离、授权、用途标识。
风险:跨航司泄漏、旧版命中。
控制:召回前 ACL 与时效过滤。
风险:目标方向错误。
控制:先审大纲,后生成内容。
风险:幻觉、超时、重复。
控制:Schema、支持率、job 与幂等。
风险:盲目接受。
控制:行内来源、风险审阅、差异。
风险:责任不清。
控制:人类审批、冻结版本、回滚。
风险:错误反馈自动污染模型。
控制:人工诊断后进入评估集。
体验线:教师、学员和航司直接操作 技术线:AI、权限、队列、索引和课程对象 数据线:行为证据用于诊断与实验,不直接等同于模型训练
PRODUCTION SYSTEM MAP

课程、资料、模型、学员数据和航司报告的连接方式。

蓝色是用户和任务流,紫色是知识和数据流,橙色虚线是评估、开关、回滚和治理。

任务 / 交互 知识 / 数据 控制 / 治理
AI 航训课程生产平台系统图 教师、学员和航司管理人员通过三个门户连接业务网关。课程生产经过文档解析、权限过滤、混合检索、模型网关和质量规则,并连接课程服务、学习系统、事件流、数据仓库和模型评估治理。 角色与体验层 业务与 AI 运行层 存储、事件与学习分析层 评估、发布与治理层 教师生产、审阅、提交 学员学习、答题、补训 航司管理人员需求、监控、导出报告 三个 Web 门户作者工作室 · 学习门户 · 航司看板React · 事件 SDK · 状态流订阅 API Gateway / BFFSSO · RBAC · 租户 · 限流 · Feature Flag 培训项目服务航司 · 批次 · 岗位 · 机型 · 权限 课程对象服务目标 · 章节 · 块 · 题目 · 版本 文档接入服务病毒检查 · OCR · 表格 · URL 元数据与 ACL租户 · 版本 · 日期 · 密级 AI 编排与状态机job_id · idempotency · retries · model/prompt/index version 简报完整度 异步任务 风险路由 输出 Schema 混合检索BM25 + Vector + Reranker 模型网关模型 · Prompt · 限额 来源 / 冲突校验支持率 · 版本 · 外部来源 质量规则覆盖 · 歧义 · 发布条件 教学质控与人工审批服务 对象存储原始资料 · 页面 · 课程附件加密 · 生命周期 元数据 DB租户 · 版本 · ACL · 来源PostgreSQL 检索索引全文索引 · 向量索引ACL-aware LMS 数据库课程版本 · 分配 · 成绩补训 · 报告 事件流生成 · 来源 · 编辑 · 质控学习 · 导出 数据仓库漏斗 · 分群 · 实验题目分析 · 监控 黄金评估集 / 红队样本检索 · 支持率 · 冲突 · 注入 · 租户 模型与 Prompt Registry版本 · 发布 · 回滚 · 对照实验 质量与学习 Dashboard离线评估 · 线上行为 · 题目指标 Feature Flag / 回滚租户 · 课程类型 · 风险 · 版本 治理委员会产品 · 教学 · 安全

关键技术边界

权限在召回前生效;模型输出不直接发布;课程对象、来源和版本独立存储;失败以 job 和 block 为单位恢复。

关键数据边界

行为事件只记录分析所需 ID 和状态;原始航司资料不进入通用分析仓库;学员数据与模型训练默认隔离。

关键治理边界

模型、Prompt、索引和课程版本分别管理;Feature Flag 控制范围;离线与在线指标共同决定扩大或回滚。

01 · COMPUTABLE

体验可计算

界面状态来自 API、Schema、事件和版本,不依赖模糊文案。

02 · OBSERVABLE

系统可观测

检索、生成、审阅、质控和学习都留下可诊断信号。

03 · REVERSIBLE

失败可恢复

章节级重试、稳定 ID、幂等、版本差异和人工接管。

04 · GOVERNED

能力可治理

租户、风险、课程类型、模型与知识版本共同限制 AI 权限。