82 Commits

Author SHA1 Message Date
bbb967e110 降低业绩匹配任务峰值内存 2026-10-19 19:08:39 +08:00
e4d82dab2a chore(部署): 发布前拦截会覆盖线上已发布提交的版本
今天连续发生多次热修复/旧版本发布把别人刚上线的改动冲掉(种菜损耗运费口径被撤回两次)。
发布脚本读取线上 .deployed-sha 后:本地没有该提交先 git fetch 再判断;线上提交不是本次发布版本的祖先时直接拒绝(服务器不做任何变更);
新增 -AllowRollback / --allow-rollback 仅供负责人决定撤回时使用。AGENTS.md 第 8 节补充热修复须基于线上版本并立即合入 main。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VANWYsNUbu2piMtCKymoyd
2026-10-19 18:00:07 +08:00
1f4f6f48d4 优化财务资源:减少重复扫描、隔离重型任务、约束系统日志 (#390) 2026-10-19 14:56:54 +08:00
8fbc9abd53 聚胜算每日账单导出:等待胜算标签页注册并提高导出重试次数
- export-daily.mjs:点击「胜算」后轮询等待 ss.erp321.com 标签页注册(最多 30s,中途补点一次),
  避免 targetInfos 尚未出现时直接读 targetId 抛 TypeError(2026-10-13 09:30 首次尝试即因此失败)。
- run-erp-daily.ps1:导出重试 2 次提高到 3 次(2026-10-12 两次全败后只能人工补跑)。
2026-10-16 10:17:58 +08:00
b0ea247ca1 聚胜算每日账单导出:修复授权过期弹窗卡住与日期面板点空导致的导出失败
1) 店铺授权过期提醒弹窗在无头 Edge 下会卡在 leave 动画,弹窗与遮罩一直可见,挡住日期面板和查询/导出按钮;补发 animationend/transitionend 让 antd 正常卸载,仍残留则退化为隐藏该弹窗自己的 portal 容器(并解除 body 滚动锁),只影响这一棵弹窗。
2) 日期面板有时只渲染在屏幕外(left/top=-9999):原逻辑按 getBoundingClientRect 拿到负坐标去点,点了空还当成选中,最终日期框没变(表现为「日期设置失败」或整月导出失败);现在视口内照旧坐标点击,视口外退回 DOM click。
3) 页签切换后筛选区偶尔未渲染,取「开始日期」输入框坐标会报 undefined;改为先等输入框出现,并在取不到时重试而不是抛错。

