首页 / 教学门户 | student-checklist.md · 作业 checklist
文档: 快速开始 SKILL 说明 完整演练 学员清单 讲师指南 评分量表 examples 指南 更新日志 原始 PRD 教学门户 →

学员作业 checklist · 业务助手智能体

用法:把这份文件复制一份到你自己项目的 outputs/ 下,改名 checklist-<产品名>.md,边做边勾。
每一项的"判定标准"是红绿灯,打不上勾就回去重做,不要跳。
做完后,这份 checklist 就是你交付的"过程文档",可作为培训考核依据。

0. 基本信息


1. 阶段一:需求发现(目标 30 分钟以内)

判定标准:3 轮对话搞清楚业务场景、用户角色、核心功能,没有一次问 10 个问题把用户淹没。

1.1 第 1 轮:角色 + 痛点

  • [ ] 主动告诉用户"接下来会发生什么"
  • [ ] 问到了「这个工具给谁用」
  • [ ] 问到了「解决什么具体痛点」
  • [ ] 问到了「大致使用频率」
  • [ ] 没有一次问超过 3 个问题
  • 我的第 1 轮问题(复制你实际问的):

    
    1.
    2.
    3.
    

    1.2 第 2 轮:核心功能 + 字段

  • [ ] 问到了「主要想记录哪些信息」
  • [ ] 问到了「关键操作」(新建 / 编辑 / 删除 / 搜索 / 导出)
  • [ ] 问到了「有没有流程性要求」
  • [ ] 给用户提了字段建议,让他加 / 删
  • 我的第 2 轮问题:

    
    1.
    2.
    3.
    

    1.3 第 3 轮:风格 + 参考

  • [ ] 问到了「风格偏好」
  • [ ] 问到了「有没有参考的网站/产品」
  • [ ] 主动预告"接下来要写产品文档"
  • 我学到的关键点(用一句话写):

    
    
    

    1.4 反模式自检

  • [ ] 我没有一次问超过 3 个问题
  • [ ] 我没有替用户做业务决策
  • [ ] 我没有急着进 PRD
  • 阶段一用时(分钟):____ 阶段一通过:□ 是 □ 否


    2. 阶段二:PRD 自动生成(目标 60 分钟以内)

    判定标准:PRD 写到文件(不是对话),包含所有必要章节,用户审阅后确认。

    2.1 写出 PRD

  • [ ] PRD 写到 outputs/prd-<产品名>-v0.1.md
  • [ ] PRD 包含「产品定位」
  • [ ] PRD 包含「目标用户」
  • [ ] PRD 包含「使用场景」
  • [ ] PRD 包含「核心功能列表」(带优先级 P0/P1/P2)
  • [ ] PRD 包含「页面结构」(主导航 + 子视图)
  • [ ] PRD 包含「字段定义」(每张表/模块)
  • [ ] PRD 包含「交互细节」
  • [ ] PRD 包含「视觉风格」
  • [ ] PRD 顶部有「产品名 / 版本 / 最后更新」字段
  • 我的 PRD 路径:

    
    outputs/prd-<产品名>-v0.1.md
    

    PRD 字节数:____ KB PRD 章节数:____ 个

    2.2 主动告知用户

  • [ ] 告诉用户 PRD 文件路径
  • [ ] 告诉用户请逐项审阅
  • [ ] 告诉用户有问题说"修改 XX 部分"
  • [ ] 告诉用户没问题说"OK"
  • 2.3 用户审阅与修改

  • [ ] 用户审阅了 PRD
  • [ ] 用户给了反馈(我做了 N 处修改):N = ____
  • [ ] 用户最终确认 "OK / 开始生成 Demo"
  • 我做的修改:

    
    1.
    2.
    3.
    

    2.4 反模式自检

  • [ ] PRD 写到文件(不写到对话)
  • [ ] 我没有闷头生成 Demo,等用户确认了
  • [ ] 我没有省略字段定义
  • 阶段二用时(分钟):____ 阶段二通过:□ 是 □ 否


    3. 阶段三:网页应用生成(目标 30 分钟以内)

    判定标准:单文件 HTML Demo,所有 CRUD 真的能用,左右导航,双主题。

    3.1 生成 Demo

  • [ ] Demo 写到 outputs/<产品名>/index.html
  • [ ] 是单文件 HTML(没拆多文件)
  • [ ] 双击能在浏览器打开
  • 我的 Demo 路径:

    
    outputs/<产品名>/index.html
    

    Demo 字节数:____ KB Demo 视图数:____ 个

    3.2 硬性自检(对照 SKILL.md 第 5 节)

  • [ ] 主导航在左侧(lg:pl-60)
  • [ ] 顶部 16px 固定栏
  • [ ] 浅色 + 深色双主题(自动 + 手动切换)
  • [ ] 5 种状态色(绿/黄/红/蓝/灰)
  • [ ] Tailwind safelist 包含动态状态色类
  • [ ] lucide 图标(零 emoji)
  • [ ] 每个图标按钮带 aria-label
  • [ ] Modal 含 ESC 关闭
  • [ ] Modal 含 click.outside 关闭
  • [ ] localStorage 持久化(关闭浏览器再开数据还在)
  • [ ] 移动端 375px 适配(用手机/开发者工具看)
  • 3.3 CRUD 实地测试(对照 crud-pattern.md)

  • [ ] 新建一条数据,保存后出现在列表里
  • [ ] 刷新页面,数据还在
  • [ ] 编辑一条数据,保存后内容更新
  • [ ] 删除一条数据,有确认弹窗 + 删除后从列表消失
  • [ ] 搜索/筛选能用(如果有)
  • 我测过的新建/编辑/删除次数:____

    3.4 主动告知用户

  • [ ] 告诉用户 Demo 路径
  • [ ] 告诉用户怎么用(双击打开、刷新不丢)
  • [ ] 告诉用户怎么改(在对话里继续提建议)
  • 阶段三用时(分钟):____ 阶段三通过:□ 是 □ 否


    4. 场景 A:加一个字段(目标 15 分钟以内)

    判定标准:PRD 改、代码改、CHANGELOG 改,老数据不丢。

    4.1 设计要加的字段

    字段名:____(中英文都可以) 类型:□ 文本 □ 数字 □ 日期 □ 枚举 □ 关联 □ 布尔 必填:□ 是 □ 否 说明:

    
    
    

    4.2 30 秒判断:这是不是场景 A?

  • [ ] 这次改动是「字段调整」(不是流程推翻、不是视觉微调)
  • [ ] 影响范围 < 30% 代码
  • [ ] → 是场景 A
  • 4.3 改前告诉用户要做什么

  • [ ] 给用户看了"准备改 N 处"清单
  • [ ] 说明了数据兼容方案(老字段怎么兜底)
  • [ ] 用户确认了
  • 4.4 实际改动

  • [ ] PRD 字段表加了这一行,版本号 v0.x → v0.x+1
  • [ ] Demo 代码加了字段处理(default + 保存 + 展示)
  • [ ] CHANGELOG.md 顶部加了一段记录
  • [ ] 老数据兼容:?? defaultValue?? null
  • 4.5 改完告诉用户

  • [ ] 告诉用户改了什么(枚举 1-3 条)
  • [ ] 告诉用户数据是否兼容
  • [ ] 告诉用户怎么验证(打开哪个视图,点哪个按钮)
  • 4.6 实地验证

  • [ ] 打开 Demo,看到新字段
  • [ ] 新建一条带新字段的数据,保存后展示正确
  • [ ] 老数据(改前建的)还能看到,新字段显示为默认值
  • 场景 A 用时(分钟):____ 场景 A 通过:□ 是 □ 否


    5. 场景 B:把对话内容合并到 PRD(目标 20 分钟以内)

    判定标准:从对话里抽出事实,去重,定位到对应章节,用户确认后才写文件。

    5.1 触发

  • [ ] 用户明确说"把刚才聊的也写到 PRD" / 类似的话
  • → 或者:

  • [ ] 我推断出有 2 轮以上对话在补充业务细节,主动问用户"要不要合并"
  • 5.2 抽对话事实

    我从对话里挑出 N 条事实陈述(过滤掉寒暄、确认、疑问):N = ____

    我挑出的事实:

    
    1.
    2.
    3.
    4.
    

    5.3 去重 + 定位

  • [ ] 和当前 PRD 比对了,标了哪些是新的、哪些是重复的
  • [ ] 每条新信息路由到对应章节(产品定位/字段/功能/业务规则)
  • 5.4 草案给用户看

  • [ ] 在对话里展示了"准备合并 N 条"的清单(没直接打文件)
  • [ ] 标了每条是「新增」还是「补全」
  • [ ] 用户可以微调措辞
  • 5.5 用户确认后写入

  • [ ] 用户说 OK(或微调后 OK)
  • [ ] PRD 真的写了文件,版本号 +1
  • [ ] CHANGELOG.md 写了这段变更
  • 5.6 主动询问重生成

  • [ ] 改完问用户"PRD 改完了,要重新生成应用吗"
  • [ ] 用户给了答复:□ 现在重生成 □ 之后再改 □ 这版规则不用落代码
  • 场景 B 用时(分钟):____ 场景 B 通过:□ 是 □ 否


    6. 场景 C:重大改动重生成(目标 60 分钟以内)

    判定标准:冻结老版本、主版本 +1、写迁移函数、Breaking 标注、回滚方法齐全。

    6.1 30 秒判断:这是不是场景 C?

  • [ ] 改动影响 > 30% 代码,或 3 个以上模块
  • [ ] 改了核心流程,或改了数据结构
  • [ ] → 是场景 C
  • 6.2 冻结老版本

  • [ ] outputs/<产品名>/ 复制到 outputs/<产品名>-v-snapshot-YYYYMMDD/
  • [ ] 老 PRD 复制到 outputs/_archive/prd-<产品名>-v.md
  • [ ] 用户确认了冻结方案
  • 冻结后文件结构:

    
    outputs/
    ├── <产品名>-v0.X-snapshot-YYYYMMDD/    ← 冻结的老版
    ├── _archive/
    │   └── prd-<产品名>-v0.X.md            ← 冻结的 PRD
    └── <产品名>/                            ← 即将写新版
    

    6.3 主版本号 +1

  • [ ] PRD 顶部版本从 v0.X → v1.0
  • [ ] PRD 顶部标注「基于 v0.X 重大重构」
  • [ ] 新文件 outputs/prd-<产品名>-v1.0.md
  • 6.4 整页重写(不继承老代码)

  • [ ] 我是从 PRD 重新生成的,不是基于老 HTML 改
  • [ ] 重写时新代码结构更清晰(不是把老逻辑搬过来)
  • 6.5 数据迁移函数

  • [ ] 写了 migrateData_vX_vY(oldData) 函数
  • [ ] 启动时检测版本,自动调用迁移
  • [ ] 迁移失败的数据备份到 localStorage[<产品名>__backup_vX]
  • [ ] 老数据完整保留(不丢字段)
  • 我的迁移函数关键代码:

    
    function migrateData_v0_v1(oldData) {
      //
    }
    

    6.6 CHANGELOG 大事记

  • [ ] CHANGELOG.md 顶部加了一段大事记
  • [ ] 标了 ⚠️ Breaking
  • [ ] 列了业务/技术/数据三个维度的变化
  • [ ] 给了回滚方法(把 snapshot 复制回来)
  • 6.7 改完告诉用户

  • [ ] 改了哪 N 处(枚举 1-3 条)
  • [ ] 数据怎么兼容的
  • [ ] 怎么验证(刷新触发迁移、看备份、控制台命令)
  • [ ] 怎么回滚(出问题时把 snapshot 复制回来)
  • 6.8 实地验证

  • [ ] 刷新一次 Demo,触发迁移
  • [ ] 老数据还在,字段没丢
  • [ ] 控制台跑 localStorage.getItem("<产品名>__backup_vX") 能看到备份
  • [ ] 新流程生效(新数据走新路径)
  • 场景 C 用时(分钟):____ 场景 C 通过:□ 是 □ 否


    7. 场景 D:小改直接动代码(目标 10 分钟以内)

    判定标准:纯视觉/文案,不改业务,PRD 不动,CHANGELOG 加 patch 记录。

    7.1 30 秒判断:这是不是场景 D?

  • [ ] 是纯视觉/文案/微调
  • [ ] 不改字段、不改流程、不改视图结构
  • [ ] → 是场景 D
  • 7.2 改前确认(不必须)

    场景 D 可以直接动,但建议先告诉用户改什么:

  • [ ] 简短告诉用户"我准备改 X,Y"
  • → 或者:

  • [ ] 直接动手(改动很小,改完再说)
  • 7.3 实际改动

  • [ ] 改了 CSS class / 内联样式 / 文案
  • [ ] 没动业务逻辑
  • [ ] 没动 PRD
  • [ ] CHANGELOG.md 顶部加了 patch 记录(不升版本号)
  • 我改了:

    
    -
    -
    

    7.4 改完告诉用户

  • [ ] 改了什么(1-2 条)
  • [ ] 提示「刷新浏览器」
  • 7.5 实地验证

  • [ ] 刷新浏览器,看到改动
  • [ ] 深色模式下也看着正常(如果改了颜色)
  • 场景 D 用时(分钟):____ 场景 D 通过:□ 是 □ 否


    8. 最终交付清单

    判定标准:PRD / 代码 / CHANGELOG 三件套齐,过程文档完整,数据能导出。

    8.1 必备文件

  • [ ] outputs/prd-<产品名>-v<最终版>.md
  • [ ] outputs/<产品名>/index.html
  • [ ] outputs/<产品名>/CHANGELOG.md
  • [ ] outputs/<产品名>/README.md(用户手册,告诉别人怎么用)
  • [ ] checklist-<产品名>.md(本文件,作为过程文档)
  • 8.2 归档(如果做过场景 C)

  • [ ] outputs/_archive/prd-<产品名>-v0.X.md
  • [ ] outputs/<产品名>-v0.X-snapshot-YYYYMMDD/index.html
  • 8.3 数据

  • [ ] Demo 在浏览器里跑起来,数据有(打开看仪表盘,有没有 KPI)
  • [ ] 数据导出按钮能用(如果有)
  • [ ] 至少 3 条真实业务数据(不是空架子)
  • 我的 Demo 数据:

  • 招聘需求:____ 条
  • 候选人:____ 条
  • 面试评价:____ 条
  • (改成你自己的实体和数据)

    8.4 业务自检

    找一个没用过这个产品的同事,让他:

  • [ ] 看 README 后能上手(给 5 分钟)
  • [ ] 能完成至少 1 个核心场景(比如新建一条记录)
  • [ ] 没问"这个按钮是干嘛的"
  • 同事反馈(记录他说的 1-2 句):

    
    
    

    9. 自评打分

    9.1 完成度(每项 10 分,满分 70)

    9.2 质量分(每项 6 分,满分 30)

    (实际满分 30,这里写 36 是因为可以奖励 6 分给特别出色的项)

    9.3 总分

    完成度( / 70)+ 质量分( / 30)= 总分 / 100

    等级:

  • 90+:优秀,直接可交付生产
  • 75-89:良好,需要少量打磨
  • 60-74:合格,需要中等打磨
  • < 60:不合格,需要返工
  • 我的总分:____ 我的等级:____

    9.4 自我反思(3 句话)

    我做得最好的:

    
    
    

    我做得最差的:

    
    
    

    下次我会在哪方面改进:

    
    
    

    10. 提交给培训讲师

    学员在课程结束前,把以下文件打包发邮件/上传到共享目录:

    
    提交物/
    ├── outputs/
    │   ├── prd-<产品名>-v<最终版>.md
    │   ├── <产品名>/
    │   │   ├── index.html
    │   │   ├── CHANGELOG.md
    │   │   └── README.md
    │   ├── _archive/(如果有)
    │   └── <产品名>-v0.X-snapshot-YYYYMMDD/(如果有)
    ├── checklist-<产品名>.md   ← 本文件,带勾选结果
    └── 演示视频(可选,3-5 分钟录屏)
    
  • [ ] 提交物目录完整
  • [ ] checklist 全部打勾(或明确标注"未做"的原因)
  • [ ] 演示视频录了(可选)
  • [ ] 邮件/共享链接发给讲师
  • 提交日期:____ 讲师确认:□ 已收 □ 待确认 □ 退回修改


    附录:常见挂科项

    最容易挂的 10 项(讲师评分时重点看):

  • PRD 写到对话里(必须写文件)
  • PRD 写完闷头生成 Demo(没等用户确认)
  • CRUD 是空架子(按钮在,提交没反应)
  • 改了字段没写 CHANGELOG
  • 改了字段没升 PRD 版本号
  • 改了字段没做数据兼容(老数据崩了)
  • 场景 C 没冻结老版本,出问题回不去
  • 场景 C 没写迁移函数,数据丢了
  • 主导航放右侧(用户已经明确要求左侧)
  • 视觉用了 emoji 当图标(用 lucide)
  • 每挂一项扣 5-10 分,直到扣完为止。

    walkthrough-hr-recruitment.md · 完整演练
    instructor-guide.md · 讲师课程大纲