单元三 做一个网络服务 · 第 12 课
周报助手·规则版
先做一个不用 AI 的版本:按关键词把工作记录分组。它不花钱、不依赖网络,跑通了再加 AI,出了问题也好定位。
本课目标
- 写一份清楚的需求,让 AI 做出周报助手的第一版。
- 用
npm start启动项目。 - 按验收清单逐条检查,满意后存档。
先懂概念:先跑通,再加功能
做产品有一个朴素的原则:先做一个最简单但能用的版本,再一点点加功能。每一步都能跑、都存档,出了问题就知道是最近哪一步引入的。
周报助手的第一版这样工作:
- 你在网页上贴一段工作记录,每行一件事;
- 程序看每行开头的关键词,比如“完成:”“进行中:”“问题:”“下周:”,把它们分到对应的组;
- 拼成一份 Markdown 格式的周报,显示在网页上。
跟着做
1. 写需求,交给 AI
cd ~/ai-course/weekly-report
codex把下面这份需求完整发给它:
请在当前文件夹做一个“AI 周报助手”的第一版(规则版),要求如下。
技术要求:
- 只用 Node.js 自带模块,不要安装任何依赖。
- 入口文件 server.js;创建 package.json,"type" 设为 "module",scripts 里的 start 为 node server.js。
- 监听地址从环境变量 HOST 读取,默认 127.0.0.1(只允许本机访问);端口从环境变量 PORT 读取,默认 3000。
功能:
- GET / 返回 public/index.html:一个文本框、一个“生成周报”按钮、一个显示结果的区域和一个“复制”按钮,界面简洁,中文显示正常。
- POST /api/report 接收 JSON {"notes": "..."},返回 JSON {"report": "..."}。
- 生成规则:逐行读取,按行首关键词分组——“完成/已完成”归入“本周完成”,“进行中/跟进”归入“进行中”,“问题/风险/阻塞”归入“问题与风险”,“下周/计划”归入“下周计划”,其余归入“其他”。关键词后面的中文或英文冒号要去掉。没有内容的分组不显示。
- GET /healthz 返回 ok,后面部署时用来检查服务是否活着。
- 输入为空时返回 400 和一句中文提示。
验收:先告诉我你的计划和文件结构,等我确认后再写。写完后告诉我怎么启动,并用一句话说明每个文件的作用。审查它的计划,确认后回复“可以”。写完后退出 Codex。
2. 启动
npm start终端打印访问地址后,打开 http://localhost:3000。
Windows 上如果
npm报“因为在此系统上禁止运行脚本”,回到第 5 课,运行那条Set-ExecutionPolicy命令。
3. 用测试数据试一试
把下面这段贴进文本框,点“生成周报”:
完成:客户回访名单整理,共 4 家
完成:9 月报销汇总已提交财务
进行中:国庆促销方案,预算 2.8 万,完成 80%
问题:打印机墨盒缺货,影响出单
下周:确认上海展会合同
下周:寄送北辰教育样品
顺便买了绿植你应该看到
一份分好组的周报,大致是这样:
# 本周工作周报
## 本周完成
- 客户回访名单整理,共 4 家
- 9 月报销汇总已提交财务
## 进行中
- 国庆促销方案,预算 2.8 万,完成 80%
## 问题与风险
- 打印机墨盒缺货,影响出单
## 下周计划
- 确认上海展会合同
- 寄送北辰教育样品
## 其他
- 顺便买了绿植措辞、标题和排版不必完全一样,分组对就行。
验收清单
逐条试一遍,不通过就把现象告诉 AI,让它修改:
- 文本框为空时点按钮,显示中文提示,而不是报错或白屏。
- 用英文冒号写“完成:”也能正确分组。
- 行首没有关键词的内容进了“其他”。
- “复制”按钮能把结果复制下来。
- 访问 http://localhost:3000/healthz 显示
ok。 - 中文没有乱码。
读懂它
你不需要会写代码,但应该大概知道它是怎么工作的。重新打开 Codex,问它:
用 5 句话给我讲讲这个程序是怎么工作的:用户点按钮之后,数据经过了哪些步骤?存档
确认都没问题后,停止服务器(Ctrl + C),存档。第 11 课的 hello.js 已经用不上了,顺手删掉:
git rm hello.js
git add -A
git commit -m "周报助手规则版"参考实现
如果 AI 写的版本怎么改都跑不起来,可以下载 参考实现 对照。它包含到第 22 课为止的全部功能(AI 版、访问密码、每日上限),第 25 课的“清空”按钮留给你自己完成。不必和它一模一样。
常见问题
改了代码,网页没变化? 服务器启动时就把代码读进去了,改完要 Ctrl + C 停止,再 npm start 重新启动,然后刷新网页。
点按钮没反应? 按 F12 打开开发者工具,看“控制台(Console)”有没有红色报错,把报错复制给 AI。
自检
-
npm start能启动周报助手。 - 测试数据生成了分好组的周报。
- 验收清单全部通过。
- 规则版已经存档。