验证:7/8/9 月历史复核导出各 1 次成功(23771/25020/44702,与启用代次一致);10-01→10-11 当日导出首次即成功。
2026-10-16 10:17:57 +08:00
c0aab60862 业绩明细:订单侧双口径核对(买家实付/卖家实收)+ 差额待核实 + 列名与筛选改名
- 同步:账单能对上卖家实收时按实收核对(差额归零、订单实付/实收列显示实收值),并写入标识「订单实付按卖家实收核对」
- 页面:新增兜底备注「差额待核实」(可筛选);该标识在「匹配原因」列展示并纳入筛选与联动计数
- 列名:「订单实付金额」→「订单实付/实收金额」;「未匹配原因」→「匹配原因」
- 新增 scripts/docker-fix-start.ps1(Docker 因僵尸 socket 起不来时一键清理并启动)
2026-10-14 17:54:56 +08:00
afd8487cd4 部署工具:密码提示改为 -Command 方式调用脚本(修复 ssh 子环境下 -File 被系统拒绝导致登录失败) 2026-10-14 15:11:33 +08:00
cd641ddfbd 每日账单脚本:远端失败重试 + 不再把失败当成功
- 新增 erp-remote.ps1:上传与远程执行统一重试(默认 3 次,重试前重新上传 CSV)
- run-erp-daily.ps1:导出失败重试一次;导出/转CSV/笔数核对/上传/导入回验失败都不写状态、不归档,退出码 1,下次自动重导
- 实测:真实 SSH 断连两次后第 3 次重试成功(8002 笔 / 283870.49 / 46435.6);连续失败的一次按新逻辑记失败并 exit 1
2026-10-07 10:02:00 +08:00
13a9697447 店铺收款账户账单新增「总账备注」筛选;每日账单脚本支持胜算异步分片导出
- 所有账户页签在「店铺」右侧新增「总账备注」下拉:按(平台+账单项目)翻译成账单项目集合过滤,页面/列设置/导出同口径;淘系支付宝、淘系微信同页签混多平台时按店铺名前缀细分
- 每日账单脚本:胜算超出同步导出上限(url=null+taskId)时自动从「异步导出下载管理」取回本次任务全部分片并合并成一份 CSV,导入前按页面笔数核对(不一致则跳过导入)
- 实测:京东 7 月异步导出两片 219158+235846=455004 笔 / 收入 17695094.84 / 支出 8035128.21,与已导入口径一致
2026-10-06 18:46:57 +08:00
f774e75fce 每日账单脚本:胜算该区间无数据时按跳过处理(不算失败) 2026-10-06 17:46:31 +08:00
73af15f2db 加固每日账单导出:设置日期前先关授权弹窗并逐次校验日历面板 2026-10-06 17:42:10 +08:00
80978061de 新增统一脚本:聚胜算每日账单(头条放心购 / 京东日账单)导出并导入(scripts/erp-daily-bills) 2026-10-06 17:33:19 +08:00
960d418c8e 发布构建支持指定 Composer 下载源
国内网络访问 GitHub 受限时,composer install 会因 GitHub dist 拉取失败而中断
(api.github.com / codeload.github.com SSL_ERROR_SYSCALL)。

- deploy/Dockerfile 新增可选构建参数 COMPOSER_REPO_PACKAGIST,留空仍用官方源
- macOS 发布脚本默认传腾讯云镜像,可用 CAIWU_COMPOSER_REPO_PACKAGIST 覆盖
2026-09-30 14:07:55 +08:00
a8f3178ab1 新增本机保存发布密码的小工具
- scripts/store-deploy-password.sh:交互输入一次服务器密码,写入 runtime/private/deploy-password
  (权限 600、已被 Git 忽略),避免依赖系统钥匙串授权窗口
- deploy-from-mac.sh 在该文件存在时自动使用,无需额外参数
2026-09-30 11:37:34 +08:00
ff3f3424c5 mac 发布脚本:登录信息只读一次,避免反复弹钥匙串
- 启动时只读取一次密码(钥匙串/密码文件/环境变量/交互输入),写入仅本人可读的临时
  askpass 脚本供 ssh 使用,避免每条 SSH 连接都触发钥匙串授权
- 新增 --password-file,写入钥匙串时用 -T /usr/bin/security 授予读取权限
2026-09-30 11:36:30 +08:00
c7a8baea76 macOS 发布脚本对齐 Windows 版并补文档
- deploy-from-mac.sh 增加 --skip-regctl,并在 regctl 被安全软件拦截或隧道失败时
  自动改用 docker 直传(docker save + scp + docker load/push),与 Windows 版一致
- 修正若干在 set -e 下会被误判为失败的短路条件语句
- AGENTS.md 与《开发与部署SOP》补充 macOS 发布命令、钥匙串保存登录信息,
  以及 --allow-migrations、--skip-regctl、--allow-non-main 的对应参数
2026-09-29 16:04:05 +08:00
bba79d2d69 新增 macOS 版发布脚本
按 scripts/deploy-from-workstation.ps1 的流程与约束,新增 macOS 可用的两个脚本:

- scripts/build-frontend.sh:项目专用 Node 20(官方 SHA-256 校验,可换镜像源)、
  node_modules/JS/CSS 输入指纹缓存、产物写入 .caiwu-build/public
- scripts/deploy-from-mac.sh:分支与干净检查、本地构建镜像并校验源码与前端资源、
  迁移拦截、SSH 隧道增量推送 Registry、服务器激活与健康检查、
  校验生产页面脚本、清理临时文件/隧道/构建缓存
