Commit Graph

22 Commits

Author SHA1 Message Date
claude_dev 23bbb11a55 security(ci): nas-verify 登录口令去明文化——改走 Gitea secret NAS_API_PASSWORD [nas]
CI/CD / test (push) Successful in 47s
CI/CD / nas-deploy (push) Successful in 1s
CI/CD / nas-verify (push) Successful in 7s
- 架构审计 P0-1 用户拍板轮换链第一步: workflow 明文口令(每次 CI 日志暴露面)
  改 ${{ secrets.NAS_API_PASSWORD }}(secret 已建=HTTP 201)
- 同窗轮换: config/backtest.yaml(gitignore 种子,不入本 commit)已换新 bcrypt
  hash+jwt_secret, 随本次 push 的 nas-deploy rsync 传播 NAS——nas-verify 用
  新 secret 登录新 hash, 顺序=secret 先建后 push, 零断窗
- three-env §12 补 CI 凭据纪律(secret 引用+轮换流程+种子传播路径)
- VPS 侧: config 种子随下次推vps 传播; run_api.ps1 PROMOTION_PASSPHRASE 同串
  轮换随后续步骤执行; git 历史旧明文按用户拍板不洗(私有内网仓)

Co-Authored-By: Claude Code <notify@anthropic.com>
2026-10-01 09:55:08 +08:00
claude_dev 0ba59fa776 ci(gate): pytest 门禁扩至 8 目录——补 tests/trader+backtest+data+orchestrator [nas]
CI/CD / test (push) Successful in 47s
CI/CD / nas-deploy (push) Successful in 5s
CI/CD / nas-verify (push) Successful in 7s
- 架构审计 P0-5 用户拍板「加」: 撮合/涨跌停/软限/持仓账本/shadow 引擎等
  钱相关测试(原 4 目录外)进强制门禁——此前改坏撮合逻辑可带绿灯直推 NAS
- 前置实测: 四目录本地 venv310 339 passed 1 skipped 共 7.6s 零环境失败
  (09-30 验收报告担心的 bullet_trade/polars 缺依赖属 tests/portfolio 语境,
  与这四目录无交集)
- CLAUDE.md 限制行+three-env §12 门禁范围注同步(基建线档随码走);
  workflow 改动已过本地 yaml.safe_load(§12.1-④纪律)

