Commit Graph

21 Commits

Author SHA1 Message Date
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 5211d5a6ed fix(reconcile+ci): 双轨配对按instance_id精确配对+部署API等待帽10→20分钟——①配对v2:v1按策略名dict收敛,同策略多live(live#10/#11都是channel_test)后者覆盖前者→live#10漏配live#11双配,15:10日终对账配错对(VPS 8对舰队实测:live#11↔shadow#44/45两行,live#10无);修为instance_id+周期精确优先→同实例退而求其次→无instance回退策略名唯一/周期一致,宁缺毋错;+2回归测试(复刻VPS实况/同实例不同周期)②vps-deploy API监听等待60→120次(run681实录:19常驻进程负载下API启动>10分钟,workflow 10分钟帽误杀放弃,API最终正常起服——但跳过了常驻重启/tag/关issue三步);938绿 [vps]
CI/CD / test (push) Successful in 9s
CI/CD / nas-deploy (push) Successful in 24s
CI/CD / nas-verify (push) Successful in 8s
2026-08-16 22:45:42 +08:00
claude_dev 0d95de2fc2 fix(ci): 僵尸端口守卫ZPID提取行加||true兜底——run674实录:/end干净杀掉后端口已空,grep无匹配+set -e -o pipefail把整步炸在提取行,死在schtasks /run前→API停在半路(已手动/run救回);守卫逻辑不变,仅容忍空结果 [nas]
CI/CD / test (push) Successful in 12s
CI/CD / nas-deploy (push) Successful in 26s
CI/CD / nas-verify (push) Successful in 11s
2026-08-16 19:21:42 +08:00
claude_dev d8d646fcd5 fix(#89+#90防线): 组合回测选实例不再预填标的池+vps-deploy僵尸API端口守卫——#89:prefillFromInstance删symbol_or_pool→form.pool预填(#86a定稿实例不选标的,老实例存的all不该悄悄改用户池选择;策略/max_pool/benchmark参数预填保留);#90防复发:API重启步在/end后netstat查8000持有PID强杀+端口未释放硬fail(2026-08-16实录uvicorn reload孤儿子进程17836跨两轮部署占端口,新实例静默抢不到,旧代码继续serve→500旧bug重现,人工taskkill+重拉后同请求200+task_id实证);build绿+yaml解析过 [nas]
CI/CD / test (push) Successful in 11s
CI/CD / nas-deploy (push) Successful in 31s
CI/CD / nas-verify (push) Successful in 15s
2026-08-16 19:08:26 +08:00
claude_dev bb934228db feat(ci): vps-deploy末步自动重启常驻进程(supervisor/影子柜台)——根因:部署只推码+重启API,常驻python进程16h跑旧代码(2026-08-15实录);vps_restart_resident.sh:盘中保护(北京工作日09:15-15:30跳过防杀撮合现场)+动态查PID(账户号会变,name=python.exe+sanguo_live supervisor/sanguo_trader.shadow两模式,免wmic自匹配)+taskkill /F /T杀树带走runner_live/shadow子进程+schtasks重拉+120s验证≥2进程;用户2026-08-16要求部署自动化 [nas]
CI/CD / test (push) Successful in 13s
CI/CD / nas-deploy (push) Successful in 31s
CI/CD / nas-verify (push) Successful in 11s
2026-08-16 18:07:02 +08:00
claude_dev c16c78aaf8 ci(vps-gate): vps-deploy加口令闸门(用户拍板): dispatch必填confirm=推vps,不符第一步fail; 前置=nas-verify绿+用户NAS验收+报待推清单+用户原话说「推vps」,不得代填/推断/沿用旧授权(2026-08-14两次违规教训固化); CLAUDE.md部署规则同步 [nas]
CI/CD / test (push) Successful in 12s
CI/CD / nas-deploy (push) Successful in 30s
CI/CD / nas-verify (push) Successful in 11s
2026-08-14 19:52:03 +08:00
claude_dev 8f184c9f2e ci(vps-deploy): 纳入前端dist同步+API重启(治公网前端无管线手动步骤): Mac构建+tar+scp→VPS换dist(脚本入仓scripts/nas_sync,vps_update_dist.py); 重启加端口释放等待(防end→run竞态10048静默崩,今日实踩)+起服探活(上限10min) [nas]
CI/CD / test (push) Successful in 13s
CI/CD / nas-deploy (push) Successful in 29s
CI/CD / nas-verify (push) Successful in 12s
2026-08-14 10:06:54 +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