2026-03-30 打卡(第 27 次)
今天学了什么 / 做了哪些具体操作
Humanizer 线上 Bug 修复(核心)
-
排查 Usage History 数据不写入问题
- 发现
saveHistory、incrementUserUsage、incrementDailyUsage三个 D1 写入都是 fire-and-forget(没有 await),Cloudflare Edge Worker 返回响应后立即终止,异步写入全部丢失 - 写了 debug 端点验证 D1 表结构和插入能力,确认是异步时序问题而非表结构问题
- 修复:全部改为 await,确保写入完成后再返回
- 发现
-
前端优化 - 隐藏后端实现细节
- Usage History 列表移除了 provider 名称显示(之前会暴露 "zhipu" 给用户)
-
前端优化 - 文本长度限制
- 新增
/api/user-plan端点,根据登录状态返回用户 plan - 免费用户 textarea 限制 2000 字符,写满后引导升级 Pro(10,000 字符)
- 付费用户 textarea 限制 10,000 字符
- 字符计数器实时显示,接近上限时变黄色提醒
- 前后端双重校验
- 新增
域名绑定
- miaomiao.uk CNAME 绑定到 Cloudflare Pages,SSL 自动签发
解决了什么问题 / 有什么新认识
- Edge Worker 异步编程的坑:在 Cloudflare Workers 中,fire-and-forget 模式完全不可靠。Worker 在发送响应后会立即终止所有未完成的异步操作。这是和 Node.js 最大的区别——Node.js 进程不会因为 res.send() 就退出
- 前端引导升级的设计思路:与其只靠后端拦截返回错误,不如在用户操作路径上提前感知限制。在 textarea 写满那一刻给出升级引导,转化率会比报错页面高得多
- TypeScript 严格模式:fetch().then(json) 的类型推断在 strict 模式下需要显式断言(
as Promise<T>),踩了两次类型错误才通过构建
接下来要学什么 / 做什么
- 支付集成(Stripe)—— 这是变现闭环的关键一步
- SEO 优化 + Product Hunt 发布准备
- 给 Dashboard 加上 credit 消费统计和图表
- 考虑加一个 "batch humanize" 功能(多篇文本一次处理),付费用户专属