Co-Authored-By: Claude Code <notify@anthropic.com>
2026-10-01 09:48:12 +08:00
claude_dev 9eb58834b2 chore: zcode review 三修——①本地tag强制对齐远程c97f449+runbook增部署班次台账节(治注记滞后两轮循环) ②审计报告14件归档docs/archive/reports/audit_20260927入库(根目录4md+reports全目录,顺带堵手动promote带未跟踪件路径) ③CI pytest加tests/api第四目录(治盲区,189测17s) [nas] [no-doc]
CI/CD / test (push) Successful in 38s
CI/CD / nas-deploy (push) Successful in 10s
CI/CD / nas-verify (push) Successful in 8s
2026-09-27 12:40:57 +08:00
claude_dev fae3a94462 fix(ci): 闸门步骤名裸冒号修 YAML 解析失败——0141f4e 的 name: 里「三线唯一活文档: 域内」未加引号,workflow 整体解析挂,Gitea 静默不建任何 run(三笔 push 零 run 取证定位,CI 全瘫非单步红);name 加双引号;§12.1 加固记录补④=改 workflow 必先本地 yaml.safe_load 验过再推 [nas]
CI/CD / test (push) Successful in 35s
CI/CD / nas-deploy (push) Successful in 26s
CI/CD / nas-verify (push) Successful in 8s
2026-09-14 20:01:39 +08:00
claude_dev a18156ebf0 ci(docs): 设计档同步闸门加固三处——①[no-doc]锚定标题行尾(原子串匹配被闸门自身commit描述性提及误豁免,本地复算实锤)②闸门自我fetch BEFORE/AFTER(原依赖enforce-label的fetch副作用,步骤重排即静默no-op)③基建域补scripts/qmt_relogin/+bridge_switch_ops.py(runbook§4桥工具箱资产,当日桥工具修复曾零义务过闸);§12.1同步映射表与加固记录,runbook相关文档节补提交纪律指针 [nas] 2026-09-14 19:59:08 +08:00
claude_dev 0141f4e90e ci(docs): enforce design-doc sync 闸门——三线唯一活文档档随码走(域内改动须同push更档,纯实现[no-doc]声明豁免);映射=因子sanguo_factor+factor前端+factor_topn/数据sanguo_data/基建nas_sync+workflows+docker;因子域反增md(只维护factor-system-design);fail-open闸门自伤一律放行;§12.1记录设计哲学(指令层管会做,机械层管不忘);本地仿真四历史push案例全符预期 [nas] 2026-09-14 19:45:37 +08:00
claude_dev b2d12a4cf9 docs(ops): 唯二主文档定稿——发布=three-env-code-promote(收编impact-map触及面/标签判定为§12+前端构建发布§13)/运维=vps-production-runbook(收编unified-deploy三机角色/api env/web回测坑为§7);vps-unified-deploy+vps-impact-map收编后归档为墓碑;CLAUDE.md部署流程顶部立牌(任何部署运维发布知识只更新这两份,读也读这两份);ci-cd报错提示与pending文档引用改指§12(注:ci-cd.yml一行属nas) [vps]
CI/CD / test (push) Successful in 34s
CI/CD / nas-deploy (push) Successful in 24s
CI/CD / nas-verify (push) Successful in 6s
2026-09-14 09:13:15 +08:00
claude_dev cdaa88fea1 feat(web): 批量评估页——股票池/因子集/时间窗三步提交进任务中心;CI门禁加tests/factor [nas]
CI/CD / test (push) Successful in 12s
CI/CD / nas-deploy (push) Successful in 34s
CI/CD / nas-verify (push) Successful in 11s
2026-08-25 00:42:57 +08:00
claude_dev 136d087b34 test(ci): CI扩跑tests/portfolio+钉死测试归一——issue#35方案B,440组合引擎题进门禁 [nas]
CI/CD / test (push) Successful in 9s
CI/CD / nas-deploy (push) Successful in 27s
CI/CD / nas-verify (push) Successful in 2s
前置已消失:2197fea时点的13个Mac环境性失败,已被08-14 bullet_trade 0.9.2升齐+08-15补22个lock包
两次依赖治理顺带清零(本次实测440绿/1.74s,此前无人回头验收过);CI runner=本机Mac同venv310,本地绿即CI绿。

