撞墙 A:Excel 死了 · HTML 活着
让 AI 直接往页面加 3 个客户,体会「改 HTML 比改 Excel 快」,但也埋下「每次都手工加?」的问。
3 个新客户出现在卡片里。讲师追问:「老板每周都加几个呢?每次都回来手工加?xlsx 那边怎么办?」引出持久化。
只使用交付包内的课堂模拟数据;不得替换为真实客户隐私。涉及账号、密码、部署、发布、外发或第三方提交时,停在最终动作前等待人工确认。
经历 HTML、localStorage 和同桌共享的边界,再把真值迁移到 Cloudflare D1。
让 AI 直接往页面加 3 个客户,体会「改 HTML 比改 Excel 快」,但也埋下「每次都手工加?」的问。
3 个新客户出现在卡片里。讲师追问:「老板每周都加几个呢?每次都回来手工加?xlsx 那边怎么办?」引出持久化。
只使用交付包内的课堂模拟数据;不得替换为真实客户隐私。涉及账号、密码、部署、发布、外发或第三方提交时,停在最终动作前等待人工确认。
看到刷新就丢,理解页面内存不是持久层。
刷新后新增客户消失——看到「页面内存不是持久层」。
只使用交付包内的课堂模拟数据;不得替换为真实客户隐私。涉及账号、密码、部署、发布、外发或第三方提交时,停在最终动作前等待人工确认。
用 localStorage 把数据存进浏览器,解决刷新丢失。
新增一个客户后刷新页面,它还在;关掉浏览器重开也在。硬编码数据只作为首次启动的种子。
只使用交付包内的课堂模拟数据;不得替换为真实客户隐私。涉及账号、密码、部署、发布、外发或第三方提交时,停在最终动作前等待人工确认。
看到 localStorage 数据同桌打不开,理解它解决不了共享与同步。
同桌打不开你的数据——看到 localStorage 的边界,引出真云端 D1。
只使用交付包内的课堂模拟数据;不得替换为真实客户隐私。涉及账号、密码、部署、发布、外发或第三方提交时,停在最终动作前等待人工确认。
用已授权的 wrangler 建 D1 数据库和带稳定主键的 customers 表。
D1 数据库 ruida_crm 创建成功,customers 表建好且含 id 主键与 owner_id 列。
只使用交付包内的课堂模拟数据;不得替换为真实客户隐私。涉及账号、密码、部署、发布、外发或第三方提交时,停在最终动作前等待人工确认。
从 canonical CSV 一次性把客户批量导入 D1,确立唯一事实来源。
customers-linked.csv 全部行入库 D1,每行都有 id 和 owner_id;换台电脑查也是同一份数据。
只使用交付包内的课堂模拟数据;不得替换为真实客户隐私。涉及账号、密码、部署、发布、外发或第三方提交时,停在最终动作前等待人工确认。
把 dashboard 重构成一个 Worker 应用、数据走 D1,并部署出公开网址。
打开部署后的公开网址,页面正常、增删改查后刷新仍是同一份数据;把网址发给同桌,对方看到的和你一样。
只使用交付包内的课堂模拟数据;不得替换为真实客户隐私。涉及账号、密码、部署、发布、外发或第三方提交时,停在最终动作前等待人工确认。
确认 D1 同时满足持久化/单一事实来源/同步/共享,一本账落地。
同桌能打开同一份数据;能指着 D1 说清它同时满足云端化四属性——一本账真正落地。
只使用交付包内的课堂模拟数据;不得替换为真实客户隐私。涉及账号、密码、部署、发布、外发或第三方提交时,停在最终动作前等待人工确认。