福利库存登记系统运维(welfare-inventory-manager)
Overview
本技能沉淀了「员工福利自选登记」系统的完整运维知识:部署拓扑、API 契约、数据模型、以及每期更换产品的标准流程。系统由前端填报页、后台管理页、钉钉文档(每小时自动同步)和一台服务器上的 Node 后端组成;后端 API 是产品与库存的唯一数据真相源。
本技能最关键的价值:把"换一期福利产品"从「登服务器改代码再重启」梳理成可复用的流程,并附三个已验证的运维脚本(库存快照、记录导出、库存修正)。
> 完整接口契约、数据模型、部署现状与已知限制见 references/system-overview.md;更换产品逐步流程见 references/product-swap-playbook.md。操作前先读这两份。
系统速览(操作前必读)
| 组件 | 地址/凭据 |
|---|---|
| 前端填报 | http://175.178.239.40:3000/ |
| 后台管理 | http://175.178.239.40:3000/admin.html(密码 jianjie666) |
| 钉钉文档 | https://docs.dingtalk.com/i/nodes/14lgGw3P8vqw5wP1hgGlMYZjJ5daZ90D(每小时自动同步) |
| 后端 | 175.178.239.40:3000 上的 Node 服务,提供全部 /api/* |
- 产品
id是字符串(如"p1"),不是数字。 - 前端只渲染 API 返回的数据,不在 HTML 里硬编码产品。
- 后端源码不在 WorkBuddy 本地(HTTP 取不到),改产品/逻辑需 SSH 登服务器;前端静态资源可 curl 备份。
核心任务一:更换产品(每期必做)
触发语示例:"换一期福利产品""把产品换成 XX""下个月换批货"。
按 references/product-swap-playbook.md 执行,要点:
1. 先用表格敲定新清单(id 用 p1..pN、名称、规格、图片文件名、初始库存)。
2. 图片上传到服务器 assets/images/,img 字段写相对路径。
3. 当前限制:系统无产品增删改接口,需 SSH 登服务器改后端 products 数组 + 重载/重启服务(流程手册 §1)。
4. 验证:GET /api/stock 返回新数据、前端卡面正确、后台库存/记录正确。
5. 若跨周期,同步更新前端标题周期文案(index.html 约 6、95-97 行)与后台标题(admin.html 约 75 行);旧登记按约定清空或保留。
> 推荐改进(流程手册 §2):把产品抽到 data/products.json + 加热加载/CRUD 接口,日后换产品即改配置无需重启。需要实施时向用户索取后端源码或服务器权限。
核心任务二:日常运维
- 修正库存(填错/盘点差异):后台网页「保存」,或脚本
scripts/update-stock.js --id p1 --stock 50。 - 删除并回流(员工填错/重复/取消):后台记录表「删除并回流」按钮,自动
stock += 1。 - 导出登记记录(活动结束归档):脚本
scripts/export-records.js一键导出 CSV(Excel 可直接打开)。 - 库存/服务健康检查:脚本
scripts/check-status.js拉/api/stock打印快照。
脚本用法(均用 Node 22 运行,无需安装依赖)
NODE="C:\Users\简健001\.workbuddy\binaries\node\versions\22.22.2\node.exe"
SKILL="C:\Users\简健001\.workbuddy\skills\welfare-inventory-manager\scripts"
# 1) 实时库存快照(无鉴权)
"$NODE" "$SKILL/check-status.js" http://175.178.239.40:3000
# 2) 导出全部登记记录为 CSV(默认密码 jianjie666,可用 --pwd 覆盖)
"$NODE" "$SKILL/export-records.js" --base http://175.178.239.40:3000 --out 福利登记记录.csv
# 3) 修正某产品库存(⚠️ 会覆盖线上库存,确认无误再执行)
"$NODE" "$SKILL/update-stock.js" --id p1 --stock 50 --pwd jianjie666
> update-stock.js 会真实改写生产库存,仅在有明确指令时使用,且先确认目标 id 与数值。
常见坑(先排查这些)
- 图片 404:
img路径与assets/images/实际文件不一致(大小写敏感)。 - 库存不刷新:后端改完未重载,或前端 15s 轮询缓存;硬刷浏览器。
- 产品卡灰掉不可选:
stock<=0视为售罄。 - 更换产品后旧记录错位:提交记录的
productId指向字符串 id,换期重排 id 前先决定是否清空旧记录。 update-stock报"产品不存在":id 是字符串(如p1),勿传数字。
Resources
references/system-overview.md— 部署拓扑、完整 API 契约、数据模型、当前库存快照、已知限制(无产品 CRUD 接口)。references/product-swap-playbook.md— 更换产品逐步流程 + 推荐配置化方案 + 检查清单。scripts/check-status.js— 实时库存快照。scripts/export-records.js— 导出登记记录为 Excel 友好 CSV。scripts/update-stock.js— 修正产品库存(谨慎使用)。