114 KiB
-
2026-10-03:修复云端批量导入账号失败;根因是同一 FileReader 连续发起 ArrayBuffer 与文本读取触发 InvalidStateError,已移除重复读取、重建 gzip 并平滑重载;无落库接口回归、公网下发文件比对、服务与 HTTP 探针通过,备份
/home/ubuntu/dy-backups/user-import-fix-20261003_175716/,Git提交dca38d5,未操作11.79生产;训练记录:训练记录/2026-10-03-云端批量导入账号失败修复.md。 -
2026-10-02:完整扫描钉盘出库904个、库存1755个CSV;两端补录2026-10-01旺店通出库各1937条/47086件、2026-10-02库存21仓/21766条,8.186另补录历史250条及近期清洗造成的40个组合行级差异;最终组合缺口0,最新库存可用47121084、生产在途1799959、采购在途12209180,两端缓存各刷新11个模块,服务和HTTP核验通过,备份在本地
dy-dashboard/backups/dingtalk_sync_20261002/与云端~/dy-backups/dingtalk_sync_20261002/,未操作11.79;训练记录:训练记录/2026-10-02-钉盘库存与日出库更新到8.186和云端.md。 -
2026-10-01:完整扫描钉盘出库903个、库存1734个CSV;两端补录2026-09-30旺店通出库各1949条/46581件,云端补录2026-10-01库存21仓,8.186另补录历史250条;最终组合缺口0,10月1日库存21743条,两端缓存各刷新11个模块,服务和HTTP核验通过,备份在本地
dy-dashboard/backups/dingtalk_sync_20261001/与云端~/dy-backups/dingtalk_sync_20261001/,未操作11.79;训练记录:训练记录/2026-10-01-钉盘库存与日出库更新到8.186和云端.md。 -
2026-09-30:完整扫描钉盘出库902个、库存1713个CSV并同步8.186与云端;8.186补录出库3760条/库存21708条,云端补录出库3510条/库存21708条,另补回测试端清洗造成的241条行级缺口;最终组合缺口和行级行数差异均为0,备份在本地
dy-dashboard/backups/dingtalk_sync_20260930/与云端~/dy-backups/dingtalk_sync_20260930/,缓存、服务、HTTP核验通过,未操作11.79;训练记录:训练记录/2026-09-30-钉盘库存与日出库更新到8.186和云端.md。 -
2026-09-29:完整扫描钉盘出库18页/893项、库存34页/1692项;最终两端出库和库存组合缺口均为0,09-01以来逐组合行数及数量差异0。最新出库2026-09-28、库存2026-09-29,最新库存21679条/21仓,可用库存45939555;本次切片无空编码、NA、N/A、合计。两端缓存已刷新,测试端与云端服务及HTTP探针通过;未操作11.79生产。 备份:本地
backups/dingtalk_sync_20260929/、云端~/dy-backups/dingtalk_sync_20260929/;训练记录:2026-09-29-钉盘库存与日出库更新到8.186和云端.md。 -
2026-09-28:生成计划预测货品库存及出库明细表,包含2,509个货品、43列,覆盖指定基础字段、08-29至09-27出库汇总及1至35号仓库存;出库合计2,152,677、仓库明细合计8,424,762,独立复核一致;文件
计划预测货品库存及出库明细_20260928.xlsx已上传钉盘“我的文档”;随后按要求修正2,171条成本价,非零2,446条、零63条,库存出库合计不变,新版435,109字节已覆盖上传原文件并回查正常,未修改数据库。训练记录:2026-09-28-计划预测货品库存及出库明细表.md。 -
2026-09-25:执行8.186→云端→11.79两阶段部署。第一阶段已完成:云端部署前备份代码7.2M、数据库104M到
~/dy-backups/stage1-pre-sync-20260925_120500/;同步功能代码与知识库,结构核对测试985列、云端986列,云端独有finished_products.待提数量保留,无需DDL;全表行数部署前后0处变化,缓存刷新、服务active、内外网HTTP 200、下发app.js哈希一致。第二阶段云端项目包76M、数据库包104M已生成并下载到本机,51个CREATE TABLE且feedback为0,MD5和压缩校验通过;11.79连续探测为FAILED/No route to host,无法先做生产备份,故未升级生产。训练记录:2026-09-25-8.186到云端部署及11.79升级阻塞.md。 -
2026-09-25:完成钉盘库存与日出库同步。全量扫描出库18页857个CSV、库存33页1650个CSV;两端同步32个最新源文件,新增出库3532条、库存21552条,补回8.186启动清洗少的12条,并补录测试端历史2026-06-23 jdgj 250条;本地备份
backups/dingtalk_sync_20260925/,云端备份~/dy-backups/dingtalk_sync_20260925/,两端刷新11个缓存模块、服务及HTTP核验通过,未操作11.79生产。训练记录:2026-09-25-钉盘库存与日出库更新到8.186和云端.md。 -
2026-09-24:按要求核对云端周淑珍、汤定毅角色,两人均已是 super_admin 且启用,无需重复写库;云端服务 active、内外网 HTTP 200;未操作11.79生产,训练记录:2026-09-24-云端周淑珍和汤定毅超级管理员核对.md。
-
2026-09-24:排查汤定毅无法编辑用户权限,确认账号角色原为 admin;按确认更新测试环境为 super_admin,接口验证成功,服务 active、本机与局域网 HTTP 200;未动代码、未操作云端和生产,训练记录:2026-09-24-汤定毅超级管理员权限修复.md。
-
2026-09-24:修复云端下单备份软管供应商错配。确认
POZ-JMR-1909-PDD-RG的名称字段与BOM供应商均为广州永禾塑业有限公司,但旧供应商编码VEN00432指向广州恒泰莱包装科技有限公司;下单旧逻辑按编码优先导致备份显示恒泰莱。调整解析优先级为BOM供应商→物料名称供应商→回退值→编码绑定,将该物料编码修正为永禾VEN00131,并把该商品3条历史下单备份软管简称由恒泰莱修正为永禾,残留错误0;包材订单供应商仍为广州永禾。云端服务平滑重载、本机及公网HTTP 200;测试服务重启、双地址HTTP 200。云端备份:/home/ubuntu/dy-backups/purchase_supplier_fix_20260924_1600/;Git提交a2ee5bf;未操作11.79生产。训练记录:工作指南/训练记录/2026-09-24-下单备份软管供应商错配修复.md。 -
2026-09-24:完成钉盘库存与日出库同步到8.186及云端。完整扫描日出库17页/846个文件、库存33页/1,629个文件;两端新增09-21两个店铺来源、09-22六个店铺来源及09-23旺店通出库3,560条,新增09-24库存21仓21,513条。查缺补漏为8.186补回06-23京东国际250条,并恢复09-01~09-21期间89个组合因清洗少的454行。最终两端钉盘组合缺口0、09-01以来逐组合行数及数量一致;09-24库存可用46,098,005、生产在途1,606,641、采购在途13,352,051。两端各刷新11个缓存模块,服务active且HTTP探针均200。备份:本地
backups/dingtalk_sync_20260924/、云端~/dy-backups/dingtalk-sync-20260924/;未操作11.79生产。训练记录:工作指南/训练记录/2026-09-24-钉盘库存与日出库更新到8.186和云端.md。 -
2026-09-23:将当前智能体工作区的
AGENTS.md原样复制到/home/gxd/桌面/AGENTS.md,逐字节比较确认与源文件一致;源文件未修改,未操作测试、生产或云端环境。训练记录:工作指南/训练记录/2026-09-23-AGENTS文件复制到桌面.md。 -
2026-09-23:完成钉盘库存与日出库同步到8.186及云端。完整扫描出库17页/824个有效文件、库存33页/1,608个文件;两端新增09-21六个店铺来源及09-22旺店通出库(云端3,510条,8.186另补06-23京东国际250条,共3,760条),两端新增09-23库存21仓21,485条;查缺补漏再恢复8.186在09-01~09-20因清洗规则少的85组合/442行。最终两端钉盘组合缺口0、09-01以来出库行数一致,09-22旺店通2,081条/60,644件,09-23库存可用46,069,134、生产在途1,620,092、采购在途13,496,117;两端各刷11个缓存模块,服务和HTTP均200。备份:本地
backups/dingtalk_sync_20260923/、云端~/dy-backups/dingtalk-sync-20260923/;未操作11.79生产。训练记录:工作指南/训练记录/2026-09-23-钉盘库存与日出库更新到8.186和云端.md。 -
2026-09-23:重新生成遗失的 Codex 开发迁移包
/home/gxd/桌面/dy-dashboard-codex-migration-20260922.tar.gz。新包包含当前最新源码、测试、业务脚本、前端资源、Git 历史与CODEX_HANDOFF.md,排除备份、venv、日志、缓存、临时目录、数据库/快照、CSV/Excel、上传产物及预压缩缓存;353,871,689 字节、5,572 个条目,gzip/关键目录/排除项校验通过,MD531da3208aace6ff3e7dfcf6015762536。原项目和服务未改动。训练记录:工作指南/训练记录/2026-09-22-dy-dashboard迁移Codex打包.md。 -
2026-09-22:国内、海外、包材订单管理详情弹窗均展示可编辑的“计划下单日期”,并在后续布局修正中将“状态”统一移到左列,三类字段排列统一为左10项、右9项。JavaScript、三分支结构、gzip 缓存一致性与差异检查通过;8.186 测试服务 active,本机/局域网 HTTP 200,Git提交
187165f、5d38b4e。训练记录:工作指南/训练记录/2026-09-22-三类订单详情计划下单时间可编辑.md。未操作生产或云端环境。 -
2026-09-22:按旭东要求为 Codex 接续开发生成
/home/gxd/桌面/dy-dashboard-codex-migration-20260922.tar.gz,约337MiB(352,690,370 字节)、5,556个归档条目;保留源码、测试、业务脚本、前端资源与 Git 历史,排除备份、venv、日志、缓存、临时数据、数据库快照、CSV/Excel、上传导出产物及压缩运行缓存;加入CODEX_HANDOFF.md,tar/gzip 与排除项校验通过,MD59df554e749e59cd20fd94b85412d0070。未删除原项目,未操作测试和生产环境。训练记录:工作指南/训练记录/2026-09-22-dy-dashboard迁移Codex打包.md。 -
2026-09-22:按旭东要求读取钉盘最新库存与日出库并同步 8.186 测试系统与云端。钉盘全分页扫描(出库 17 页 830 文件、库存 32 页 1,587 文件;库存首扫第 3 页遇 MCP 网络错误,加重试后完整重扫)。缺口定位:出库 10 组合(09-19 tmgj、09-20 八店铺来源、09-21 wdt)、库存 21 组合(09-22 全 21 仓),两端缺口一致。两端切片备份后导入:出库 4,044 条、库存 21,448 条;修正了仓库前导零归一化导致 7 个仓漏导的问题后 09-22 齐 21 仓;31 个源文件两端 md5 全部一致,逐组合行数与件数两端完全一致,09-22 可用 45,795,993、生产在途 1,721,299、采购在途 12,515,335。两端各刷新 11 个缓存模块;8.186 用户级单元重启后 active 且本机/局域网 200,云端 kill -HUP 后 active 且本机/公网 HTTPS 200,日志无新错误。查缺补漏:云端组合缺口 0;8.186 存在 1 个组合缺口(2026-06-23 jdgj)与 74 个组合的行级差异(09-02
09-19 累计少 384 行,按来源固定差值 dyqsimelr 17、jdbz 46、jdsmj 3、tmgj 2、jdjwt 1、wdt 1~2),根因是 auto_clean「货品名称为空」删除规则(今日 08:00 自动化删 56 条),云端未跑该规则故完整。按不擅自改清洗规则与不擅自对账原则未改规则、未批量回填,已报告待旭东决定。钉盘无 2026-09-20 库存文件(来源未上传,不制造数据)。训练记录:工作指南/训练记录/2026-09-22-钉盘库存与日出库更新到8.186和云端.md。未操作 11.79 生产环境。 -
2026-09-21:按旭东要求生成 dy-dashboard 云端部署文档,并先实测核对目标环境后再落笔。环境实测:
ubuntu@82.156.135.91、/opt/dy-dashboard(非 Git 仓库)、磁盘 40G 中 23G 已用/16G 可用(60%)、dy-dashboard.serviceactive(MainPID 1271894)、Python 3.12.3、Gunicorn 18888、库dy_data、52 张表。差异核对:代码需同步 15 项(run.py、update_data.py、backup.sh、5 个 routes、3 个 services、static/js/app.js与.gz);数据库结构无需迁移,云端多出 1 列finished_products.待提数量按规则保留,另发现两处仅列顺序差异。文档含授权边界、磁盘预检、备份与恢复、定向 rsync 同步、结构增量迁移、缓存与 app.js.gz、重载方式选择、三探针验证、回滚、故障速查、SSH 多行脚本约束。文档:云端部署指南.md;训练记录:工作指南/训练记录/2026-09-21-云端部署文档编制.md。未执行任何部署动作,未操作 11.79 生产环境。 -
2026-09-21:按旭东要求将业务项目 dy-dashboard 全部内容打包到桌面并排除每日备份。打包
~/.openclaw/workspace/dy-dashboard(总 18G,其中backups/占 18G),仅排除backups/目录,输出~/桌面/dy-dashboard-20260921-1828.tar.gz(446M)。校验:归档 8,448 条、backups 相关条目 0;app.py、routes/(37)、services/(28)、static/(120)、templates/(6)、venv/(13)、dy_data_v1.0.sql、backup.sh、pack_deploy_full.sh齐全;gzip -t完整,MD5ce62e6f578f83cca9167b2fd0b5a1eb1。未做任何删除,原项目保持原样。训练记录:工作指南/训练记录/2026-09-21-dy-dashboard项目打包到桌面.md。未操作生产环境。 -
2026-09-21:制定智能体系统从 OpenClaw 迁移到 Codex 的方案(仅出计划,无任何部署动作)。实测盘点:OpenClaw 2026.9.4;配置 195 个代理但仅 4 个绑定钉钉在跑;203 个自动化任务中仅 9 个有业务价值,其余约 190 个为每周技能合集复审;会话库 155MB;技能 3 插件 + 7 自建 + 1 全局;MCP 1 个。核心结论:Codex CLI 是编码代理,无通道、调度、多代理、记忆、技能注入与控制面,整套平移不存在。方案 A(推荐):Codex 做大脑、OpenClaw 保留外壳,3–5 天零停机;方案 B:完全替换,需自建钉钉桥接、8 个 systemd timer、会话映射与失败告警,2–4 周。两条铁律:单一所有者;钉钉同一 clientId 不可两消费端并行。方案文档:
reports/2026-09-21-openclaw-to-codex-migration-plan.md;训练记录:工作指南/训练记录/2026-09-21-智能体从OpenClaw迁移到Codex方案.md。未操作生产与云端环境。 -
2026-09-16:完成两阶段部署。第一阶段将8.186当前功能代码和完整知识库同步到云端82.156.135.91,结构对比无缺失表、字段或索引,未执行DDL、未导入测试数据;云端部署前后均为51张表、978个字段,日出库364,940条/9,798,012件,库存2,392,075条/可用库存4,877,598,502,数据未被覆盖。第二阶段从云端生成完整项目包62MB和全量数据库包125MB,先备份11.79生产项目79MB及数据库125MB并校验,再恢复云端全量数据和代码知识库。恢复后11.79与云端数据库51张表、978个字段及关键数据完全一致;两端缓存均已刷新,云端及11.79服务和HTTP验证通过。备份:云端
/opt/dy-dashboard_backups/stage1-20260916_120415/,生产/home/dieya/dy-dashboard_backups/stage2-before-20260916_120801/。训练记录:工作指南/训练记录/2026-09-16-云端与11.79两阶段完整部署.md。已按要求操作11.79生产环境。 -
2026-09-16:按旭东要求读取钉盘最新日出库数据并同步8.186测试系统、云端82.156.135.91。完整扫描日出库目录16页、763个有效CSV,确认并导入缺失的2026-09-15旺店通文件2,086条、59,625件;两端目标切片已备份到
backups/outbound_gap_fill_20260916/,两端缓存已刷新。8.186服务active且本机/局域网HTTP 200,云端平滑重载后本机/公网HTTP 200,重载日志无新增启动错误;两端数据一致。训练记录:工作指南/训练记录/2026-09-16-钉盘日出库数据更新到8.186和云端.md。未操作11.79生产环境。 -
2026-09-16:修复多个子菜单表头筛选输入关键词后候选项横向排列的问题,覆盖计划预测、待下单、下单备份、成品提货及国内/海外/包材订单等共用筛选入口,匹配项和清空搜索后的候选项统一纵向逐行排列。JavaScript、gzip、差异检查和轻量 DOM 断言通过;8.186测试服务重启后active,本机及局域网HTTP 200,Git提交
f201ca7。训练记录:工作指南/训练记录/2026-09-16-表头筛选结果纵向排列修复.md。未操作生产环境。 -
2026-09-16:产品信息管理详情弹窗改为固定双栏表格布局,左右信息组各占50%,两侧标签列统一为118px,值列等宽并支持长文本换行,弹窗宽度固定为920px且窄屏可横向查看。JavaScript、gzip、DOM/CSS结构和差异检查通过;8.186测试服务重启后active,本机及局域网HTTP 200,Git提交
8028ca8。浏览器截图受本机Chromium沙箱策略阻止,未修改系统安全配置。训练记录:工作指南/训练记录/2026-09-16-产品信息管理详情弹窗双列对齐.md。未操作生产环境。 -
2026-09-16:按旭东要求读取钉盘最新库存与日出库数据并同步8.186测试系统、云端82.156.135.91。两端均新增2026-09-16库存21个仓库、21,159条(可用库存45,691,510,生产在途1,632,198,采购在途12,919,725),补录2026-09-14八个店铺来源出库1,500条;最新出库日期为09-14、最新库存日期为09-16。两端各刷新11项计算缓存并重启服务,测试端双地址及云端本机/公网均HTTP 200。按钉盘全分页复查自09-05以来70个出库组合、189个库存组合,两端均无遗漏。训练记录:
工作指南/训练记录/2026-09-16-钉盘库存出库数据更新到8.186和云端.md。未操作11.79生产环境。 -
2026-09-16:成品提货管理新增导出功能,支持导出当前搜索、品类、供应商及表头组合筛选后的全部结果,并可在弹窗中选择导出字段;后端同步校验操作权限与字段查看权限。Python/JavaScript、gzip、接口级筛选和字段选择测试通过,8.186测试服务重启后本机及局域网HTTP 200,Git提交
7ce5d2a。训练记录:工作指南/训练记录/2026-09-16-成品提货筛选字段导出.md。未操作生产环境。 -
2026-09-15:沿用云仓方案优化计划预测 SKU 详情弹窗的外仓数据页签,按默认数据相同的16个字段顺序和四列布局展示,并接入外仓库存、销量、趋势、预测和支撑天数。Python/JavaScript、gzip、接口字段与有效样本值验证通过,8.186测试服务重启后本机及局域网HTTP 200,Git提交
8c7a527。训练记录:工作指南/训练记录/2026-09-15-计划预测SKU弹窗外仓数据排列优化.md。未操作生产环境。 -
2026-09-15:计划预测点击 SKU 后的产品详情弹窗中,云仓数据页签已按默认数据相同字段顺序及四列布局展示;接入云仓库存、销量、趋势、预测和支撑天数。Python/JavaScript、gzip、接口字段与样本值验证通过,8.186测试服务重启后本机及局域网HTTP 200,Git提交
d4c9c80。训练记录:工作指南/训练记录/2026-09-15-计划预测SKU弹窗云仓数据排列优化.md。未操作生产环境。 -
2026-09-15:按旭东要求读取钉盘最新库存与日出库并同步8.186测试系统、云端82.156.135.91。测试端补录日出库13个文件4,395条(含此前遗漏的09-12/09-13店铺文件),导入09-15库存21个仓库21,117条;云端同步目录内缺失批次并导入出库21,492条、库存105,494条。两端刷新11项缓存并验证HTTP 200;两端最新日期均为出库09-14、库存09-15。未操作11.79生产环境。训练记录:
工作指南/训练记录/2026-09-15-钉盘库存出库数据更新到8.186和云端.md。 -
2026-09-14:国内订单创建时按同一货品编号沿用最近一张订单的单价和仓库,正常确认下单与手工新增入口均已覆盖;详情弹窗原有编辑保存功能保持不变。Python语法、SQL参数数量和差异检查通过;8.186测试服务active,本机及局域网HTTP 200,Git提交
cd048bf。训练记录:工作指南/训练记录/2026-09-14-国内订单详情沿用上单单价和仓库.md。未操作生产环境。 -
2026-09-14:按旭东要求仅备份并补导云端8-29库存。补导前该日期0条,切片备份至
/home/ubuntu/dy_backups/inventory_20260829_pre_import_20260914_154142.sql.gz;事务导入20个仓库、20,856条有效记录,库存合计46,318,868、非零8,686条、无效占位0。8月28日和31日补导前后记录数及库存合计完全不变;刷新11个缓存后服务active,本机HTTP和公网HTTPS均200。训练记录:工作指南/训练记录/2026-09-14-云端8-29库存定向补导.md。 -
2026-09-14:按旭东确认修复云端8-31库存。先单独备份原错误记录,再仅删除并重导该日期;修复后20个仓库、20,871条有效记录,库存合计46,293,042、非零8,728条,与20个原始CSV按仓库+货品编号核对差异0,无缺失、多余及无效占位记录。刷新11个计算缓存后服务active,本机HTTP及公网HTTPS均200。备份:
/home/ubuntu/dy_backups/inventory_20260831_pre_reimport_20260914_151607.sql.gz;训练记录:工作指南/训练记录/2026-09-14-云端8-31库存正确数据重导.md。 -
2026-09-14:核查云端8-31库存全为0。确认不是文件遗漏:云端已有20个仓库、20,873条记录,但当次导入按旧表头“可用库存”读取,未读取实际“库存”字段,导致available_qty全部写为0;原始CSV库存合计46,293,042、非零记录8,728条。后续脚本已修正但因日期/仓库已存在而跳过重导;本次仅核查,未改云端,待确认后再备份并重导。训练记录:
工作指南/训练记录/2026-09-14-云端8-31库存为零原因核查.md。 -
2026-09-14:按旭东要求全分页核对钉盘库存与日出库文件,8.186测试系统补录出库7917条、库存21104条,云端按同批CSV导入出库17097条、库存84377条;两端最终出库最新2026-09-13、库存最新2026-09-14,库存21个仓库齐全。两端执行refresh_all_caches并验证HTTP 200;历史2026-09-06库存及该日天猫国际出库因钉盘无源文件暂无法补录。库存导入脚本补充UTF-8/BOM、GB18030、GBK自动编码识别。训练记录:
工作指南/训练记录/2026-09-14-钉盘库存出库数据更新到8.186和云端.md。 -
2026-09-11 下午:补录钉盘 09-10 旺店通日出库 1,921 条到 8.186 与云端,库存无新增(最新 09-11)。同步修复导入脚本:09-10 旺店通文件编码由 GBK 变为 UTF-8(BOM),脚本硬编码 GB18030 报错,改为自动检测编码(utf-8-sig/gb18030/gbk)。两端缓存刷新、HTTP 200。
-
2026-09-11:按旭东要求读取钉盘最新库存和日出库数据,同步到8.186测试系统与云端82.156.135.91。库存2026-09-11共21个仓库、21,118条(可用库存合计45,745,322,列名「库存」正确映射);日出库补录2026-09-09八个店铺文件1,495条;两端DELETE旧值后重导、刷新缓存、Gunicorn平滑重载、HTTP 200。查缺补漏:09-10出库未上传、09-06缺tmgj、09-08缺jdgj、库存缺09-06(来源无文件),待后续补录。
-
2026-09-10:继续排查李佩玲账号云端「新品包材管理」仍报网络错误。根因为前端 app.js 包材列表渲染复制粘贴遗留 bug:map 参数为 r 却引用未定义变量 row._id(且误调 salesManagementDetail/Delete),有数据即 ReferenceError 被 .catch 显示「网络错误」;包材表头本无操作列。已删除该多余操作列,8.186 与云端同步修复、重生成 app.js.gz,公网验证通过。
-
2026-09-10:按旭东要求排查云端新品下单子菜单网络错误。根因为 gunicorn 双实例+systemd 重启死循环:孤儿 gunicorn(PID 124227,9-5 18:37 手动启动 -w 4 -b 0.0.0.0:18888)占用 18888,systemd 服务 dy-dashboard.service(--workers 2 --bind 127.0.0.1:18888)无法绑定进入 Restart=always 死循环,重启计数 39,282 次,导致新品成品管理/新品包材管理请求间歇失败。修复:stop systemd → 杀孤儿 gunicorn 及 worker → start systemd 干净绑定;重启计数不再增长、公网 gyl.dieya.net.cn 及 /api/new_products/* 接口均 HTTP 200。
-
2026-09-10:按旭东要求读取钉盘最新库存和日出库数据,同步到8.186测试系统与云端82.156.135.91。库存2026-09-10共21个仓库、21,089条(可用库存合计45,821,467,列名「库存」正确映射);日出库补录9个文件3,623条:09-07天猫国际376条、09-08七个店铺(抖音M店/抖音Q店/京东泊紫/京东洁维塔/京东美瑞图/京东适美家/天猫国际)、09-09旺店通2,093条;两端DELETE旧值后重导、刷新缓存、Gunicorn平滑重载、HTTP 200。查缺补漏:09-08缺京东国际、09-06缺天猫国际、09-09店铺未上传、库存缺09-06(来源无文件),待后续补录。
-
2026-09-09:按旭东要求读取钉盘最新库存和日出库数据,同步到8.186测试系统与云端82.156.135.91。库存2026-09-09共21个仓库、21,066条(可用库存合计45,923,105,列名「库存」正确映射);日出库2026-09-08旺店通2,141条;两端DELETE旧值后重导、刷新缓存、Gunicorn平滑重载、HTTP 200。查缺补漏:09-07/09-08店铺出库未上传、09-06缺tmgj、库存缺09-06(来源无文件),待后续补录。
-
2026-09-08:按旭东要求读取钉盘最新库存和日出库数据,同步到8.186测试系统与云端82.156.135.91。库存2026-09-08共21个仓库、21,055条(可用库存合计45,846,998,列名「库存」正确映射);日出库补录24个文件6,223条:09-04/09-05各8个店铺、09-06共7个店铺(无天猫国际)、09-07旺店通2,163条;两端DELETE旧值后重导、刷新缓存、Gunicorn平滑重载、HTTP 200。查缺补漏:09-06店铺缺tmgj、库存缺09-06(来源无文件),待后续补录。
-
2026-09-07:按旭东要求读取钉盘最新库存和日出库数据,同步到8.186测试系统与云端82.156.135.91。库存2026-09-07共21个仓库、21,037条;日出库补录2026-09-05旺店通1,995条、2026-09-06旺店通2,011条;两端均DELETE旧值后重导、刷新缓存、Gunicorn平滑重载、HTTP 200。查缺补漏:钉盘09-04/09-05/09-06仅旺店通主数据,店铺出库文件未上传;库存缺09-06(来源无文件),待后续补录。
-
2026-09-05:按旭东要求读取钉盘最新库存和日出库数据。8.186 已导入 2026-09-05 库存 21 个仓库、20,999 条(可用库存 45,822,051、生产在途 1,593,616、采购在途 12,718,976)及 2026-09-04 旺店通日出库 2,073 条、数量 62,035;缓存刷新、Gunicorn 平滑重载、HTTP 200。云端
82.156.135.91的 SSH、HTTP、HTTPS、18888 端口均持续超时,本次未写入云端;22 个源文件保留于backups/data_update_20260905_094743/待网络恢复。 -
2026-09-05:按旭东要求加固部署流程,避免
static/uploads/new_products图片因rsync --delete或重建项目目录而丢失。pack_deploy_full.sh已排除新品图片目录、部署前单独备份并在恢复后校验图片数量;upgrade_full.sh、upgrade_prod.sh已排除该目录并在升级前独立备份;backup.sh已新增新品图片独立备份。四个脚本bash -n、关键保护项和git diff --check验证通过,Git提交fd531ae。 -
2026-09-05:按旭东要求从 11.79 生产系统恢复新品成品管理图片到云端。先按产品编码和 5 个图片字段核对两边数据库,9 条产品记录的 34 个图片引用完全一致;同步前备份云端原图片目录
/home/ubuntu/dy_backups/new_products_recovery_pre_20260905_110300.tar.gz,仅同步static/uploads/new_products/图片文件,不修改数据库及其他业务数据。恢复后 34/34 图片引用对应文件存在,34/34 图片 URL 返回 HTTP 200 且图片 Content-Type 正常;仅重启云端dy-dashboard.service,服务与 Nginx active,公网 HTTPS 200。 -
2026-09-05:云端服务器续费恢复后出现502。经检查确认 Nginx 已运行但 Gunicorn 应用未启动,反代 127.0.0.1:18888 被拒绝;同时修正云端
routes/products.py产品列表接口未定义变量unified_search的运行时错误,备份保留于/home/ubuntu/dy_backups/502_fix_20260905_100659/。重启dy-dashboard.service后云端本机、公网 HTTPS 均HTTP 200。随后补同步 2026-09-05 库存 21 个仓库、20,999 条及 2026-09-04 旺店通出库 2,073 条、数量 62,035;刷新缓存,云端最新日期和数据汇总核验一致。训练记录:工作指南/训练记录/2026-09-05-云端502故障修复与数据补同步.md。 -
2026-09-03:动销管理新增操作列与字段设置。列表新增详情、删除按钮(详情展示全部37字段、删除带确认和权限校验);新增字段设置,支持勾选显隐、拖动排序、保存/加载个人字段方案,操作列固定显示;修复前端脚本结构导致的语法错误。Python/JavaScript/gzip/diff、详情删除回归及测试服务平滑重载通过,Git提交
7609ad4。 -
2026-09-03:按旭东要求将动销管理从库存/出库动态计算改为仅显示导入数据;已清空原动态309条结果,建立独立导入表,新增完整37字段Excel模板下载、Excel导入和按字段选择导出,支持编码/名称搜索和分页。模板表头顺序保持原表格顺序,导入/导出回归验证通过,测试环境Gunicorn平滑重载、模板和导出接口HTTP 200,Git提交
8c394c8。 -
2026-09-01:修复云端计划预测「昨日销量」与出库数据不一致。根因:云端计算缓存(RefreshableCache 文件持久化)停在 8-29 未刷新,而 daily_outbound 数据已更新到 8-31;云端数据走手工 SQL 导入绕过导入脚本,且无 crontab、未调 refresh_all_caches(),服务重启只清内存缓存不清文件缓存。处理:云端立即 refresh_all_caches()(抽查产品昨日销量均与实时一致),并新增 /opt/dy-dashboard/refresh_cache.sh + crontab(30 7,12,18,23)定时刷缓存。
-
2026-09-01:按旭东要求完成字段级权限完整优化。新增
services/field_perms.py字段清单单一来源(17页面/274字段,含敏感字段标记)、/api/permissions/fields接口、角色级字段权限(复用 role_operation_permissions 的 field: 前缀)与用户级字段权限保存接口;敏感字段(成本价/单价/金额/审核价格/总成本/货品成本/产品总成本/产品总货款)默认隐藏需显式授权(后改为默认开放);计划预测/产品/数据概览明细接口后端强制过滤无权字段;前端角色弹窗与用户面板新增字段权限矩阵。Python/JavaScript语法、模块导入、字段解析、后端过滤、模板注入均验证通过;测试服务优雅重载HTTP 200,无启动错误。Git提交0b813e8、ca04a8e。 -
2026-08-31:计划预测下单信息弹窗包材下单信息列表中,“更换稿件”字段已调整到“下单备注”字段前面;JavaScript/diff检查通过,测试服务热重载HTTP 200,Git提交
a4d3eb6。 -
2026-08-31:修复包材订单管理双重筛选异常。先筛选采购小组再打开货品名称时,联动 POST 接口因重复导入
json触发局部变量遮蔽并返回500,导致前端永久显示“加载中”;接口改用_json别名,前端补充非2xx响应和异常兜底。Python/JavaScript语法、双重筛选接口验证通过;测试dy-dashboard.service重启后active,测试地址HTTP 200。 -
2026-08-31:计划预测下单信息弹窗中,成品下单备注已从成品信息表格移出,新增与批注信息同样样式的独立文本输入框并置于批注信息上方;支持回显、编辑、保存及下单同步提交。测试服务热重载后HTTP 200。
-
2026-08-31:重启云端
82.156.135.91的dy-dashboard.service修复https://gyl.dieya.net.cn502。根因是应用服务停止,Nginx反代连接被拒绝;重启后服务active,云端本机和公网连续HTTP 200,未修改代码、数据库或业务数据。 -
2026-08-31:旭东反馈云端系统502,已完成公网访问、生产应用和Tailscale Funnel排查,当前公网HTTPS连续HTTP 200,服务正常,无需改代码或数据。
-
2026-08-29:按旭东要求在待下单管理新增库存支撑天数、备货支撑天数、3/7/14天平均销量和销售趋势字段。库存支撑天数按(库存+加工厂库存)/预测日销量计算,备货支撑天数按实际下单数量/预测日销量计算,预测日销量为0时显示999;前端表头、实时数据、数字/文本筛选及字段设置和字段方案顺序均已同步。Python/JavaScript语法及diff检查通过,测试Gunicorn重启后HTTP 200,Git提交
b029331。 -
2026-08-29:按旭东要求在待下单管理新增库存支撑天数、备货支撑天数、3/7/14天平均销量和销售趋势字段。库存支撑天数按(库存+加工厂库存)/预测日销量计算,备货支撑天数按实际下单数量/预测日销量计算,预测日销量为0时显示999;前端表头、实时数据、数字/文本筛选及字段设置和字段方案顺序均已同步。Python/JavaScript语法及diff检查通过,测试Gunicorn重启后HTTP 200,Git提交
b029331。 -
2026-08-29:继续优化订单管理货品类型列表头筛选性能。货品类型改为点击时按需加载,取消页面初始化预拉取;后端改为数据库内直接关联产品类型并去重,联动筛选也不再把订单编码全部拉回 Python 分批映射。国内、海外、包材三类订单覆盖,接口实测约5–48ms;Python/JavaScript语法、diff检查通过,测试gunicorn热加载后HTTP 200,Git提交
e48f6e3。 -
2026-08-29:国内、海外、包材订单管理的货品类型列新增表头筛选,可与搜索、状态、供应商、下单人及其他表头条件联动,并基于全量订单数据筛选;包材订单兼容来源成品编码。Python、JavaScript及联动筛选验证通过,测试服务重启后active、HTTP 200,Git提交
5abfe0d。 -
2026-08-29:国内订单管理、海外订单管理、包材订单管理、成品提货管理在货品名称右侧新增货品类型列,按货品编号批量匹配产品信息管理中的货品类型;包材编码无匹配时兼容来源成品编码。新列兼容字段设置、权限和导出,成品提货支持表头筛选。Python、JavaScript及数据匹配验证通过,测试服务重启后active、HTTP 200,Git提交
79912c0。 -
2026-08-29:下单备份管理的「订单管理」和「订单备份管理」新增下单日期筛选框,可按年月日精确筛选下单时间,并与编号/名称、下单人、采购计划及表头筛选联动;重置同步清空日期。JavaScript语法检查通过,测试服务重启后active、HTTP 200,Git提交
9a4975b。 -
2026-08-27:完成两阶段部署。第一阶段将8.186测试环境功能代码、数据库结构/字段、知识库部署到云端82.156.135.91,保留云端业务数据;云端因日志目录权限导致服务未启动,修复权限后active、HTTP 200,核心数据量保持products 9596、inventory_detail 2056069、daily_outbound 310196,知识库558个文件。第二阶段从云端部署后内容制作全量快照(含全部数据)升级11.79生产;生产升级前备份项目和数据库,升级后active、HTTP 200,核心数据与云端部署后快照一致为9596/2056069/310196,知识库558个文件。
-
2026-08-27:按旭东要求逐文件核对钉盘与8.186库存、出库数据。库存1152个日期+仓库组合全部覆盖;出库发现26个实际遗漏文件并补录12267条,另有2026-06-28三个文件以中文来源名保存,确认已存在未重复导入。最终按来源别名统一复核,钉盘618个出库组合全部覆盖;库存/出库无效编码均为0,补录前备份保留,测试服务重启后active、HTTP 200、启动日志正常。
-
2026-08-27:继续优化数据概览加载性能。定位到概览接口每次请求执行多项全表聚合约2.7秒;改为Gunicorn多worker共享文件缓存,数据更新/手动刷新后所有worker自动失效。首次重建约2.65秒,热加载约0.001秒;24项单元测试通过,测试服务重启后4个worker正常、HTTP 200。Git提交
3c29af3。 -
2026-08-25:按旭东要求优化现货模式销量管理,新增17列销量管理列表,接入现货商品基础信息、首批成本价、库存、采购在途、昨日/前日/7天/14天/30天/总销量、销售状态、销量趋势、首批入库时间和负责运营;支持搜索、分页并排除内料,测试服务平滑重载和接口验证通过,Git提交
0cafdeb。 -
2026-08-25:修复新品成品管理导出图片显示路径、及新品包材管理导出仅一条数据异常。成品导出改为Excel内嵌图片;包材导出与列表共用筛选条件并导出全部匹配BOM明细。语法、20项测试、Excel回归和HTTP 200验证通过;Git提交 32e4238。当前测试库历史图片文件缺失,补回图片后即可实际内嵌。
-
2026-08-25:按旭东要求优化现货确认子菜单,新增25字段确认列表,关联现货申请信息并建立样品状态、审批单号、快递单号、到样日期、领样及产品信息等确认字段数据结构;数据库迁移、语法检查、接口验证和测试服务重载通过,Git提交
0cafdeb。 -
2026-08-25:按旭东要求优化现货申请子菜单,新增申请列表和新增申请表单,申请人按当前登录账号自动绑定,日期按当天自动生成,部门暂为空,并支持品牌、产品名称、厂家、图片、产品链接、寄样数量、条形码、收件信息登记;数据库迁移、语法检查、接口验证和测试服务重载通过,Git提交 e999c6c。
-
2026-08-25:修复现货模式左侧图标无颜色问题。现货模式改为子菜单组后,原颜色样式只匹配旧顶层菜单,现已补充
data-group="spot"的红橙色渐变样式。语法、diff 检查通过,测试服务重启并验证 HTTP 200。Git提交 a800618。 -
2026-08-25:按旭东要求新增现货模式四个子菜单:现货看板、现货申请、现货确认、销量管理。四个入口已接入SPA路径、刷新访问、权限配置和现货模式旧权限兼容;当前为功能占位页。Python/JavaScript语法检查、diff检查通过,测试服务重启运行中,HTTP 200。Git提交 e1c4488。
-
2026-08-24:新品下单菜单新增新品包材管理子菜单;新品管理改名为新品成品管理;包材管理按新品BOM弹窗表头读取并展示物料,支持筛选分页。测试服务热加载、HTTP 200和接口验证通过。Git提交 5449992。
-
2026-08-24:优化采销协同库存数据看板加载性能。缺货监控查询增加可用库存为0条件,减少无关库存明细扫描;缓存重建、语法检查、接口验证和测试服务热加载完成。Git提交 a58d164。
-
2026-08-24:备货通知格式调整,包材每个单独一行并带「包材数量:」前缀;dry-run 验证通过,服务 HTTP 200。Git 提交 f65264a。
-
2026-08-24:备货通知样式美化,改
强制换行逐字段展示,包材明细同行空格分隔;dry-run 验证通过,服务 HTTP 200。Git 提交 5ae4e7b。 -
2026-08-24:修复确认下单报「网络错误: Unexpected token」问题。根因是 Decimal 无法 JSON 序列化(前端未传BOM修改数据时从bom表加载的quantity为Decimal),json.dumps 崩溃返回500。已加 default 转换修复,带BOM商品复现200通过。Git 提交 6e7af78。
-
2026-08-24:修正备货通知包材数量展示,由合计改为按包材分别列出(如彩盒500、瓶子500、泵头500);dry-run 验证通过,测试服务重载 HTTP 200。Git 提交 8682265。
-
2026-08-24:实现确认下单后按采购跟单组别发送钉钉群备货通知(跟单一组→采购1组群、跟单二组→采购2组群、跟单三组→采购3组群、现货小组→现货采购群)。采购跟单支持组名/姓名列表两种形态解析;通知含货品编号/货品名称/成品数量/包材数量,按群聚合后台发送;失败不影响下单。语法检查、组别解析测试、dry-run 验证通过,测试服务重载 HTTP 200。Git 提交 0b12fc0。
-
2026-08-24:按旭东提供的信息接入 OpenLux OpenAI 兼容接口,新增模型
openlux/deepseek-v4-pro-0813;配置校验通过,模型列表识别正常。API Key 已写入本机 OpenClaw 配置,未在知识库重复记录。 -
2026-08-22:按旭东要求将云端82.156.135.91的dy_data全库数据及知识库完整覆盖同步到192.168.8.186测试系统。同步前已备份测试数据库与知识库;同步后关键表记录与云端一致,测试服务重启、HTTP 200和505个知识库文件验证通过。
-
2026-08-22:按旭东要求将表格物料清单与192.168.8.186测试环境dy_data.bom匹配。输入2049行,编码精确匹配2043行,名称精确匹配4行,不存在2行;结果文件已上传钉盘“我的文件”。
-
2026-08-22:按旭东要求调整物料清单编辑展示逻辑,编辑弹窗展示完整BOM(含内料/-NL),计划预测及下单展示层继续过滤内料;Python/JavaScript检查通过,测试服务重启后HTTP 200。
-
2026-08-22:按旭东提供的物料清单表,匹配货品编号、物料编号并更新8.186测试环境bom_packaging下单前包材数量。2049行中成功更新2027行,22行因BOM不存在或内料/-NL跳过;更新前已备份,测试服务重启后HTTP 200。
-
2026-08-22:按旭东要求生成未更新22行包材数据明细表,包含6行BOM不存在、16行内料/-NL及对应原因,已上传钉盘“我的文件”。
-
2026-08-22:按确认要求调整下单后包材逻辑。现有表格导入的下单前包材保持不变;后续确认下单按下单前包材+包材实际下单数量-成品实际下单数量滚动计算下单后包材,并作为下一次下单前包材;下单后包材改为只读展示。语法检查通过,测试服务HTTP 200。
-
2026-08-22:修正下单后包材计算数据源,不再合并pending_orders历史下单缓存,确认下单以本次弹窗最新实际下单数据计算;示例按3000+3000-3000=3000。测试服务重启后HTTP 200。
-
2026-08-22:修正下单前包材显示,弹窗改为直接读取bom_packaging当前值,前端缓存不再覆盖表格导入的下单前包材;JWTBS-XMN-7354-ALJK核验为3000,测试服务HTTP 200。
-
2026-08-22:修正下单后包材弹窗展示,按下单前包材+包材实际下单数量-成品实际下单数量实时计算;示例3000+1000-1000=3000。测试服务重启后HTTP 200。
-
2026-08-25:修复新品包材管理导出返回
not enough arguments for format string。原因是“是否含税”SQL 中百分号未转义,被 PyMySQL 误判为格式占位符;已改为%%,Excel 导出回归 HTTP 200,Git提交 99a100a。 -
2026-08-25:按要求导出2026-07-31日15号仓库存明细,共1316条、18字段,生成Excel并上传钉盘“我的文件”,文件名
20260731-15号仓库存明细.xlsx。 -
2026-08-27:按旭东要求完成8.186测试环境→云端→11.79生产环境两阶段部署。第一阶段同步功能代码、数据库结构/字段和知识库训练记录到82.156.135.91,保留云端业务数据;第二阶段从云端完整快照(含全部数据)升级11.79生产。两阶段均保留升级前项目/数据库备份,云端与生产关键表及代码校验通过,知识库554个文件,服务HTTP 200。
-
2026-08-26:执行NA/合计行清理。8.186清理库存合计/占位行2712条;云端/192.168.11.79清理库存合计/占位行2732条、出库合计行13条;两端出库与库存表均无NA、N/A、合计、合计:及空编码记录。已更新日出库、库存导入脚本过滤规则,清理前备份保留,语法检查通过,两端HTTP 200。
-
2026-08-26:按旭东提供的物料清单,匹配8.186测试环境计划预测成品及下单信息弹窗包材物料编号,更新下单前包材数量2039行(已有1989行、新建50行),同步包材备注57条;15行货品不存在、68行对应BOM不存在、11行内料/-NL按规则排除。补充
bom_packaging.pkg_remark数据字段及接口/弹窗回显逻辑,更新前备份保留;语法、数据回归、接口读取和测试服务重启HTTP 200验证通过,Git提交dc5ed50。 -
2026-08-26:修复物料清单管理模板导入包材供应商显示为空。导入供应商优先取
bom.supplier,无值时回退包材基础资料供应商;列表、详情和供应商筛选逻辑已统一,语法、数据库验证及测试服务重载通过,Git提交bca300e。 -
2026-08-26:按旭东提供的物料清单,在云端系统(82.156.135.91)中匹配计划预测成品及下单信息弹窗包材物料编号,更新下单前包材数量2105行(已有321行、新建1784行,同步后bom_packaging共2242行),同步包材备注65条;2行货品不存在(POZ-MS-0224-TM)、14行对应BOM不存在、12行内料/-NL按规则排除。云端bom_packaging表补充pkg_remark字段,后端detail_with_bom读取、bom_packaging/save保存、purchase透传及前端弹窗回显已补齐;更新前备份 /home/ubuntu/dy_backups/bom_packaging_pre_20260826_1500/,服务重启HTTP 200,数据抽验通过。
-
2026-08-26:整理云端物料清单未匹配数据表并上传钉盘「我的文档」。含2行货品编号在云端不存在(POZ-MS-0224-TM瓶子/彩盒)、14行物料编号在对应成品BOM中不存在(含成品自身行、瓶子/彩盒/膜袋等),文件
云端物料清单未匹配数据_20260826.xlsx。 -
2026-08-26:计划预测新增批注列(8.186测试环境)。products表新增remark字段,列表品牌列后加批注列、编辑弹窗可修改、详情弹窗基础信息展示批注、下单信息弹窗成品区货品名称右侧加批注列并同步列表批注内容;接口保存/回读验证通过,服务HTTP 200,Git提交 5a0a7d1。
-
2026-08-26:批注展示优化(8.186测试环境)。编辑弹窗批注字段移到最后一个、改为大号自适应高度textarea(跨整行);下单信息弹窗批注从成品表格列移出,在成品/包材下单信息之间新增「批注信息」等宽字体编辑框,保存时自动同步products.remark;编辑弹窗保存逻辑支持textarea收集。服务HTTP 200,Git提交 8551ca5。
-
2026-08-26:修复下单信息弹窗批注保存失败(8.186测试环境)。根因:批注读取在弹窗关闭后(DOM已移除)读不到、且走batch_update需管理员产品编辑权限。修复:批注读取移到关闭弹窗前、新增/api/product/remark/save轻量接口(下单编辑权限)、保存按钮启用条件放宽为实际下单数量或批注任一可编辑;端到端验证通过,服务HTTP 200,Git提交 b589701。
-
2026-08-26:修复批注列不同步(8.186测试环境)。下单信息弹窗保存批注成功后立即刷新计划预测列表,外面批注列即时同步无需手动刷新;服务HTTP 200,Git提交 61f5149。
-
2026-08-26:批注功能同步到云端系统(82.156.135.91)。products表新增remark字段,同步计划预测批注列、编辑弹窗批注(置底大文本框)、详情弹窗批注、下单信息弹窗批注(等宽编辑框+remark/save接口+保存后即时刷新);products.py最小patch不夹带其他改动,app.js/planning.py/migrate_db.py覆盖本地最新版;更新前备份 ~/dy_backups/remark_sync_pre_20260826_1556/,端到端验证通过,服务HTTP 200。
-
2026-08-26:均线表产品批注导入。按货品编号匹配260826-均线表产品批注.xlsx(2571行,非空867行):8.186导入864行、云端82.156.135.91导入865行,未匹配POZ-MM-1673-TM-P、JWTBS-LLT-5844-ALJK-P(两端)及POZ-MS-0224-TM(仅8.186);批注写入products.remark,导入前备份,两端HTTP 200。
-
2026-08-26:下单信息弹窗批注改为只读(灰底、不可编辑),保存下单信息时不再同步批注,批注修改入口仅保留编辑弹窗;详情弹窗基础信息区批注字段改为跨整行显示、内容过长自动换行,不再挤压右侧字段。JS语法检查通过,测试服务重启HTTP 200,Git提交 5346fbf。
-
2026-08-26:下单信息批注只读+详情弹窗批注整行显示同步到云端系统(82.156.135.91)。覆盖 /opt/dy-dashboard/static/js/app.js(MD5与本地一致),更新前备份 ~/dy_backups/appjs_pre_20260826_1636/,云端服务重启后 active、HTTP 200、启动日志正常。
-
2026-08-26:下单回退包材结余同步回退(8.186测试环境)。从下单备份管理回退订单时,按该订单消耗量(成品实际下单数量-包材实际下单数量)加回 bom_packaging 下单前包材,回退后 post 同步为新 pre,多次回退按各自消耗量叠加;确认下单滚动逻辑保持不变。JWTBS-XYY-3608-ALJK 端到端验证:下单前5000→确认下单(成品1000包材不下单)后4000→回退恢复5000,测试数据已清理;回退操作日志新增包材回退明细;Python语法检查通过、服务HTTP 200,Git提交 9fe1fc8。
-
2026-08-27:修复国内/海外订单详情弹窗「跟单下单日期」不联动列表列。根因是弹窗字段错误绑定到订单下达供应商时间字段,列表列显示的是日期字段;改回日期字段后弹窗修改可联动列表(包材订单原本已正确)。app.js同步重生成gzip,测试服务重启HTTP 200,Git提交 64174b8。
-
2026-08-27:修复确认下单后备份BOM包材下单数量全部为0。根因是确认下单未携带前端BOM修改数据时,按用量×正式数量计算的包材实际下单数量未写回bom_items的actual_quantity字段,导致下单备份详情弹窗读取不到显示为0;已在确认下单循环写回actual_quantity和amount,测试服务重启HTTP 200,Git提交 6e8fc18。
-
2026-08-27:修复新品BOM同步到物料清单时物料编号名称映射错误。根因是同步时 material_code/material_name 优先取 common_code/common_name(通用物料编码/名称),导致误映射;改为直接取新品BOM的物料编码/物料名称。测试服务重启HTTP 200,Git提交 245d4ae。
-
2026-08-28:修复物料清单管理编辑部分物料供应商无法修改。根因是编辑提交的供应商名称未写入
bom.supplier,刷新后被物料基础资料旧供应商覆盖;现已补齐 BOM 新增和更新时的供应商持久化。Python语法检查通过,测试服务 active、HTTP 200、启动日志无新增错误,Git提交47b5080。 -
2026-08-28:修复从待下单确认下单后,下单备份管理包材下单数量和包材下单备注未同步。根因是未携带前端 BOM 时错误跳过待下单已保存的
bom_items,直接读取基础 BOM;现调整为本次请求 BOM优先,其次使用待下单已保存 BOM,最后回退基础 BOM。Python、JavaScript语法检查及专项保留字段测试通过,测试服务 active、HTTP 200、启动日志正常,Git提交bff452e。 -
2026-08-28:修复计划预测确认下单时包材实际下单数量被成品数量覆盖、包材数量为0仍生成包材订单的问题。明确保存的包材数量优先,字符串数量统一解析,0明确表示不下单;包材订单仅在数量大于0时创建,备注优先使用包材备注。Python、JavaScript语法检查及数量/备注专项测试通过,测试服务 active、HTTP 200、启动日志正常,Git提交
7700455。 -
2026-08-28:修复包材订单管理先筛选采购小组为跟单二组后,再筛选货品名称一直显示加载中。根因是联动筛选接口函数内重复导入
json引发局部变量遮蔽,POST请求返回500;移除重复导入后接口正常返回。Python、JavaScript语法检查及联动筛选POST专项测试通过,测试服务 active、HTTP 200、启动日志正常,Git提交badb49e。 -
2026-08-28:修复国内、海外、包材订单管理导出异常。导出改为按字段定义逐列生成,避免表头与日期、单价、供应商等数据错位;同时携带搜索、状态、供应商、下单人及表头筛选条件,导出全部匹配数据。JavaScript语法及差异检查通过,测试服务重启后active、HTTP 200、启动日志正常,Git提交
077b3e0。 -
2026-08-28:修复国内、海外、包材订单详情弹窗修改单价后保存卡顿。单字段修改改用对应单字段更新接口,多字段仍走批量接口,并补充HTTP异常处理,避免保存按钮永久停留在保存中;语法、diff、服务active及HTTP 200验证通过,Git提交
7a16c5d。 -
2026-08-28:按要求将8.186当天优化内容以增量升级包更新到云端82.156.135.91。仅覆盖6个运行时代码文件,未动数据库数据、知识库、配置、上传文件及其他无关内容;升级前备份,升级后逐文件SHA256一致,服务active、HTTP 200、启动日志正常。
-
2026-08-28:修复下单备份详情弹窗空字段报错。成品信息两列字段数量不一致时,渲染逻辑对不存在的字段增加安全判断,避免读取 undefined 下标;JavaScript语法、diff、测试服务重载及HTTP 200验证通过,Git提交
bfa33d2。 -
2026-09-15:修复国内订单字段异常。未到货数按数量减实际到货数量统一回填并同步,金蝶是否入库默认“否”,详情弹窗新增可清空的新旧品编辑字段并同步字段列;测试库回填434条未到货数异常、650条金蝶入库空值,复查异常均为0。Python/JavaScript/gzip/迁移幂等检查及26项单元测试通过,测试服务active,本机和192.168.8.186:18888均HTTP 200,Git提交95e4b92,未操作生产环境。
-
2026-09-15:修正计划预测SKU弹窗订单在途时间,将国内订单“下单时间”改为同步国内订单管理的“跟单下单日期”,海外和包材逻辑不变;代码检查及真实样本验证通过,测试服务active、本机和192.168.8.186:18888均HTTP 200,Git提交e85310e,未操作生产环境。
[2026-08-31] 部署 | 8.186测试→云端→11.79生产两阶段升级
-
8.186测试环境代码、数据库结构/字段和知识库训练记录已更新到云端82.156.135.91,保留云端业务数据。
-
云端全量快照(含全部数据)已升级到11.79生产,生产原有32个锁定账号的status=0规则已恢复,未受影响。
-
云端服务active、11.79服务运行,两端HTTP 200;核心数据与权限数据校验一致。
-
备份已保留,订单列筛选接口json变量遮蔽最小修复同步完成,Git提交bb845c5。
-
2026-09-01:继续修复下单备份管理字段切换后右侧空白,字段应用后重建当前表格列宽并按视口与实际内容宽度同步,操作列/状态列仍固定在右侧;修复列宽缓存重建过程中的字段键遗漏,语法、diff、服务重载和HTTP 200验证通过,Git提交
36c6826。 -
2026-09-01:按旭东要求从钉盘读取9月1日库存数据并同步到8.186测试系统和云端82.156.135.91。两端均更新20个仓库、20907条记录,汇总一致;云端更新前备份保留在 /opt/dy-dashboard-backups/pre-data-update-20260901_20260901_094806/,两端及公网服务HTTP 200。
-
2026-09-01:核查钉盘8月29日至8月31日日出库数据并完成遗漏补录。8.186补录11个文件7737条,云端补录9个文件3591条;两端对应日期、来源、条数和数量均与钉盘一致。云端更新前备份分别保留在 /opt/dy-dashboard-backups/outbound-gap-fill-20260901_20260901_101042/,8.186与云端服务HTTP 200,公网HTTPS 200。
-
2026-09-01:继续修复下单备份右侧大片空白。定位根因为上一轮将 syncAdjustableTableWidth 改名为 syncBackupTableWidth 时遗漏 lockAdjustableTableColumnWidths、updateOrderColumnResize 两处旧函数名调用,运行时 ReferenceError 中断列宽同步、表格停留在 width:max-content 导致右侧空白;已统一恢复函数名并重新生成 app.js.gz,语法、diff、HTTP 200 验证通过,Git提交
6441288。 -
2026-09-01:下单备份字段设置移除「序号」可勾选项,序号列固定在最前、操作列固定在最后并强制序号始终可见,修复取消序号后表头与数据行列数不一致导致的错乱;语法、diff、HTTP 200 验证通过,Git提交
14d06a9。 -
2026-09-01:确认下单备货通知从调用本机 dws CLI 改为钉钉自定义机器人 Webhook 推送(4 个采购跟单组各自 webhook + 加签验签),解决云端因无 dws 命令导致的群通知静默失败;4 群逐群验证发送成功,本地 8.186 重载 HTTP 200,云端部署重启后 service active、本机及公网 HTTPS 均 200。Git提交
5622b29。 -
2026-09-01:备货通知格式调整,新增成品下单备注字段,包材数量与包材下单备注按序号一一对应(无备注写「无」);本地 8.186 重载 HTTP 200,云端部署重启后 service active、本机及公网 HTTPS 均 200。Git提交
99284e4。 -
2026-09-01:备货通知换行修复,钉钉 markdown 单换行不生效导致整条挤成一行,改用
<br>强制换行并去掉包材序号,统一为「包材数量 / 包材下单备注」逐行展示;本地 8.186 重载 HTTP 200,云端部署重启后 service active、本机及公网 HTTPS 均 200。Git提交ee7bc39。 -
2026-09-01:权限配置内容为手动维护(
_permMenuTree+permission_pages),新增子菜单不自动同步;补充采销协同 4 个子菜单(库存数据看板/重点SKU预测/SKU库存健康指数/呆滞SKU清单)。本地 8.186 重载 HTTP 200,云端部署重启后 service active、本机及公网 HTTPS 均 200。Git提交c9919f2。 -
2026-09-01:权限配置改为单一数据源,后端解析侧边栏 base.html 自动生成权限配置页面列表与菜单树(新增 PAGE_FEATURES + _sidebar_menu_pages,/api/permissions/pages 与 /api/permissions/menu-tree 均自动生成,前端删除硬编码 _permMenuTree 改为动态拉取);以后新增子菜单只需在侧边栏添加即可自动同步。本地 8.186 重载 HTTP 200,云端部署重启后 service active、本机及公网 HTTPS 均 200。Git提交
ee9c3f3。 -
2026-09-01:为云端温效林、林凤贤配置受限只读权限。新建
limited角色并分配,仅 view 成品库存/包材库存/计划预测/海外订单/包材订单 5 页面;字段级隐藏成本价/单价/金额/审核价格;前端补强海外品 tab 限制、订单操作列只显示详情、库存隐藏操作列、BOM 单价隐藏。云端部署重启后 service active、本机及公网 HTTPS 均 200。Git提交ed3faea。 -
2026-09-02:按旭东要求从钉盘读取并同步 9 月 2 日库存和 9 月 1 日出库到 8.186 测试系统及云端 82.156.135.91。库存导入 20 个仓库、20,912 条;9 月 1 日旺店通出库导入 2,127 条、数量 70,828。两端目标记录与汇总一致,缓存刷新、服务平滑重载后本机及云端 HTTP 200;过程文件保留在项目
backups/data_update_20260902_103149/。其他来源最新可见出库文件仍为 8 月 31 日。 -
2026-09-03:修复物料清单管理编辑历史产品提示“未找到该产品”。根因是部分 BOM 成品编码仅存在于
bom表、未建立products基础资料;编辑接口原先只查products,现对include_inner=1请求回退读取 BOM 成品编码和名称,普通详情请求行为不变。Python/JavaScript语法、接口回归、diff检查通过,测试服务平滑重载并验证 HTTP 200;Git提交52adab6。
[2026-09-02] 优化 | 订单管理供应商多选筛选
-
国内订单管理、海外订单管理、包材订单管理及成品提货管理的供应商列支持同时勾选多个供应商,筛选条件按“或”关系匹配;搜索框用于定位筛选选项。
-
四个页面统一覆盖;JavaScript/Python语法、diff检查通过;测试环境Gunicorn平滑重载后HTTP 200,启动日志无新增错误。
-
训练记录:
工作指南/训练记录/2026-09-02-订单管理供应商多选筛选.md;Git提交22750bb。 -
2026-09-03:按旭东要求统一国内、海外、包材订单编辑入口。核查确认外部列表可编辑字段均已有详情保存链路,国内/海外详情补充“仓库”字段;外部列表单价、供应商、仓库、下单人、进度、日期、状态等改为只读,详情保存后刷新对应列表同步。Python/JavaScript语法、gzip、diff及三类页面/接口HTTP 200验证通过,测试服务平滑重载。Git提交
4f4dc56。 -
2026-09-03:修复国内订单详情选择蔡少铃后,外部下单人列显示“跟单三组”的问题。根因是列表人员标签默认将同组姓名折叠为组名;现让国内、海外、包材订单下单人列强制显示实际姓名。JavaScript/gzip/diff检查通过,测试服务平滑重载并验证HTTP 200,Git提交
433c93f。 -
2026-09-03:按旭东要求优化国内/海外订单详情弹窗仓库编辑框。接入
/api/warehouse/all获取全部仓库,按仓库名称模糊搜索,下拉显示名称和编号,选择后回填完整名称并可随详情统一保存。JavaScript、gzip、diff及接口/页面HTTP 200验证通过,测试服务平滑重载。Git提交7517443。 -
2026-09-03:修复成品提货管理详情弹窗进度与外部产品进度列不一致。统一从国内/海外未完结订单按最早下单时间读取进度,详情异步加载后刷新外部列表;Python/JavaScript/gzip/diff检查通过,测试服务平滑重载、HTTP 200,Git提交
e1bc4c5。 -
2026-09-04:优化动销管理详情弹窗,改为双组分列的表格列表形式,字段标签和内容分格展示,统一边框、间距、圆角和长文本换行;37个字段全部保留,支持窄屏自适应。详情接口、语法、gzip、diff和测试服务HTTP 200验证通过,Git提交
3f806b7。训练记录:工作指南/训练记录/2026-09-04-动销管理详情表格化.md。 -
2026-09-04:按旭东要求开放查看者上传合同模板权限;编辑、更换模板文件和删除权限仍仅管理员/超级管理员。Python语法、diff检查通过,测试服务平滑重载后HTTP 200,Git提交
e57195f。 -
2026-09-04:修复合同模板菜单按最终查看权限隐藏,统一中文查看者与 viewer 权限映射;上传改用“编辑上传”有效权限校验;字段权限角色/用户两处统一为带边框表格样式。Python/JavaScript语法、gzip、diff检查通过,测试服务平滑重载后HTTP 200,Git提交
a00965e。 -
2026-09-04:按旭东要求修改云端
daily_outbound数据来源,将 1905 条“综合”出库记录改为“旺店通”;修改后综合为0条,云端旺店通记录3870条,公网HTTPS 200。 -
2026-09-04:修复库存页面
loadInventoryData引用未定义codeName导致页面加载报错,补充编号/名称搜索值,重新生成 gzip,测试服务平滑重载后HTTP 200,Git提交890e1d9。 -
2026-09-04:修复仓库属性变更后计划预测外仓库存未刷新。仓库属性保存接口已刷新后端缓存,但SPA页面仍使用旧数据;现覆盖编辑保存和内联勾选两条路径,成功后刷新计划预测/产品/采购页面并清理缓存页。JavaScript、gzip、diff、服务HTTP 200验证通过,Git提交
cc070c2。 -
2026-09-05:按旭东要求核对钉盘与8.186测试系统、云端系统的日出库数据,确认两端缺少2026-09-02、2026-09-03共14个非旺店通平台出库文件;两端均补录1259条有效数据(常规导入1234条,另补录产品资料未匹配而被脚本跳过的抖音Q店25条),两端日期、来源、条数和数量一致。2026-09-04仅旺店通数据且两端已存在,未重复导入;缓存已刷新,服务HTTP 200。由于系统按全表最大出库日期计算,9月4日暂无非旺店通数据时“外仓昨日销量”仍会显示0。
-
2026-09-05:按旭东提供的41条货品编码更新8.186测试系统与云端产品信息货期;两端均匹配并更新41条、未匹配0条,只修改products.lead_time字段。更新前值已备份,缓存刷新后两端服务active、HTTP 200。
-
2026-09-05:按旭东要求完成两阶段部署。第一阶段将8.186测试环境的功能代码、数据库结构/字段、知识库训练记录更新到云端
82.156.135.91:/opt/dy-dashboard,未覆盖云端业务数据,云端新品图片保留51个;第二阶段从云端导出完整数据库(含数据)及完整项目内容迁移到11.79生产环境,生产新品图片保留51个。云端与生产服务均HTTP 200;生产部署前完整备份为/home/dieya/.openclaw/workspace/dy-dashboard_backups/pre-full-20260905_183857.tar.gz。 -
2026-09-14:修复计划预测 SKU 弹窗订单在途列表中,国内/海外订单无到货批次且订单表未到货数为空时显示0的问题;已改为正确显示未到数量。测试环境平滑重载后 HTTP 200,Git提交
7e392fe。未操作生产环境。 -
2026-09-14:优化包材订单管理详情弹窗,删除“产品种类”字段,将“有无新稿件”改为“是否跟换稿件”,选项改为“是/否”。JavaScript语法、gzip、差异检查通过;8.186测试服务重启后active,本机及局域网HTTP 200,Git提交
caa207a。未操作生产环境。 -
2026-09-14:继续优化包材订单详情,将“是否跟换稿件”修正为“是否更换稿件”,并调整字段排列,使左右两列各9项、逐行对齐。JavaScript语法、gzip、差异及列数检查通过;8.186测试服务重启后active,本机及局域网HTTP 200,Git提交
b565bb7。未操作生产环境。 -
2026-09-14:按旭东澄清,撤回包材订单与计划预测之间的双向同步,仅保留计划预测“下单信息”弹窗点击“下单”时,将包材“更换稿件”值写入新建包材订单“是否更换稿件”字段;包材订单详情弹窗直接显示该值。语法、下单SQL映射、gzip及差异检查通过;8.186测试服务active,本机及局域网HTTP 200,纠正提交
2916407。未操作生产环境。 -
2026-09-14:按旭东要求,将计划预测“下单信息”弹窗中的“更换稿件”列固定为90px,表头和数据单元格宽度统一;JavaScript、gzip、差异检查通过,8.186测试服务重启后active,局域网HTTP 200,Git提交
7f94d54。未操作生产环境。 -
2026-09-14:将计划预测“下单信息”弹窗中“更换稿件”的“是/否”下拉框从50px调整为70px,常规及权限禁用状态宽度一致,外层列宽继续保持90px;JavaScript、gzip及差异检查通过,8.186测试服务重启后active,本机及局域网HTTP 200,Git提交
2fc175a。未操作生产环境。 -
2026-09-16:包材订单管理列表在“货品类型”右侧新增只读“新旧品”列,详情弹窗新增“新品/旧品/无”下拉编辑;测试库新增字段并限制接口取值,语法、gzip、结构、接口和数据库检查通过,测试服务active、双地址HTTP 200,Git提交
f4ecf17。未操作生产环境。 -
2026-09-16:修复包材订单详情“到货批次及数量”行保存提示被详情弹窗遮挡的问题;通用提示层级由10000提升到100001,高于详情弹窗99999。语法、gzip、层级断言及双地址HTTP 200验证通过,Git提交
9c7a4b1。未操作生产环境。 -
2026-09-16:按旭东要求将云端包材订单“是否更换稿件”全部改为“否”(1,442条,改前已备份并记录分布),并新增详情弹窗按取值着色规则(是为红字、否为黑字,切换时实时变色)。两端验证通过,云端平滑重载后本机HTTP 200、公网HTTPS 200,Git提交
30ce450。 -
2026-09-16:库存与出库菜单下的成品库存、包材库存、出库明细三页新增导入功能,均可下载导入模板后上传CSV导入;库存按“库存日期+仓库+货品编号”、出库按“日期+数据来源+货品编号+仓库+店铺”先删后插去重,报表汇总行自动跳过,日期统一为YYYY-MM-DD。三页各新增“导入”操作权限(默认仅管理员可用)。接口级测试18项全部通过、测试数据已清理,JavaScript语法/gzip/差异检查通过,8.186测试服务重启后active、本机及局域网HTTP 200,Git提交
92c41ea。未操作生产环境。 -
2026-09-16:修复国内订单管理 POZ-MYL-7166-PDD 实际到货数量/未到货数异常。根因为7月20—27日旧版到货批次回溯脚本按订单ID(未区分order_type)汇总批次,把同id包材订单的批次合计写入国内订单行(该代码问题已于7月27日修复)。按“实际到货数量=本订单本类型批次合计、未到货数=下单数量−该合计”重算,修复国内12行+包材19行共31行,修复前备份至
backups/arrival_totals_repair_20260916_155723/before.json;新增幂等修复脚本repair_arrival_totals.py。接口实测列表与详情弹窗一致,测试服务重启后active、双地址HTTP 200,Git提交54ac86b。未操作生产环境。 -
2026-09-16:供应商管理在“跟单小组”后新增“采购计划”列,新增供应商弹窗、编辑弹窗、导入模板同步增加该字段;suppliers 表经幂等迁移新增 procurement_planner 字段,接口测试11项全部通过(含模板表头顺序、导入按该列更新、白名单校验),测试数据已清理,测试服务重启后active、双地址HTTP 200,Git提交
646cf6b。未操作生产环境。 -
2026-09-16:修复产品信息管理导入无法覆盖修改采购计划的问题。原因为导入仅支持新增、已存在货品编号一律跳过(且缺货品名称列会被视为空行)。已改为已存在按文件内容覆盖更新、空白单元格保留原值、部分列即可更新、未知编码需填名称才新增,导入结果分新增/更新统计并记录日志;用真实产品 JWTBS-JMR-9778-ALJK 验证覆盖成功并已还原原值。接口测试9项全通过,测试服务重启后active、双地址HTTP 200,Git提交
4dfa7f4。未操作生产环境。 -
2026-09-16:产品信息管理「新增产品」弹窗优化:采购跟单标签改为跟单小组、字段改为只读、按供应商名称自动带入跟单小组(新增 /api/supplier/follower_lookup,优先取供应商管理绑定值,未绑定时回退该供应商已有产品的跟单小组)。发现供应商管理557家的跟单小组字段目前全为空,已在回复中说明。接口测试7项+前端stub测试7项全通过,测试服务重启后active、双地址HTTP 200,Git提交
a3eec68。未操作生产环境。 -
2026-09-16:产品信息管理「新增产品」弹窗采购计划改为两种逻辑:品牌为海外品(取品牌分类,新增 /api/brands/overseas)时可手动编辑,非海外品时只读并按供应商自动带入(优先供应商管理绑定值,未绑定回退该供应商已有产品的采购计划,新增 /api/supplier/bound_fields)。接口测试8项、前端stub测试16项全通过,测试服务重启后active、双地址HTTP 200,Git提交
6b412a1。未操作生产环境。 -
2026-09-16:修复下单备份管理表格行漏渲染「加入时间」单元格(表头24列、数据行23格)导致向右滑动时右侧固定操作列错位到加入时间列的问题;补齐 created_at 单元格后订单管理/订单备份管理两页签均对齐。渲染结构断言10项全通过,测试服务重启后active、双地址HTTP 200,Git提交
408e2d2。未操作生产环境。 -
2026-09-16:下单备份管理新增「单价」列(下单时间右侧)与详情弹窗成品信息单价字段;因备份记录本身无单价字段,经旭东确认取「该次下单生成的订单单价」——按下单时间+货品编号匹配国内/海外订单单价,无有效价显示「-」(147/413 条有有效价)。接口与前端渲染断言通过,测试服务重启后active、双地址HTTP 200,Git提交
e04a430。未操作生产环境。 -
2026-09-16:新品成品管理新增「采购计划」列(产品开发左侧)及新增/编辑弹窗字段;新增弹窗该字段灰色只读,绑定BOM后按匹配关系回填——第一层按品牌(海外品留空、人工在编辑弹窗维护),第二层按BOM内料物料的供应商匹配供应商管理绑定的采购计划;匹配不到时不覆盖原值。new_products 表经幂等迁移新增 procurement_planner 字段。接口测试6项、前端断言5项全通过,测试服务重启后active、双地址HTTP 200,Git提交
e064dd0。未操作生产环境。 -
2026-09-16:核对计划预测 SKU 弹窗「云仓数据」页签取数口径。结论:6 个字段已是云仓口径,无需改动(代码链路 + 真实弹窗渲染 + 从原始表独立重算全量比对,云仓库存 2649 产品、云仓销量 1308 产品均 0 处不符);昨日销量两边相同系 09-15 出库记录全为云仓仓库。旭东确认保持现状,未改代码、无提交。
-
2026-09-16:修复计划预测 SKU 弹窗三个页签(默认/云仓/外仓)产品分级不一致的问题——原云仓、外仓页签各按本口径销量重算分级,现统一取默认口径产品分级。抽查最近120个产品三级一致,测试服务重启后active、双地址HTTP 200,Git提交
b85fe57。未操作生产环境。 -
2026-09-16:产品信息管理新增弹窗品牌字段改为下拉选择+模糊查询(点击展开、输入过滤、回车选中、Esc关闭、无匹配可手输新品牌),新增接口 /api/brands/all;品牌选择后仍联动采购计划逻辑。前端逻辑测试12项通过,测试服务重启后active、双地址HTTP 200,Git提交
06020a2。未操作生产环境。 -
2026-09-16:执行“测试环境→云端→11.79生产”两阶段部署。第一阶段把8.186的功能代码(差异9个文件)、数据库结构/字段与训练记录同步到云端并保留云端数据:新增3个字段(new_products/suppliers 的 procurement_planner、packaging_orders.新旧品)、对齐3处字段定义差异,云端字段数978→981,未删任何字段与表,业务行数不变;知识库同步66个文件、训练记录670→686。云端备份
~/dy-backups/cloud-pre-sync-20260916_182942/,服务active、本机与公网HTTP 200、缓存已刷新。第二阶段从云端打包项目71M与数据库97M(含全部数据、排除feedback),三端md5一致;生产部署前完整备份到/home/dieya/.openclaw/workspace/dy-dashboard_backups/pre-cloud-sync-20260916_182942/(代码64MB+数据库101MB),随后替换代码/vault/上传文件并全量导入云端数据库(错误0条),51张表行数与云端一致,反馈表按约定保留生产本地123条。排查发现生产服务实由 systemd --user 托管,pkill 会被自动拉起旧实例,已用systemctl --user restart正规重启,4 worker 正常、192.168.11.79:18888HTTP 200,云端与生产字段结构981=981一致。打包与导入窗口内云端新增的少量记录(国内订单/包材订单/待下单/日志共3-5条)未包含。 -
2026-09-17:同步钉盘最新库存与日出库到8.186与云端。用项目现有 import_dingtalk_latest.py 增量导入器两端各执行一次:出库补齐 2026-09-15 八个来源 1,499 条与 2026-09-16 旺店通 2,018 条,库存导入 2026-09-17 全部 21 个仓库文件 21,187 条(可用库存 45,490,421);写入前记录两端切片(目标组合均 0 行,未覆盖已有数据)。完整扫描钉盘 784 个出库、1,503 个库存文件生成期望组合比对:本地补录 2026-06-23 京东国际 250 条,云端补录 2026-06-28~09-01 共 70 个组合 23,381 条;2026-06-28 的 jdgj/jdjwt/tmgj 云端已用中文全称存储,判定命名差异不重复导入。归一化(中文全称来源 + 仓库编码前导零)复核出库 784/784、库存 1503/1503,两端缺口均为 0。两端 refresh_all_caches(),8.186 重启 dy-dashboard.service、云端平滑重载,服务 active、本机/局域网/公网均 HTTP 200。发现早已存在的历史差异:云端 2026-05-27~31 库存约 92.7 万行重复(978,172 行中唯一 50,420 行);库存 7/8 月本地多于云端,出库为双向差异;已在回复中说明并询问是否对账。未操作生产 11.79。
-
2026-09-17:系统设置新增「参数列表」子菜单(参数配置下方),页面两列为参数名称、参数计算逻辑,内置 X=云仓销量/昨日销量、Y=外仓销量/昨日销量;新增 param_list 表(幂等建表并写入初始参数)、
/api/param-list/list接口与页面路由,权限配置自动注册。页面路由302、接口401、数据库两条记录校验通过,Python/JavaScript语法与gzip缓存检查通过,测试服务平滑重载无错误日志,Git提交91c9148。未操作生产环境。 -
2026-09-17:按旭东更正,撤销新增的独立「参数列表」子菜单(侧边栏入口、/param-list 页面路由、独立接口全部移除),改为在「参数配置」页内新增独立列表「云仓外仓权重列表」,两列参数名称/参数计算逻辑,内置 X=云仓销量/昨日销量、Y=外仓销量/昨日销量(数据由 param_list 表幂等建表并写入初始参数,随参数配置接口返回)。接口返回、页面200、原路径失效、语法与gzip检查通过,测试服务平滑重载无错误日志,Git提交
f2dac49。未操作生产环境。 -
2026-09-17:参数配置页两处调整——「云仓外仓权重列表」更名为「云仓外仓权重参数」;页内四个参数列表(趋势判断基础配置参数、日销量预测基础配置参数、云仓外仓权重参数、全局配置参数)的数据单元格统一居中,含输入框及其中数值,样式仅作用于本页。JavaScript语法与gzip缓存检查通过,测试服务平滑重载无错误日志,Git提交
c51c6c7。未操作生产环境。 -
2026-09-17:计划预测第一个页签新增三个字段——「加工厂库存」右侧依次为云仓可分配库存(=总库存×参数X−云仓库存)、外仓可分配库存(=总库存×参数Y−外仓库存)、是否调拨(按可分配库存自动判定,选项云仓/外仓/云仓和外仓,均不大于0留空)。X=云仓昨日销量÷昨日销量、Y=外仓昨日销量÷昨日销量(分母为0时权重按0,保留1位小数);两列数值加入排序与数字筛选、是否调拨加入选项筛选,字段权限清单同步登记。接口200行逐行重算0处不符,语法与gzip检查通过,测试服务平滑重载无错误日志,Git提交
3ca6911。未操作生产环境。 -
2026-09-17:计划预测在「总支撑天数」右侧新增云仓支撑天数、外仓支撑天数两列,公式为(本仓库存+本仓可分配库存)÷本仓日销量预测,保留1位小数,预测销量为0时显示999(与页面现有支撑天数列口径一致);两列加入排序/数字筛选,字段权限清单同步登记。接口2500行逐行重算0处不符,语法与gzip检查通过,测试服务平滑重载无错误日志,Git提交
b640f68。未操作生产环境。 -
2026-09-17:产品信息管理「新增产品(成品)」弹窗调整采购计划逻辑——品牌为海外品牌时采购计划自动默认填写「张莹纯」,输入框仍可编辑,人工手填后不被覆盖;切回国内品牌恢复只读并按供应商自动带入。前端stub测试5项全通过,JavaScript语法与gzip缓存检查通过,测试服务平滑重载无错误日志,Git提交
541fadc。未操作生产环境。 -
2026-09-17:计划预测「下单信息」弹窗支持海外品牌内料——海外品牌商品(品牌管理分类=海外)在包材下单信息列表及确认加入待下单弹窗中显示内料,确认下单后内料同步写入包材订单管理并参与包材结余滚动;非海外品牌完全保持原逻辑。detail_with_bom 新增 include_inner=auto 由后端按品牌分类判定,confirm_order 内料过滤改为「非海外才跳过」。接口实测 MUTO/PUNOMO(海外)多1行内料、洁维塔博士/泊紫汀兰(国内)与默认一致;语法与gzip检查通过,测试服务平滑重载无错误日志。Git提交
c72bdcf(routes/products.py + static/js/app.js);routes/purchase.py 因该文件附带历史未提交改动(包材单价/供应商全称/仓库到货/计划下单时间+修复已提交版本语法错误),按规则未并入提交,已请旭东确认。未操作生产环境。 -
2026-09-17:旭东确认「一起提交」,将 routes/purchase.py(本次内料同步守卫 + 该文件历史未提交改动:包材订单单价自动带入、供应商全称解析、仓库到货、计划下单时间列与排序、修复已提交版本语法错误)提交为
59656d7;工作区其余不相关文件(lint_knowledge.py、reimport.py、static/js/feedback.js)未提交。 -
2026-09-17:执行「8.186 → 云端 → 11.79 生产」两阶段部署。阶段一:云端备份(代码75.5MB/DB102.5MB)后差异同步10个功能文件、增量迁移仅新建 param_list 表(0个字段需MODIFY、云端独有列保留)、同步696篇训练记录,平滑重载+刷缓存,本机与公网探针200、下发app.js与磁盘一致。阶段二:预检两端表清单/feedback行数/生产磁盘后,云端打包全量(含数据、排除 feedback,md5三端一致),生产备份到
~/.openclaw/workspace/dy-dashboard_backups/pre-cloud-sync-20260917_165904/,就地替换(上传目录113→117项保留生产图片、VAULT_PATH改回、依赖安装、缓存清理)并全量导入(错误0条),52表行数仅 dashboard_logs 漂移5行(云端26679/生产26674,打包窗口写入),重启后5 worker正常、双地址探针200、两端字段986=986。未删除任何云端独有表或列。 -
2026-09-18:同步钉盘最新库存与日出库到 8.186 与云端。用项目现有 import_dingtalk_latest.py(本地)与 import_20260908_cloud.py(云端)增量导入器两端各执行一次:出库补录 2026-09-16 八个来源 1,501 条(dymuto 24、dyqsimelr 48、jdbz 301、jdgj 330、jdjwt 393、jdmrt 17、jdsmj 13、tmgj 375)与 2026-09-17 旺店通 2,111 条(67,142 件),库存导入 2026-09-18 全部 21 个仓库 21,215 条(可用库存 45,497,537、生产在途 1,672,739、采购在途 13,072,783)。写入前两端目标切片逐组合查询均为 0 行并保存 JSON 备份(backup_local.json / backup_cloud.json),未覆盖已有数据。完整分页扫描钉盘出库 794 个文件(生成 793 个日期+来源组合)、库存 1,524 个文件(1,524 个日期+仓库组合),归一化云端中文全称来源与仓库前导零后比对:本地补录 2026-06-23 京东国际 250 条(云端已有),两端出库与库存缺口均为 0。2026-09-16/09-17 出库与 09-18 库存两端行数、数量完全一致,空编码/NA/合计占位行为 0。两端执行 refresh_all_caches()(各 11 个模块),8.186 重启 dy-dashboard.service、云端 kill -HUP 平滑重载,服务 active、本机/局域网/公网均 HTTP 200。发现并报告早已存在的两端历史差异(未对账):出库 129 个日期中 109 个行数不同(本地 388,877 / 云端 395,450),云端多出约 4,858 条为早期中文全称重复来源(旺店通 3,870、天猫国际 458、京东洁维塔 379、京东国际 151);库存 2026-05 云端 978,172 行 vs 本地 50,395 行(云端早期成批重复行,去重后约 50,420 行),6/7/8 月各有差异,9 月两端均为 315,846 行完全相同。未操作生产 11.79。
-
2026-09-18:优化计划预测「建议下单数量」计算逻辑(routes/planning.py + static/js/app.js)。原逻辑为 int(日销量预测×(安全库存天数+货期+物流)),仅一个口径;现按「总支撑天数/云仓支撑天数/外仓支撑天数」与阈值 K=安全库存天数+货期+物流 的组合选择预测口径:三仓都不足→日销量预测;总仓不足且云仓不足、外仓充足→云仓日销量预测;总仓不足且云仓充足、外仓不足→外仓日销量预测;总仓充足且云仓不足、外仓充足→云仓日销量预测;其余组合(三仓都充足 / 总仓不足但云仓外仓都充足 / 总仓充足但云仓外仓都不足)不计算建议下单数量。相等边界按「充足」处理;建议下单数量=int(所选预测×K) 向下取整,实际下单数量仍按 1000 向上取整、不计算时为 0。原「日销量预测=0且库存>0→0」特判已由新规则自然覆盖(预测为0时三仓支撑天数均为999>K→不计算→0)。实现上新增 _calc_suggested_qty(),并把调用点从 _calc_support_days() 内移到云仓/外仓支撑天数计算完成之后(原位置这两个字段尚未生成);同步更新计划预测列说明(app.js 两处 planTips)并重新生成 app.js.gz。验证:单元测试覆盖8种组合+相等边界+预测全0共10项全部通过;接口 /api/planning/list 实测200行逐行独立复算0处不符,其中24行建议下单数量非0、40行与旧口径结果不同。测试服务重启后 active、本机与局域网 HTTP 200。Git提交
8603b53。未操作生产环境;「新品下单」页仍为旧公式,未一并修改。 -
2026-09-18:修复计划预测列表选项筛选异常(routes/planning.py)。现象:筛选「是否调拨=云仓」返回总数与不筛选相同(2,509),首页200行中187行该字段为空。根因:list 类型筛选的兜底匹配写成
v == row_val or v in row_val or row_val in v,反向包含row_val in v在单元格为空时恒为真(空字符串是任意字符串的子串),且单元格「云仓」也会被选项「云仓和外仓」命中。修复:去掉反向包含,只保留完全相等或单元格包含所选选项,空值单独判为不匹配。验证:筛云仓→625行本页200行全为云仓、不符0;外仓/云仓和外仓→0行;多选云仓+外仓→仅云仓625行;回归风险把控、销售趋势、是否新品、产品种类、波动风险、极值判断,返回行全部严格匹配、不符0。测试服务重启后 active、本机与局域网 HTTP 200。Git提交1c81ac0。未操作生产环境。 -
2026-09-18:同步钉盘最新日出库到 8.186 与云端。用项目现有 import_dingtalk_latest.py(本地)与 import_20260908_cloud.py(云端)增量导入器两端各执行一次:补录 2026-09-17 八个来源 1,501 条(dymuto 24、dyqsimelr 48、jdbz 301、jdgj 330、jdjwt 393、jdmrt 17、jdsmj 13、tmgj 375),与当天上午已导入的旺店通 2,111 条合计 09-17 全天 3,612 条 / 80,047 件,两端一致。写入前两端 8 个目标切片逐组合查询均为 0 行并保存 JSON 备份(backup_local.json / backup_cloud.json),未覆盖已有数据。完整分页扫描钉盘出库 802 个文件(789 个日期+来源组合)、库存 1,524 个文件(1,524 个日期+仓库组合),归一化云端中文全称来源与仓库前导零后比对:两端出库与库存缺口均为 0;库内另有 12 个「钉盘无对应文件」的早期组合(2026-05-15~06-03 的 jdgj/jdjwt/jdbz/tmgj),属既有历史情况未处理。两端累计:本地 390,378 条 / 9,797,305 件,云端 396,951 条 / 10,391,939 件(历史差异早已存在,本次未对账)。两端执行 refresh_all_caches()(各 11 个模块),8.186 重启 dy-dashboard.service、云端 kill -HUP 平滑重载,服务 active、本机/局域网/公网均 HTTP 200。未操作生产 11.79。
-
2026-09-19:同步钉盘最新库存与日出库到 8.186 与云端。用项目现有 import_dingtalk_latest.py(本地)与 import_20260908_cloud.py(云端)增量导入器执行:新增 2026-09-18 旺店通出库 2,067 条 / 57,174 件、2026-09-19 库存全部 21 个仓库 21,225 条(可用库存合计 45,337,130、生产在途 1,625,266、采购在途 12,851,483),两端一致;同时本地补录 2026-06-23 京东国际 250 条与 2026-09-16/09-17 五个来源共 58 行(dyqsimelr/jdbz/jdjwt/jdsmj/tmgj),这三批均为当天 08:00 数据清洗删除的行。写入前备份两端切片:本地 2,202 行(09-16/09-17 待替换组合)、云端 0 行(新增组合均空),保存 backup_local.json / backup_cloud.json。完整分页扫描钉盘出库 803 个文件(790 个日期+来源组合)、库存 1,545 个文件(1,545 个组合),归一化后两端出库与库存缺口均为 0,最新出库 09-18、最新库存 09-19。累计:本地 392,445 条 / 9,854,479 件,云端 399,018 条 / 10,449,113 件。两端执行 refresh_all_caches()(各 11 个模块),8.186 重启 dy-dashboard.service、云端 kill -HUP 平滑重载,服务 active、本机/局域网/公网均 HTTP 200。发现系统性问题:auto_clean.py 的「货品名称 = 空」删除规则会删掉非旺店通来源导入的行(这些货品编码不在产品主数据,导入时名称写空),形成「导入—次日 08:00 被删」循环,已造成 2026-09-01~09-15 本地比云端少 297 行(云端未执行该规则);已按“不擅自对账”原则报告并等旭东决定,未改动清洗规则、未补录 09-01~09-15 的 297 行。未操作生产 11.79。
-
2026-09-19:排查并修复计划预测「下单信息」弹窗下单前/后包材显示 -24995000 级天量负数(云端 31 个商品 51 行)。定位为数据被算坏而非显示问题:前端保存把 bom_items.quantity 写成「实际下单数量」(2026-07-31 提交 8e66faa 引入),确认下单滚动公式
下单后包材 = 下单前 + 包材下单数 − 成品下单数×用量把它当用量代进去。修复:static/js/app.js 三处 quantity 改回读「用量」列;routes/purchase.py 新增 _resolve_roll_bom_qty,确认下单与订单回退的包材结余一律优先取 bom 表权威用量。端到端复现验证(临时商品、用量1、下单前3000、成品5000、包材5000/0,bom_items 故意写入污染值 5000):下单后包材 3000 与 -2000,修复前会是 -2400 万级;临时数据已清理。JS/Python 语法、gzip 缓存、服务重启 active、HTTP 200 均通过。Git提交cb1ec72(仅 static/js/app.js、routes/purchase.py)。云端历史脏数据与代码同步等旭东确认后进行。未操作生产环境。 -
2026-09-19:执行「同步云端 + 修复数据」。代码:routes/purchase.py 整文件替换(与8.186一致),static/js/app.js 定向补丁4处(不改动云端独有的列说明文案),重新生成 app.js.gz,gunicorn 平滑重载,本机与公网 HTTP 200、下发资源含修复。数据:云端 bom_packaging 受检 77 行(31 商品),逐行反推「那次被污染写入之前的值 + 真实用量重算」,确认 12 行真被污染并修复——POZ-BXQXJ-0880-TM 三包材 -24995000→0、POZ-XFS-3691-TM 三包材 -79982000→10000、POZ-XFS-7010-TM 瓶/泵 -49985000→10000 彩盒 -74984000→11000、POZ-MM-3332-TM-MD -15000→3000、JWTBS-HYT-0008-ALJK 彩盒 -2000→-7000 面膜袋 25000→-25000;其余 65 行为正常负数(包材未下单而成品消耗),未改动。修复前备份 15 行到
~/dy-backups/bom-packaging-packfix-20260919_152221/、代码到~/dy-backups/code-packfix-20260919_1521xx/,修复后 refresh_all_caches()。两处云端基准与本地导入值不同已报告(XFS-7010 彩盒云端基准1000 vs 本地15000;JWTBS-HYT-0008 云端基准-5000 vs 本地2000)。未操作 11.79 生产环境。 -
2026-09-19:计划预测「下单信息」弹窗内料显示规则增加国家名判断——海外品牌之外,还要货品名称含「新西兰/新加坡/韩国」任一才显示内料,其余海外品与国内品一致不显示内料。改动 routes/products.py(include_inner=auto 分支新增 INNER_MATERIAL_NAME_KEYS 判断)+ static/js/app.js(两处注释)。测试环境实测:海外品牌且 BOM 含内料的 435 个商品中,按新规则只剩 16 个(名称带(新西兰)/(新加坡)/(韩国))会显示内料;接口实测命中品含内料、未命中海外品与国内品均不含内料;JS/Python 语法、gzip 重生成、服务重启后 active、本机与局域网 HTTP 200 通过。Git提交
ee3dfd2。确认下单写入包材订单的内料判断(routes/purchase.py)未同步该名称规则,已请旭东确认是否一并调整。未操作生产环境。 -
2026-09-19:确认下单内料写入包材订单同步国家名规则——只有品牌分类=海外且货品名称含「新西兰/新加坡/韩国」的商品,内料才随包材订单写入包材订单管理;订单流向仍按品牌分类判断。改动 routes/purchase.py(新增 allow_inner_material,复用 routes.products.INNER_MATERIAL_NAME_KEYS)。三种用例走真实确认下单接口验证全部通过(海外+含国家名→内料写入;海外+不含→不写入;国内+含→不写入),临时数据已清理;服务重启后 active、本机与局域网 HTTP 200。Git提交
559bd9b。未操作生产环境。 -
2026-09-19:AI分析板块「数据源与口径」优化。①修复 brand 参数在产品库存/产品销量两个数据源不生效(补齐「品牌」列);②新增 5 个数据源(5→10):planning_metrics 计划预测口径(复用计划预测页同一套计算:日销量预测/总·云仓·外仓支撑天数/可分配库存/是否调拨/建议下单数量/产品分级/销售趋势)、orders_in_transit 订单在途与到货(国内/海外/包材未完结订单未到数量,包材按所属成品归集)、material_inventory 包材与内料库存、inventory_value 逐商品库存金额(含特殊成本价规则)、brand_overview 品牌汇总(SKU数/库存/金额/昨日与30天均销/近30·100天动销SKU数);③修复数据源通用排序对文本字段(是否调拨/产品分级/销售趋势)报错,改为数值排序失败回退字符串排序。验证:新数据源逐个直调 + brand 参数在 6 个数据源全部命中 + 真实 /api/ai/ask 五问端到端,AI 分别正确选到新数据源并返回数据;服务重启后 active、本机与局域网 HTTP 200。Git提交
edd9700。AI分析的页面展示、提示词、权限历史三个方向未动。未操作生产环境。 -
2026-09-19:AI分析「页面与结果展示」优化。①结果自动配图(日期列→折线趋势,其余→前12名横向柱状图,Chart.js);②结果表格加「导出CSV」(带BOM,导出全部行)与「复制」(制表符,可直接粘进Excel)工具条并显示总行数;③表格超100行时橙色提示总行数与查看方式;④回答上方新增「数据源 · 数据日期」灰字(库存类用最新库存日2026-09-19、出库类用最新出库日2026-09-18、订单在途实时无日期,10个数据源都配了 date_kind);⑤历史回看复用同一套渲染并保存 meta 与总行数。验证:JS/Python 语法、gzip 重生成、服务重启后 active、本机与局域网 HTTP 200;真实 /api/ai/ask 三问返回均带 datasource_name/data_date/total_rows。Git提交
320fb27。剩余方向:提问理解与提示词、权限与历史记录。未操作生产环境。 -
2026-09-19:AI分析「提问理解与提示词」优化。①系统提示词补 6 条 few-shot 示例(问题→输出JSON,覆盖按日出库/品牌库存/调拨/包材库存/品牌汇总/在途未到货)并加排序字段约束;②追问时前端提交上一轮结果(数据源+列+前5行),后端注入上下文,支持「这里面最低的是哪个」类追问;③AI选不到数据源时后端按关键词评分推荐最接近数据源(10个数据源均配 keywords),前端渲染为可点击按钮,点击即用该数据源重问;④示例问题 6→10 条并覆盖新数据源,输入区新增「💡 示例」按钮(对话中途可随时打开);⑤无源兜底文案改为列出全部可问范围。验证:真实接口四类场景(选源、追问沿用数据源、无源兜底、推荐按钮)均通过;JS/Python 语法、gzip、服务重启后 active、本机与局域网 HTTP 200。Git提交
992a689。剩余方向:权限与历史记录。未操作生产环境。 -
2026-09-19:AI分析「权限与历史记录」优化。①金额类数据源(库存成本汇总/商品库存金额/品牌汇总)接入字段级权限,未显式授权时后端拒绝并提示,管理员不受限(走现有 field:<字段>:view 配置,权限配置页可勾选);②/api/ai/ask 返回 can_export(显式配置优先、未配置跟随页面查看权限),前端据此显示/隐藏导出与复制按钮;③历史记录支持关键词搜索(问题/摘要)、按数据源下拉筛选(显示中文名)、单条删除(仅限本人,越权返回404),保留整条清空。验证:viewer 角色问金额类数据源被拒、非金额类正常;显式授权后立即可查、撤销后恢复拒绝;导出权限设0后 can_export=False、删除配置后恢复;历史关键词命中9条、数据源筛选2条、删除后1条、越权删除404;语法/gzip/服务重启后 active/本机与局域网 HTTP 200 均通过。Git提交
e46a3ec。AI分析四个方向已全部完成(仅测试环境)。未操作生产环境。 -
2026-09-20:排查云端生产系统网页打不开并优化测试环境库存导出内存占用。排查(只读):外网 https 超时、80 端口仍 301、443 端口可连通但无响应;10:14 nginx 记录
POST /api/inventory/export上游超时,10:55 gunicorn master 报两个 worker(pid 615950、689048)被 SIGKILL 疑似 OOM,worker 死亡期间 nginx 返回 502 即用户看到的打不开,随后 gunicorn 自动重启、10:55:15 后服务自行恢复(复测公网 200、0.20.6s)。根因:导出接口全表查询 + openpyxl 普通模式整份表格驻留内存,服务器 2GB 内存被打满(mysqld 被换出 858MB、swap 占用 954MB)。另发现64 但 CPU 99% 空闲且无 IO 等待(腾讯云宿主层读数,非本机真实负载)。优化(仅 192.168.8.186 测试环境):① services/db.py 新增 query_iter(),用 SSDictCursor 按批(2000 行)流式取数;② routes/inventory.py 导出改流式逐批写入 + openpyxl write_only,新增 _export_cell() 统一单元格类型(Decimal→float、timedelta→str,修掉原先报错点),csv 分支同步改流式;③ gunicorn 增加routes/inventory.py:326处类型绑定报错、磁盘 86%(剩 5.7G)、负载读数 37--max-requests 800 --max-requests-jitter 100,三处同步——用户级 systemd 单元~/.config/systemd/user/dy-dashboard.service(此前误查系统级未找到单元)、update_data.py、run.py;④ 清理日志 error.log(217MB)/access.log(22MB)/auto_update.log 各保留末 2000 行,logs 目录 26M→118K。实测对比(最新库存日 2026-09-19,19,248 行):内存峰值 56.1MB→2.6MB、耗时 4.3s→3.1s。端到端:真实接口导出成品 xlsx 200、工作表「库存导出」14,334 行 / 0.48MB,csv 200 / 1.50MB,表头与首行格式与原一致;systemd 重启后服务 active、本机 HTTP 200(0.04s)。Git提交2d60493(仅 services/db.py、routes/inventory.py、update_data.py、run.py)。待旭东决定:云端生产是否同步该优化、实例内存升级。未操作云端生产与 11.79。 -
2026-09-20:将库存导出内存优化部署到云端生产(gyl.dieya.net.cn)。部署前对比确认云端 services/db.py、routes/inventory.py 与本地改动前完全一致(云端无独有版本),故按定向补丁覆盖这两个文件,未夹带其他改动;备份到
/dy-backups/export-memfix-20260920_114046/(两代码文件 + systemd 单元)。systemd 单元 /etc/systemd/system/dy-dashboard.service 的 ExecStart 仅追加 --max-requests 800 --max-requests-jitter 100,其余配置原样保留;daemon-reload + restart 后服务 active、本机 HTTP 200(0.0040.1s)、公网 https 三次 200(0.22~0.28s)、登录页 200。云端真实数据导出实测:xlsx 200 / 工作表「库存导出」14,172 行 / 0.45MB / 1.9s,csv 200 / 1.48MB 表头正常。日志清理:error.log(45M)、access.log(24M) 各保留末 2000 行,logs 目录降至 708K。⚠️ 部署中发现云端磁盘 100% 满(40G 用满、0 可用)并一度阻塞写入:直接元凶为当天 10:57/10:58 两次全量云端备份各 3.5G、合计 7G(落在故障时间窗内,把 86% 顶到 100%),长期因素是 /etc/cron.d/dy-dashboard-backup 每天 08:30 的 backup.sh 持续累积(/opt/dy-dashboard/backups 现 3.3G / 31 包)与 /tmp 约 1.4G 陈旧部署产物;已就清理范围询问旭东未获回复,按最保守方式只清理明确临时产物——journal 压缩到 100M(释放 425.6M)+ /tmp 内 9 项陈旧部署产物(约 1.2G),共释放约 1.8G(现 787M 可用),未删除任何备份(当天两份全量备份、每日备份目录、/opt/backups 652M、8 月旧目录 532M 全部保留待决)。遗留待决:备份清理范围、每日备份保留策略、同日两次全量备份的来源。本次未操作生产 11.79。 -
2026-09-20:清理云端一份全量备份并复核成品库存导出。备份清理:两份 full-cloud 全量备份(20260920_105721 / 20260920_105851)内容一致仅相差 43 秒,先对保留份做 SHA256 校验(全部 OK),再删除较旧的
full-cloud-20260920_105721,磁盘 98%(787M 可用)→ 89%(4.3G 可用),释放 3.5G;保留full-cloud-20260920_105851(代码全量包 3.6G + 数据库全量 104M + SHA256SUMS)与 8 月 29 日那份 full-cloud 备份。导出复核(云端真实数据、成品口径):列表接口 200;xlsx 200 / 工作表「库存导出」14,172 行 / 0.45MB / 2.1s;csv 200 / 1.48MB / 14,172 行 / 0.4s——修复前该导出跑不完且 worker 被 OOM 杀掉,现在秒级完成。清理后复核服务 active、本机 HTTP 200、公网 https 200(0.21s)。仍待决:每天 08:30 自动备份的保留策略(会持续累积)、今天为何连跑两次全量备份。未操作生产 11.79。 -
2026-09-21:排查并修复云端生产「系统无法打开」(gyl.dieya.net.cn)。现象:静态首页可打开、
POST /api/login卡死无响应。时间线:08:30 每日备份 cron 导出 698M SQL 后打包时磁盘写满(log 中gzip: stdout: No space left on device、tar 只写入 2048/10240 字节后失败),本次备份中断;因set -euo pipefail中断在第 2 步,末尾rm -f ${DB_DUMP}未执行,698M 临时 SQL 滞留项目目录,磁盘维持 100%;09:05 gunicornAutorestarting worker after current request、09:07WORKER TIMEOUT (pid:968880),中断栈停在POST /api/login→services/db.py: conn.commit(),即 MySQL 因磁盘满无法提交把登录拖到 60 秒超时。根因:磁盘 100% 满(40G 用 38G、可用 0),累积备份约 25G(/opt/dy-dashboard-backups 12G、/opt/dy-dashboard_backups 4.5G、/opt/dy-dashboard/backups 3.4G、/home/ubuntu/dy-dashboard-backups 3.9G、/opt/backups 0.65G、/home/ubuntu/backups 0.71G);现有 30 天保留策略只覆盖每日目录的dy_platform_backup_*,new_products_images_*与手工/部署备份目录无清理机制。处理(清理范围先经旭东确认,选「清理 9/10 之前的旧备份 + 失败残留」):删除上述各备份目录中 2026-09-10 之前的全部备份,并删除失败残留 698M 临时 SQL 与截断损坏的 85Mdy_platform_backup_20260921_0830.tar.gz;保留 09-10 以后全部备份、两份 full-cloud 全量备份(09-20/09-21),未动范围外的/opt/dy-dashboard.old-20260808_101255(278M) 与/opt/dy-dashboard-before-20260807_092207(254M)。结果:磁盘 100%(0 可用)→ 59%(16G 可用),释放约 15G;服务 active、本机 18888 端口 200(0.004s)、公网首页 200(0.34s)、登录接口 200(0.68s);重跑 backup.sh 成功,生成dy_platform_backup_20260921_0930.tar.gz(177M) 与new_products_images_20260921_0930.tar.gz(59M),临时 SQL 由脚本正常清理。待旭东决定(未擅自改):给手工/部署备份目录加保留策略并覆盖new_products_images_*;backup.sh增加失败兜底(tar 失败也删临时 SQL)+ 磁盘水位预检。未操作 11.79。 -
2026-09-21:云端磁盘占用治理建议 + 每日备份目录加保留策略(旭东仅选定此项)。先用现有证据定位「水龙头」:自动化任务「云端每日完整备份」每天 08:00 跑
backup_cloud_daily.py,向/opt/dy-dashboard-backups写一份 3.5G 全量包且无保留策略,每约日增量 3.7G;今天 08:00 那次吃掉最后约 4G(manifest 记disk_free=785M)导致 08:30 每日备份写满中断;且该全量包tar -czf ... -C /opt dy-dashboard无排除项,把 venv/uploads/vault/logs 与每日备份包也一起打包(3.4G 中水分极大)。建议六项:①全量瘦身+留最近2份+降每周 ②每日备份目录保留策略 ③backup.sh 失败兜底+磁盘预检 ④全量包外移 ⑤journald 上限/MySQL binlog 过期/inventory_detail 归档 ⑥磁盘水位告警。旭东选定仅第②项,已执行:备份原脚本到~/dy-backups/backup-sh-pre-retention-20260921_094541/,改/opt/dy-dashboard/backup.sh清理段为「项目包保留 14 天(原 30 天)+ 图片包保留 7 天(原从不清理)」,bash -n通过;立刻按新策略清理一次,删掉 09-10~09-13 四份图片包(约 230M),目录 2.8G→2.5G(21 个文件),磁盘 59%、服务 active、本机 200 均正常。其余各项未执行,等旭东指令。未操作 11.79。 -
2026-09-21:钉盘最新库存与日出库更新到 8.186 与云端(原指令为 11.79,因 11.79 离线改目标)。11.79 排查:
ip neigh显示 FAILED、ping 100% 丢包、SSHNo route to host,扫描 192.168.11.0/24 无主机开 18888,云端亦不可达,判定主机不在线,未做任何读写。钉盘完整分页扫描:日出库 820 文件(最新 20260920-wdt-cksj.csv,09-20 仅旺店通 1 来源、09-19 有 8 来源)、库存 1,566 文件(最新 20260921-wdt-kcmx-*,09-21 齐 21 仓:01/02/04/05/06/07/09/10/11/12/13/14/15/16/20/24/25/26/27/29/35)。按归一化规则(来源中文全称折算代码、仓库去前导零,导入清单保留原始编码)两端比对,缺口一致:出库 17 个组合(09-18 dymuto/dyqsimelr/jdbz/jdgj/jdjwt/jdmrt/jdsmj/tmgj、09-19 八个缺失来源含 wdt、09-20 wdt),库存 21 个组合(09-21 全部仓);09-05 之前历史组合(出库 703、库存 1,293)保留未动。写入前两端 38 个目标切片各存 JSON(全部 0 行);38 个源文件下载后 scp 到云端 /tmp/update_20260921,两端 md5 摘要一致(61ab187b7f2c983a901d3139eccb5a4e);导入复用现有 import_dingtalk_latest.py(本地)与 import_20260908_cloud.py(云端),特殊成本价 8 条与无效编码过滤沿用原逻辑,两端各新增出库 6,781 条、库存 21,403 条。两端各刷新 11 个缓存模块,8.186 用户级 systemd 重启、云端 kill -HUP 平滑重载;HTTP 8.186 本机/局域网 200、云端本机/公网 200。最终全量复核:两端缺口 0/0,38 个组合逐条一致,出库按日期+来源行数与数量合计两端相同,库存 09-21 两端均 21 仓/21,403 条/可用 45,577,437/生产在途 1,685,627/采购在途 12,970,943,脏数据 0。累计:8.186 出库 398,918(至 09-20)、库存 1,626,603(至 09-21);云端出库 405,799、库存 2,477,105。未操作 11.79。