改动三件(不只加一行,用户点破冗余):
- 钉死测试迁至独立文件tests/portfolio/test_provider_method_surface.py:单一真相+保留
  fail-not-skip牙齿。原位置挂模块级requires_bullet_trade mark,conftest会在bullet_trade
  缺失时自动skip=钉死虚标(#35重演形态),必须移出mark覆盖面
- 删tests/data_platform/test_provider_method_parity.py(4aad65a方案A的复制版,
  「两处同步改」人工契约随之消亡)
- ci-cd.yml pytest行扩为 tests/data_platform tests/portfolio

验证:组合跑(CI同款命令)=617 passed/2 skipped/6.07s(177+440,副本删除-1,迁移+1);
conftest合并无冲突;钉死测试在新位置实跑通过。
2026-08-22 22:51:57 +08:00
claude_dev a58d9fd385 fix(ci): vps-deploy/workflow四雷根治(pipefail×3+ssh裸连+收尾非幂等+关issue不查gap)——issue#33基建工作包#1-#4 [nas]
CI/CD / test (push) Successful in 7s
CI/CD / nas-deploy (push) Successful in 26s
CI/CD / nas-verify (push) Successful in 3s
pipefail+SIGPIPE 三处(本机复现rc=141确定性,run724根因):
- L82端口释放检测被反转(最危险): netstat大输出|grep -q命中即提前退出→上游tr吃SIGPIPE(141)→pipefail判整管道失败→走||分支谎报「已释放」→下一步/run撞10048竞态
- L91 API等待循环同雷=run724死因: 检测恒假→120轮耗尽exit1→收尾三步全跳过
- L98 /docs探活同族(输出仅3字节几乎不触发,顺手修)
修法: grep -q 'x' → grep 'x' >/dev/null(读完整流不提前退出,无SIGPIPE)

workflow内裸ssh全量补 -o ConnectTimeout=20(对齐vps_restart_resident.sh写法):
单次ssh挂死原会让整步无限冻结; vps-deploy.yml 9处+ci-cd.yml 2处(NAS)

收尾三步抽幂等脚本 scripts/ci/vps_finalize.sh(工作包#2):
- run681/715/724三实录: 部署本体成功但收尾被前序步骤失败整段跳过,只能人工拼三段补
- 现在workflow尾步自动调; 被跳过时Mac本机手跑即补: GTOKEN=<token> bash scripts/ci/vps_finalize.sh <部署的sha>
- 常驻重启失败不阻断tag/issue记账(代码已就位,末尾非零退出提醒); tag -f+push -f天然幂等; issue按真实gap开/关

关issue按真实gap(工作包#3,2026-08-21事故):
- 旧代码硬编码VPS_LOG=""无脑关issue——用户dispatch填旧sha(f28f9cf≠be315a0)漏推P0后,gap非空也关→用户误以为推完
- 修=finalize算vps-deployed..origin/master真实gap,非空则issue保持open并列剩余清单
- gap改按subject算(--format='%h %s'|grep,与enforce-label同定义): --grep匹配整个message,commit body里引用的命令文本会误命中(曾误开issue#7); ci-cd.yml check-vps-needed同步改
- vps_pending_check.py: GITHUB_SHA缺失时回退VPS_DEPLOY_SHA(支持Mac手跑); 有上轮部署sha时body加「仍未上VPS」警示
2026-08-22 22:33:24 +08:00
claude_dev bf30283ac5 fix(ci): nas-verify 加 checkout(check-vps-needed 需 git log+脚本,原 job 只 curl/ssh 无代码) [nas]
CI/CD / test (push) Successful in 11s
CI/CD / nas-deploy (push) Successful in 21s
CI/CD / nas-verify (push) Successful in 10s
2026-08-02 23:27:51 +08:00
claude_dev 67d1c1ef2f ci(vps-gate): commit必打[vps]/[nas]标签+vps-deployed tag+待推issue [nas]
CI/CD / test (push) Successful in 11s
CI/CD / nas-deploy (push) Successful in 24s
CI/CD / nas-verify (push) Failing after 4s
- ci-cd: enforce-label(本次push无标签→fail,merge豁免) + check-vps-needed(nas-verify绿后对比vps-deployed tag,有[vps]未部署→开issue)
- vps-deploy: 成功打vps-deployed tag + 关issue(gap清空)
- scripts/ci/vps_pending_check.py: issue开/关/更新(CI复用)
- docs: vps-impact-map触及面表 + vps-deploy-pending判定记录
- CLAUDE.md: 部署流程段补标签约定
2026-08-02 23:25:40 +08:00
claude_dev ca0ec016f9 ci(nas-verify): 加 /health gate 防存活探针回归
CI/CD / test (push) Successful in 8s
CI/CD / nas-deploy (push) Successful in 21s
CI/CD / nas-verify (push) Successful in 3s
/health 是 Docker HEALTHCHECK 依赖端点,后端漏实现致容器恒unhealthy
(a17f291 已补端点)。nas-verify 加 gate:/health 非200→CI 红灯,防漏部署/被改坏。
public 端点无需 token,$BASE 已是 http://192.168.2.154:8000。

反馈: 前后端 session
2026-08-01 21:07:34 +08:00
claude_dev 83e5c73a8f fix(ci): nas-verify login 字段名 token(非 access_token,实测响应 {token:...})
CI/CD / test (push) Successful in 10s
CI/CD / nas-deploy (push) Successful in 20s
CI/CD / nas-verify (push) Successful in 3s
2026-07-31 15:18:53 +08:00
claude_dev 6731fc35bf fix(ci): nas-deploy rsync 前cd..回根(build合并在cd frontend step里,rsync frontend/dist/需在workspace根)
CI/CD / test (push) Successful in 10s
CI/CD / nas-deploy (push) Successful in 22s
CI/CD / nas-verify (push) Failing after 1s
2026-07-31 15:16:32 +08:00
claude_dev 5d54e22f72 feat(ci): CI/CD分层(NAS自动验证+VPS dispatch)
CI/CD / test (push) Successful in 9s
CI/CD / nas-deploy (push) Failing after 12s
CI/CD / nas-verify (push) Has been skipped
promote.sh 加 --target nas|vps|all(拆 NAS/VPS,默认 all 兼容)。ci-cd.yml 重构: push→test→nas-deploy(推NAS后端+前端dist+restart容器)→nas-verify(login+strategy/list+dbbardata 秒级 gate),不再自动推 VPS。vps-deploy.yml 新建: workflow_dispatch+sha input,checkout 指定 commit→promote --target vps→verify,严格版本一致(VPS=NAS验证过的 commit)。两种 approve: 人工 Gitea UI Run workflow / agent MCP dispatch_workflow。原因: Gitea 不支持 environment approval gate,此前 promote.sh 同时推 NAS+VPS 无隔离,push 即上 prod。
2026-07-31 15:14:05 +08:00
claude_dev 6e7179eb24 feat(ci): CI加前端build+部署NAS闭环(nas-frontend job)
CI/CD / test (push) Successful in 9s
CI/CD / nas-smoke (push) Successful in 1s
CI/CD / nas-frontend (push) Failing after 3s
CI/CD / vps (push) Has been skipped
新增 nas-frontend job(checkout→npm ci→npm run build→rsync dist 到 NAS homes/admin/frontend/dist),与 nas-smoke 并行;vps job 改 needs[nas-smoke,nas-frontend]。打通.vue 改动→push→CI 自动 build→NAS web 自动生效闭环(此前前端 dist 被 gitignore+promote.sh 无 frontend+workflow 无 build,CI 对前端完全断)。复用 Mac runner node v26/npm,HOME=/Users/chufeng 复用 ~/.npm cache。VPS 无 web 不部署前端。容器 bind mount homes/admin->/app,放挂载源即生效,无需改 Dockerfile。
2026-07-31 13:35:19 +08:00
claude_dev 22841e63d6 fix(ci): nas-smoke改查replica dbbardata避docker挂载覆盖/app entrypoint
CI/CD / test (push) Successful in 9s
CI/CD / nas-smoke (push) Successful in 2s
CI/CD / vps (push) Successful in 23s
2026-07-30 22:05:01 +08:00
claude_dev fe28299171 fix(ci): pytest用venv310绝对python+限定data_platform冒烟(fastapi缺绕开api)
CI/CD / test (push) Successful in 10s
CI/CD / nas-smoke (push) Failing after 21s
CI/CD / vps (push) Has been skipped
2026-07-30 21:45:47 +08:00
claude_dev 51f14caf46 fix(ci): 绕过github action(git fetch Gitea本仓库)+HOME恢复Mac环境+local禁proxy
CI/CD / test (push) Failing after 8s
CI/CD / nas-smoke (push) Has been skipped
CI/CD / vps (push) Has been skipped
2026-07-30 21:40:49 +08:00
claude_dev d31dd5e159 fix(ci): 清除git代理(LAN Gitea不走ClashX 7890)修checkout失败
CI/CD / test (push) Failing after 45s
CI/CD / nas-smoke (push) Has been skipped
CI/CD / vps (push) Has been skipped
2026-07-30 21:16:38 +08:00
claude_dev efd0b23cd3 feat(ci): 开发session环境手册 + Gitea Actions CI/CD workflow + parquet同步脚本
CI/CD / test (push) Failing after 37s
CI/CD / nas-smoke (push) Has been skipped
CI/CD / vps (push) Has been skipped
- docs/session-environment-guide.md: 面向各开发session的部署→验证→冒烟手册(P1)
- .gitea/workflows/ci-cd.yml: 复用Mac runner编排 test→nas-smoke→vps(prod gate)
- scripts/nas_sync/sync_parquet.sh: parquet全量scp(static+valuation), setsid脱离会话
2026-07-30 20:58:51 +08:00