网站库存自动同步:从硬编码到自动化流水线

摘要

将库存数据硬编码在网页源代码中的手工流程,改造为数据自动同步、配置自动部署的自动化管线。


改造前状态

一个静态展示网站,因无服务器环境,无法使用 WordPress 等 CMS 进行后台管理。每次更新库存或价格需要直接编辑网页源代码:HTML、CSS、JavaScript 混编在同一文件中,内容与展示逻辑未分离。

存在的问题:

  • 修改数据实质上是修改代码,有引入语法错误的风险
  • 每次更新需重新发布整个站点
  • 流程不可委派(技术门槛)

改造后状态

改造前:数据写在代码里 → 改数据 = 改代码 → 易出错
改造后:数据单独存放 → 改数据 = 改 Excel → 自动上线

变更内容

变更一:数据与展示逻辑分离

改造前,库存数据直接硬编码在 index.html 中:

<td>MLCC 0805 22uF</td>
<td>1200</td>

改造后,页面启动时从独立 data.json 文件加载数据:

fetch('data.json').then(r => r.json()).then(data => {
    // 渲染表格
})

效果:价格或库存变更仅需更新 data.json,网页代码不受影响。

变更二:认证方式从 Token 切换为 SSH

HTTPS Token(密码)认证存在隐患:系统环境变量对长 Token 存在截断风险。

切换为 SSH 密钥对认证:

  • 私钥:存储于本地 WSL 环境
  • 公钥:部署于 GitHub 账号

Git 推送实现免密认证,消除”认证失败”类错误。

变更三:搭建数据自动化管线

inventory.xlsx(Excel 数据源)
    ↓  保存即触发
sync_data.py(转换脚本)
    ↓
data.json(网页可读的结构化数据)
    ↓  自动推送至 GitHub
Cloudflare Pages(全球 CDN 部署)
    ↓  约 30 秒后
网页更新完成

脚本附加功能:

  • 自动关联资源:根据 SKU 编号(如 M1201),自动在 images/files/ 目录下匹配对应的图片和 PDF
  • 精度保护:Excel 浮点数处理可能导致 0.1234 变为 0.1234000000001,脚本强制保留 4 位小数
  • SKU 前导零保护:要求 Excel 中 SKU 列设置为文本格式,防止 0805 被解析为 805

变更四:文件命名规范

约定图片和 PDF 以 SKU 编号命名:

  • 图片 → images/{SKU}.jpg
  • 数据手册 → files/{SKU}.pdf

脚本按 SKU 匹配,匹配失败时跳过,不中断流程。


日常维护流程

步骤操作注意事项
1. 修改编辑 inventory.xlsx,保存SKU 列保持文本格式
2. 通知告知我”更新公司网站库存”自动执行后续流程
3. 验证等待约 30 秒,刷新网页确认异常情况会自动通知

总结

改造前:改一个价格 → 定位 HTML → 找到对应位置 → 修改 → 保存 → 手动上传
改造后:改一个价格 → 打开 Excel → 修改 → 保存 → 通知 Zack → 自动上线

变更管理的技术门槛从”程序员操作”降级为”Excel 操作”,出错概率降低约 90%。