- 登录信息:优先 SSH 私钥,其次本机钥匙串已保存的密码,首次部署只需输入一次
2026-09-29 15:16:34 +08:00
79158103de 部署脚本:regctl 被安全软件拦截时自动降级为 docker 直传 2026-09-29 13:31:30 +08:00
469992982e fix: ignore deleted migrations in deploy guard 2026-09-28 13:13:53 +08:00
chenxi
bc65d7c7e2 保留独立增量镜像隧道进程 2026-09-28 10:53:05 +08:00
chenxi
b1c2eabac4 修正 macOS 增量发布工具执行权限 2026-09-28 10:49:32 +08:00
chenxi
913be7d3ce 复用发布 SSH 连接避免服务器限流 2026-09-28 10:47:12 +08:00
chenxi
5afe009a80 修正 macOS SCP 参数数组传递 2026-09-28 10:43:33 +08:00
chenxi
1c35d088df 兼容生产服务器旧版 SCP 上传 2026-09-28 10:40:36 +08:00
chenxi
93cce7224e 修正 macOS 前端构建 PATH 2026-09-28 10:35:50 +08:00
chenxi
8b6731d0d8 支持从 macOS 工作站运行正式发布脚本 2026-09-28 10:13:14 +08:00
2c02f80b01 在后台页脚显示构建版本标识 2026-09-27 14:29:03 +08:00
07e055f335 修复唯品会账户页签脚本发布校验 2026-09-27 10:03:04 +08:00
chenxi
75f9c1b0b9 固定生产镜像为 amd64 2026-09-26 03:48:04 +08:00
chenxi
6a9bee82e9 支持跨平台部署镜像工具 2026-09-26 03:42:25 +08:00
chenxi
9e89fe3bf2 隔离部署前端构建进程 2026-09-26 03:36:42 +08:00
chenxi
7f1570401d 修复部署构建脚本路径传递 2026-09-26 03:34:40 +08:00
chenxi
299c95a6e6 修复正式部署脚本路径解析 2026-09-26 03:32:01 +08:00
f418063426 修复前端缓存复用导致账单筛选回退 (#224) 2026-09-21 09:29:02 +08:00
284ba38337 取消共享镜像接入与同步的重复人工审批 (#138) 2026-09-09 12:05:38 +08:00
784e82b0a2 支持直接使用密码部署并自动复用本机登录信息 (#137) 2026-09-09 11:54:21 +08:00
77d6671de3 fix: PowerShell 7 正确创建缺失的中继任务 (#112) 2026-09-07 15:11:00 +08:00
c96b314a9d fix: 本地账号稳定注册上游中继任务 (#111) 2026-09-07 15:08:58 +08:00
f544edd82c fix: reconcile progress inventory before sync 2026-09-03 18:22:45 +08:00
aa451f03db fix: send progress technical summaries 2026-09-03 18:12:37 +08:00
f0c7a54eb9 fix: send progress feature descriptions 2026-09-03 18:11:49 +08:00
e6552378cc fix: sync exact progress commits safely 2026-09-03 18:10:19 +08:00
798a178927 chore: retire private certificate release path 2026-09-03 17:53:09 +08:00
6995ad31c5 feat: add DingTalk account login 2026-09-03 15:42:46 +08:00
992e5a6da7 fix: separate progress author and board identity 2026-09-02 18:47:14 +08:00
59a984d32a feat: add callback-free eSign status polling 2026-09-02 16:07:16 +08:00
aaab198edb 自动同步种菜应收对账开发进度 (#95) 2026-09-01 17:52:56 +08:00
adf98f2105 feat: 接入项目推进计划看板 2026-09-01 15:08:53 +08:00
d62ad27d0f fix: centralize shared business data and remove local sqlite path 2026-09-01 11:34:37 +08:00
9a15f64490 feat: integrate finance prototype business reports 2026-09-01 10:23:00 +08:00