9 Commits

Author SHA1 Message Date
d68548646d 修复多人发布并发覆盖及旧客户端绕过保护 (#409) 2026-10-20 18:13:01 +08:00
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
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