Commit Graph

425 Commits

Author SHA1 Message Date
claude_dev bfd42f70ae feat(frontend): #80模拟盘命名对齐实盘+#81批量删除+#82实盘预览名清空——#80:autoName改{实例名}_v{YYYYMMDD}{minor}同实例同日递增不分模式(原{实例名}·{模式}v{N}连排+英文模式段,用户定稿与实盘同格式);#81:模拟盘/实盘列表加多选列(仅非运行行可选=运行中先停止)+批量删除按钮(选中才显示带数量徽标,确认框列账户名前5,循环既有DELETE接口,N成功/M失败汇总+失败明细toast);#82:新建实盘初始name live-600000改空串,未选实例时预览显示占位「—(选实例后自动生成)」(原默认值顶掉占位提示),选实例后autoName生成,服务端兜底(#78)双保险;build绿(vue-tsc) [nas]
CI/CD / test (push) Successful in 12s
CI/CD / nas-deploy (push) Successful in 34s
CI/CD / nas-verify (push) Successful in 14s
2026-08-16 13:55:49 +08:00
claude_dev 28374c341b feat(strategy): #77灯=列表入口×N徽标+#78实盘服务端兜底名——#77:策略库四状态灯点击一律进该类型列表(按实例过滤;空列表→新建页带实例),灯带×N徽标=该类型运行总数(enriched新增counts:backtest任务表/replay回放账户/paper_live实走+影子/live实盘,查询失败退化无徽标),删「回测/模拟/实盘历史」三按钮(灯即入口);#78:live/create名称空或默认值(live-600000等)→服务端兜底{实例名}_v{YYYYMMDD}{minor}同实例同日递增,前端autoName失败被吞也拿到正确名;+2回归测试(counts四桶/兜底名递增);docs补北京迁移注记;929绿+build绿 [vps]
CI/CD / test (push) Successful in 15s
CI/CD / nas-deploy (push) Successful in 33s
CI/CD / nas-verify (push) Successful in 16s
2026-08-16 13:33:49 +08:00
claude_dev 214608506a refactor(frontend): 新建实盘「实例名」表单项改只读预览(#76)——#72后名称自动生成(实例名_v日期minor)手填无意义;输入框改自动名展示(选实例即刷新,未选显示占位提示);空名提交提示改为「请先选择实例」;模拟盘表单本无名称输入项无需改 [nas]
CI/CD / test (push) Successful in 11s
CI/CD / nas-deploy (push) Successful in 24s
CI/CD / nas-verify (push) Successful in 13s
2026-08-16 11:16:09 +08:00
claude_dev 424463a6ac fix(paper): 影子账户停止/恢复400——stop/resume原只放行mode=live,#10/#11影子账户点停止即400「仅实走账户支持停止」;放行live+shadow(置status=stopped后日终step与影子柜台都只选running自动跳过,语义成立);回放仍拒(一次性任务);API 128绿 [vps]
CI/CD / test (push) Successful in 14s
CI/CD / nas-deploy (push) Successful in 30s
CI/CD / nas-verify (push) Successful in 13s
2026-08-16 11:00:50 +08:00
claude_dev 0453de9321 fix(portfolio): 收益单位口径统一小数+用户验收四问题——①1044%真因:bullet_trade返回百分数字面值(10.44=10.44%),组合结果页直显(对)但档案回写/策略库按小数×100(错1044%);_extract_metrics统一÷100归一小数(注释单位契约),组合结果页fmtPct改×100(与CTA/empyrical全平台一致;历史任务NAS一次性迁移)②回测灯/回测历史'找不到结果':done无task_id(老回测)兜底跳任务中心不过滤(instance过滤对老任务为空)③实走/实盘灯'还是参数页':三级fallback——同类型在跑直达监控,实例任何在跑(如只有影子)跳列表过滤,无在跑才发起④模式列折行:宽118+日终并入单chip(实走·日终,title悬浮说明)⑤模拟盘名加版本号={实例名}·{模式}v{N}(同实例同模式递增,对齐实盘);927绿+build绿 [vps]
CI/CD / test (push) Successful in 10s
CI/CD / nas-deploy (push) Successful in 26s
CI/CD / nas-verify (push) Successful in 10s
2026-08-16 10:06:12 +08:00
claude_dev bab7c4d893 feat(strategy): TODO#68-#75八项全做+导航自测——#68灯职责拆分:实走/影子在跑=直达/paper/live/{aid}监控页,实盘在跑=/live/monitor/{aid},未跑=发起;回放灯done=直达/paper/result/{aid}(run_meta.replay.account_id);#69回测任务按实例过滤:backtest_stats加instance_id列(ALTER迁移)+_write_back落列+GET /task?instance=N+任务中心过滤条+策略库「回测历史」按钮;回测灯done=直达最新结果页(run_meta.backtest.task_id按前缀分流),跑过无结果=任务中心过滤;#70模拟盘创建后直接跳列表(不跳结果/监控页);列宽重排(策略/实例150模式96频率60操作250,折行实测消除);#71列内容对齐实盘:策略/实例列显示实例名(instances映射,#id退化)+持仓数列(list_papers顺带count volume>0)+删创建时间列(净值日期已含);#72实盘名自动生成={实例名}_v{YYYYMMDD}{minor}(同实例同日递增,listLives计数);模拟盘名={实例名}·{模式};#73术语统一档案→实例(全局8文件UI文案+后端409提示,精确短语防误伤,spec比喻保留文档);#74MonacoDiff v4:优先monaco原生diff(差异高亮),挂载450ms自检original栏占比<30%自动降级双只读编辑器(滚动联动)——全屏模态下大概率吃到原生diff;#75收益标签与数值同源(retInfoOf:运行ret优先含kind,fallback run_returns,标签跟随数值来源,根治影子1044%实为回测收益挂影子标签);927绿+build绿+dev浏览器自测:策略库6入口(回测历史/模拟历史/实盘历史/回测灯/实走灯直达监控/组合无回放)与模拟盘列表新列全过 [vps]
CI/CD / test (push) Successful in 13s
CI/CD / nas-deploy (push) Successful in 32s
CI/CD / nas-verify (push) Successful in 12s
2026-08-16 09:34:39 +08:00
claude_dev 8ee513a17d fix(frontend): 代码对比改全屏模态——用户反馈860px侧抽屉太小看不清;版本历史和列表快照抽屉(el-drawer)统一改el-dialog fullscreen:版本列表改横向chip条(选中高亮)省纵向空间,diff区flex撑满calc(100vh-60px);Esc/关闭即走;dev实测dialog铺满视口2560x1177,diff左右各1262x1036(原抽屉内仅~400x460,面积扩大约7倍);MonacoDiff延迟挂载保留(模态动画后全宽创建) [nas]
CI/CD / test (push) Successful in 10s
CI/CD / nas-deploy (push) Successful in 27s
CI/CD / nas-verify (push) Successful in 10s
2026-08-16 08:33:23 +08:00
claude_dev 23e1beb177 fix(frontend): 用户验收8项遗漏全补(并发中反馈漏处理对账)——①模拟/实盘改回必选档案(初始设计口径,提交拦截+必选文案)②backtest/new?class=all_weather.py&instance=1失败根治:档案类型按文件判非instance.type(老档案type不准)+组合页兼容class参数+CTA页组合档案自动重定向组合页(实测跳转+预填全通)③运行灯语义:有在跑→跳列表按档案过滤,无→创建页(用户'点带绿点按钮应看运行不该到参数页');组合档案隐藏回放按钮 ④代码编辑运行回测不好使:根因chain=dev缺GET file mock→读失败catch清code被当编辑→dirty卡死;三层修=补mock+catch走echoGrace+dirty改确认框(保存并跳/直接跳) ⑤模拟盘列表重设计对齐实盘(类型chip入名称行+新增策略/档案列+净值补日期) ⑥策略库去重复编辑代码按钮 ⑦模拟盘/实盘列表行加「快照」按钮→CodeSnapshotDrawer共享抽屉(发起时代码vs当前,MonacoDiff滚动联动);dev浏览器自验7项全过+927绿+build绿 [vps]
CI/CD / test (push) Successful in 16s
CI/CD / nas-deploy (push) Successful in 43s
CI/CD / nas-verify (push) Successful in 19s
2026-08-16 08:25:57 +08:00
claude_dev 11ccda271d fix(frontend): 版本对比左栏不显示——根因monaco 0.56 createDiffEditor在抽屉嵌套容器里分栏测量错误(original栏恒被压36px;时序延迟挂载/layout强制重算/禁拖拽分栏/内联模式四招全试均无效,实测panes 36/748);换双只读编辑器并排各50%(快照|当前,带栏头标签+滚动联动),复用主编辑器同款主题;showDiff延迟360ms等抽屉动画后挂载(容器全宽创建);dev实测panes 408/407左右内容正确 [nas]
CI/CD / test (push) Successful in 14s
CI/CD / nas-deploy (push) Successful in 35s
CI/CD / nas-verify (push) Successful in 17s
2026-08-16 00:08:09 +08:00
claude_dev c97fc49c0a fix(frontend): 新建实盘CTA分支层级错乱——「策略实例名」(strategy_name,engine内技术标识)原紧跟在「策略/档案」下,视觉上像档案的子级且与「实例档案」概念撞车(用户验收:模拟/回测正常唯实盘错);挪到「连接参数(可选)」区改名「引擎实例名」+hint技术标识·选档案自动填;空值提交自动生成(策略类_代码)不再强制拦;策略/档案行双hint改互斥(绑定提示优先,A股适配提示仅未绑时显示);与paper/backtest层级一致 [nas]
CI/CD / test (push) Successful in 15s
CI/CD / nas-deploy (push) Successful in 36s
CI/CD / nas-verify (push) Successful in 14s
2026-08-15 23:50:45 +08:00
claude_dev 6b07389c85 feat(strategy): 代码版本快照(§12.6补,方案B发起时快照·QuantConnect轻量版)——用户拍板:解决「实例参数有快照但代码没有,历史运行无法回溯当时跑的哪版代码」——①sanguo_api/code_versions.py:发起时全文落盘data/strategy_code_versions/{file}.{hash8}.py(md5内容寻址天然去重,原子替换防并发坏);发起四入口(paper/live/CTA/组合回测)全快照,账户加code_hash列(ALTER迁移),回测经spec→run_meta.code_hash落档案②查看:GET /strategy/code-versions列表+单版本全文;代码编辑页「版本历史」抽屉(MonacoDiff左右对比当前,主题同款)③「代码已变更」角标:策略库档案行(enriched code_changed)+全景每run标v哈希·一致/已变更④双轨对账加「代码版本一致」第五指标(对账FAIL先查这行,两边代码不同价差必然大);路径穿越防护(版本号只认8位hex)+6测试;927绿+build绿;「用当时代码重跑」留P2 [vps]
CI/CD / test (push) Successful in 13s
CI/CD / nas-deploy (push) Successful in 1m1s
CI/CD / nas-verify (push) Successful in 19s
2026-08-15 23:38:07 +08:00
claude_dev 1103ae85d5 refactor(frontend): 实例选择改级联——策略右边实例下拉(用户设计反馈「实例凌驾策略之上」)——四表单(个股回测/组合回测/模拟盘/实盘)统一:策略下拉旁并排「实例档案(可选·带出参数)」下拉,选中策略后只列该策略的档案(类名→code_file映射,组合按文件名);换策略档案不属自动清空防绑错;移除原顶部大下拉;CTA级联映射缺失(mock中文名/自输类名)退化为全量;布局一行「策略/档案」层级心明(策略→实例从属);build绿+实例测试绿 [vps]
CI/CD / test (push) Successful in 16s
CI/CD / nas-deploy (push) Successful in 34s
CI/CD / nas-verify (push) Successful in 11s
2026-08-15 23:21:04 +08:00
claude_dev 4da714d1c5 feat(frontend): 回测两页补实例档案下拉——回测/模拟/实盘三入口都能选档案(用户验收追问);CTA页instance预填提取applyInstance复用(跳转带入+下拉选择统一selectedInstanceId);组合页加下拉+预填(策略/max_pool/benchmark/pool)+getInstances加载;提交instance_id改用selectedInstanceId;build绿 [vps]
CI/CD / test (push) Successful in 14s
CI/CD / nas-deploy (push) Successful in 48s
CI/CD / nas-verify (push) Successful in 13s
2026-08-15 23:04:28 +08:00
claude_dev 2580b5c080 fix(strategy): 实例做实审计补漏6项——①回测表单提交透传instance_id(CTA/组合两页原只预填不传,四格回写链路断头;组合页补档案预填max_pool/benchmark/pool)②模拟盘/实盘列表支持?instance=N按档案过滤(策略库行加模拟历史/实盘历史按钮,过滤中提示条可退出)③live创建补D1快照(setting用档案参数,API直调不绕过)④实盘账户也标参数漂移角标(D2只亮不同步;account_params_drifted兼容live setting字段)⑤paper页PORTFOLIO_LABELS换STRATEGY_LABELS共享⑥同步生效时机实证标注(实走每日结算重读DB次晚生效;影子进程常驻内存需重启,实证live_step/runner.py均从DB读);921绿+build绿 [vps]
CI/CD / test (push) Successful in 14s
CI/CD / nas-deploy (push) Successful in 45s
CI/CD / nas-verify (push) Successful in 10s
2026-08-15 22:54:02 +08:00
claude_dev 256820d36f feat(strategy): 策略实例做实P0+P1+策略库A+B混合布局(spec§12.6定稿)——实例=策略档案:①绑定:paper/live账户+回测任务加instance_id(paper_accounts/live_accounts ALTER迁移),发起即建档(无档案自动建),绑已有档案时D1发起快照(账户用档案参数复印件)②回写:事件型(回测_on_done/回放线程)落盘update_instance_run;持续型(实走/影子/实盘)读时聚合_instance_runtime(四格覆盖+在跑账户+漂移检测)③D2/D3同步:POST /paper/sync/{id}批量刷运行中模拟账户(实走+影子锁死一致),实盘不在线改参④D5删除保护409⑤P1全景:GET instances/{id}/overview(全部运行账户+净值尾部+合并持仓归因)收编挂起项「按实例归因持仓」⑥前端:策略库重做A+B混合(统计条+在跑巡检模式+左栏代码树中文主显/文件副行+档案区漂移角标/同步/全景;STRATEGY_LABELS抽共享常量),InstanceOverview抽屉(echarts净值对比+归因持仓表),模拟盘/实盘表单加实例档案下拉(选中预填+绑定,路由?instance=直进);mock层enriched/sync/overview(路由序enriched先于{id});+7绑定测试,921绿,build绿,dev浏览器验收过 [vps]
CI/CD / test (push) Successful in 14s
CI/CD / nas-deploy (push) Successful in 52s
CI/CD / nas-verify (push) Successful in 17s
2026-08-15 22:39:05 +08:00
claude_dev 5615b11640 feat(api): 回测参数校验—5提交入口统一拦截(2029结束日期可提交根治)——用户实况portfolio_ef8b655a零校验跑垃圾结果;sanguo_api/validation.py:L1静态(格式/先后/未来/区间≥30天/资金/费率0~1%)+L2数据最新日(600000日线锚定MAX(datetime),24h模块缓存,查库失败退化仅L1);接线CTA/组合/优化/因子/模拟盘回放5入口,400中文业务提示;前端5页日期控件禁选未来日期(disableFutureDate共享);+10测试含2029回归,API 115绿,前端build绿 [vps]
CI/CD / test (push) Successful in 19s
CI/CD / nas-deploy (push) Successful in 28s
CI/CD / nas-verify (push) Successful in 10s
2026-08-15 21:32:32 +08:00
claude_dev 1c6bdf6a89 refactor(frontend): 新建模拟盘K线周期归位「标的与策略」——原在「基本配置」,与新建实盘不一致(两页先后开发没对齐,非设计初衷);按用户拍板以实盘为准:周期跟着标的走,CTA分支放标的后/组合分支放标的池后,选项与提示文案不变;dev双分支验证(基本配置无周期/两分支第二卡各含周期) [nas]
CI/CD / test (push) Successful in 27s
CI/CD / nas-deploy (push) Successful in 38s
CI/CD / nas-verify (push) Successful in 15s
2026-08-15 21:14:45 +08:00
claude_dev 4a6fb4cd37 fix(editor): 语法检查按钮接真——原为原型期假实现(sleep 600ms恒报通过,用户删中括号仍提示成功);后端POST /strategy/file/{name}/check(compile()不落盘,SyntaxError返行号+消息,与保存的py_compile门禁同源);前端调真接口,错误显示「第N行:消息」红tag+toast,编辑即清;3新后端测试(删括号必报错) [vps]
CI/CD / test (push) Failing after 11m17s
CI/CD / nas-deploy (push) Has been skipped
CI/CD / nas-verify (push) Has been skipped
2026-08-15 21:08:36 +08:00
claude_dev 94507f2ad7 fix(frontend): 任务列表勾选被3s自动刷新清掉——el-table勾选按行对象身份记,silentRefresh换新数组即丢;row-key=task_id+selection列reserve-selection按ID持久勾选,删除完clearSelection显式清;dev验证:勾选过2轮刷新仍保持且按钮计数正确 [nas]
CI/CD / test (push) Successful in 16s
CI/CD / nas-deploy (push) Successful in 28s
CI/CD / nas-verify (push) Successful in 13s
2026-08-15 20:23:44 +08:00
claude_dev 01184c2b1f refactor(portfolio): TET副本类名对齐策略库扫描约定—*StrategyEx→*ExStrategy(AllWeatherExStrategy等8类):strategy_registry._extract_class_names只认endswith('Strategy')的类名,Ex结尾类被判'无策略类'整文件跳过→策略库/代码编辑器看不到副本;改名后_scan_self_owned自动识别4文件(type=portfolio);CLI/API/前端选项值(all_weather_ex等)不变;328绿 [vps]
CI/CD / test (push) Successful in 12s
CI/CD / nas-deploy (push) Successful in 34s
CI/CD / nas-verify (push) Successful in 19s
2026-08-15 13:35:23 +08:00
claude_dev 5507058089 feat(frontend): 组合回测策略下拉加4个TET对照副本(all_weather_ex等,标注TET对照)——issue#19 Phase2副本可从页面直接选择跑(原仅API可达);仅回测页,模拟盘/实盘不加(那些runner未分发_ex) [nas]
CI/CD / test (push) Successful in 32s
CI/CD / nas-deploy (push) Successful in 37s
CI/CD / nas-verify (push) Successful in 16s
2026-08-15 12:51:35 +08:00
claude_dev e34a82f6bc perf(portfolio): #12 03 momentum_timing层2向量化—当日预取宽表+内存切片:handle_data牛市日1-2次批量SQL(熊市1次,原每日~13次:1 buy_sign+10行业rps+1-2 select,726天×13≈9000+次IO无跨日缓存,全周期>3h被_TIMEOUT kill);三处_cal_rps/_select_stocks/_cal_buy_sign切片优先+回退直查(预取失败/缺列/空切片→None回退,行为等价旧版);_panel_slice dropna(how=all)精确复刻provider直查行集语义(超集切片组外日期全NaN行会改iloc[0]/tail(N)口径,测试单stock场景抓出);_stock_pool当日缓存(预取+_find_stock_pool共享get_index_stocks+filters);+1回归测试断言牛市日get_closes_panel≤2次+每行业get_index_stocks 1次,22绿 [vps]
CI/CD / test (push) Successful in 12s
CI/CD / nas-deploy (push) Successful in 23s
CI/CD / nas-verify (push) Successful in 9s
2026-08-15 12:03:29 +08:00
claude_dev fa04475693 fix(portfolio): value_selection选股定序—_get_stock_list list(set交集)改sorted():set迭代序受PYTHONHASHSEED每进程随机化→跨进程回测trades/stocks_selected乱序(TET Phase2老vs老对照36a3a843/afe189ea实锤,issue#19);sorted恢复可复现性,选股集合不变;328测试绿 [vps] 2026-08-15 12:03:29 +08:00
claude_dev 701c0d90ad fix(docker): peewee钉版移出主清单改Dockerfile末步显式降级——二次构建实证peewee==3.17.3入主清单与vnpy_sqlite声明>=3.17.9互斥仍ResolutionImpossible(resolver不放过显式pin);改为主清单由resolver装满足版+末步pip install peewee==3.17.3单装降级(只校验自身依赖,VPS生产实证对齐);empyrical-reloaded同思路已在--no-deps步 [nas]
CI/CD / test (push) Successful in 19s
CI/CD / nas-deploy (push) Successful in 39s
CI/CD / nas-verify (push) Successful in 12s
2026-08-15 09:09:06 +08:00
claude_dev d649d59c44 feat(paper): 双轨对账前端页——模拟盘菜单新增「双轨对账」:自动配对卡片(策略/实盘#vs影子#/日期/PASS徽标)+四指标卡(笔数全同/均价差bps/持仓逐只/净值月偏差,各带达标徽标)+成交对比表(symbol+side聚合vwap带符号bps,>10标红)+持仓对比表(数量差≠0标红)+日期选择查询;api getReconcilePairs+mock样例(路由须注册在/paper/{aid}前防吞);dev截图验证 [nas]
CI/CD / test (push) Successful in 11s
CI/CD / nas-deploy (push) Failing after 14m53s
CI/CD / nas-verify (push) Has been skipped
2026-08-15 08:55:00 +08:00
claude_dev 64b10fda41 fix(docker): 解开lock隐藏依赖死锁——empyrical-reloaded0.5.12元数据伪依赖peewee<3.17.4与vnpy_sqlite的>=3.17.9互斥,单次pip install -r必ResolutionImpossible(三机一直是分次安装掩盖,2026-08-15容器重建首次触发;实测empyrical包体零引用peewee);修法=empyrical-reloaded移出主清单由Dockerfile第二步--no-deps单独装(真依赖bottleneck1.6.0/numpy/pandas/scipy主清单已钉),peewee==3.17.3+bottleneck==1.6.0按VPS生产实证钉入;lock同款警告注释 [nas]
CI/CD / test (push) Failing after 10m25s
CI/CD / nas-deploy (push) Has been skipped
CI/CD / nas-verify (push) Has been skipped
2026-08-15 08:39:23 +08:00
claude_dev 75454a7f55 fix(docker): requirements-docker全量==钉版对齐requirements-lock——根治>=浮动致容器系统性偏新(TA-Lib0.7.1/empyrical-reloaded0.5.9+遗留empyrical0.5.5双装/pyarrow25/fastapi0.141/lightgbm4.7/torch2.13 vs lock 0.6.8/0.5.12/24.0.0/0.139.0/4.6.0/2.12.1),消除'NAS绿≠VPS版本'等价性窗口;empyrical>=0.5.5换empyrical-reloaded==0.5.12根治双装;容器专属差异保留(无akshare采集在VPS/无pytest跑在Mac runner/polars[rtcompat]防NAS无AVX2 SIGILL);文件头注明版本源=lock需同步 [nas]
CI/CD / test (push) Successful in 14s
CI/CD / nas-deploy (push) Successful in 32s
CI/CD / nas-verify (push) Successful in 12s
2026-08-15 08:02:17 +08:00
claude_dev a45ab3086d feat(portfolio): TET Phase2策略副本(issue #19)—4副本(*_ex)文件级copy+机械替换取数调用(get_price/closes_panel/fundamentals_df→_ex;get_index_stocks→get_constituent_ex),策略逻辑零改动(diff可审计);all_weather_ex补small/big/roic_big/bm空入参守卫(strict空raise↔老接口空表→[]等价语义);接线__init__导出+runner分发/CLI choices/_register_schedule isinstance扩列;无_ex的方法(value_metrics/limit_status_batch/security_info)按issue保留老接口;portfolio全套328绿 [vps]
CI/CD / test (push) Successful in 20s
CI/CD / nas-deploy (push) Successful in 35s
CI/CD / nas-verify (push) Successful in 16s
2026-08-15 07:59:44 +08:00
claude_dev ad59922919 test(factor): test_analyzer三个never-ran测试修复——补read_db_daily假bars(analyzer真读库建prices,缺bars触发DBG空守卫短路tears/IC)+factor日期对齐生产aware口径(Asia/Shanghai);此批测试原在任何环境都没跑过(Mac缺依赖skip/容器缺pytest/CI只跑data_platform),Mac补齐lock依赖后暴露;全量900绿 [nas]
CI/CD / test (push) Successful in 18s
CI/CD / nas-deploy (push) Successful in 32s
CI/CD / nas-verify (push) Successful in 14s
2026-08-15 07:08:21 +08:00
claude_dev b1a43cba44 fix(portfolio): all_weather换仓月只卖不买根治——monthly_adjustment卖出旧仓后未重取持仓,陈旧快照len≥目标数致target_num>position_count恒False一股不买,空仓躺到下月(NAS实测2025-09-01/10-09/12-01三次调仓全中,持仓数<目标数的8-13/11-03正常买);卖出后_get_positions重取+动态持仓回归测试(复现卖5买0→修后卖5买5);老翻译bug非本轮5commit回归(VPS旧代码对照运行中) [vps]
CI/CD / test (push) Successful in 22s
CI/CD / nas-deploy (push) Successful in 42s
CI/CD / nas-verify (push) Successful in 25s
2026-08-15 07:06:07 +08:00
claude_dev b9315ef7e7 fix(tests): Mac本地9个既有测试失败根治——test_cta_engine的sys.modules mock注入从import期挪进module-scoped fixture(pytest全量collection先于执行,import期注入污染后收集的metrics/datareader/factor)+venv310按lock补装empyrical-reloaded==0.5.12;影子柜台设计文档头更新(P1已上线/P3前半已实现) [nas]
CI/CD / test (push) Successful in 15s
CI/CD / nas-deploy (push) Successful in 47s
CI/CD / nas-verify (push) Successful in 23s
2026-08-15 00:02:12 +08:00
claude_dev f9322a7c48 feat(provider): TET窄试点B——P0四方法Fetcher化(_ex新接口,strict fail-fast),老接口零改动 [vps]
CI/CD / test (push) Successful in 21s
CI/CD / nas-deploy (push) Successful in 1m3s
CI/CD / nas-verify (push) Successful in 12s
2026-08-14 23:44:39 +08:00
claude_dev 534a06aad7 feat(shadow-desk): 双轨日终对账报表(影子P3前半,设计§8.2)—reconcile_report四指标(成交笔数全同/每笔价差vwap对比<10bps带符号供滑点重标/收盘持仓逐只数量/净值月偏差<0.5%)+find_dual_track_pairs自动配对(shadow策略名↔live strategy_class,live#5↔shadow#39实证)+dual_track_reconcile落库upsert;API GET /paper/reconcile(+单配对refresh);CLI python -m;supervisor auto轮询挂15:10后每日一次兜底;14新测试(符号口径SH/XSHG归一/影子拒单不计/部分成交如实报笔数异) [vps]
CI/CD / test (push) Successful in 11s
CI/CD / nas-deploy (push) Successful in 33s
CI/CD / nas-verify (push) Successful in 12s
2026-08-14 23:18:07 +08:00
claude_dev 2cd158286b perf(portfolio): G5-P2收尾—all_weather三调用点向量化:①filter_roic逐只循环→一次批量+fields=['roic']短路(9×)②_trend_mean get_price长表+pivot→get_closes_panel宽表(340×,count=N→start-N*2自然日+.tail(N)同momentum口径,fq均raw)③prepare_stock_list get_price(close+high_limit)→get_limit_status_batch精确涨跌停口径;测试fixture补panel/limit_batch mock(原MagicMock碰巧truthy蒙混paused剔除语义,默认改全正常);+6回归测试,portfolio全套302绿 [vps]
CI/CD / test (push) Successful in 13s
CI/CD / nas-deploy (push) Successful in 39s
CI/CD / nas-verify (push) Successful in 14s
2026-08-14 23:17:13 +08:00
claude_dev e9aec041db feat(api): P1.4 web token 60min静默刷新—后端POST /auth/refresh(有效旧token换新,过期401不放行续命)+login/refresh返expires_in+get_token_exp;前端请求拦截器剩余<10min单飞预刷新(裸axios避递归/mock短路,失败静默降级走401兜底);治长回测轮询401跳登录;3新测试 [vps]
CI/CD / test (push) Successful in 18s
CI/CD / nas-deploy (push) Successful in 34s
CI/CD / nas-verify (push) Successful in 11s
2026-08-14 23:09:34 +08:00
claude_dev 61cc01efbe feat(portfolio): P1.3涨跌停/停牌过滤批量化双端—①all_weather monthly_adjustment三filter接线_get_limit_status批量预取(原不传status_map/date走无数据保留死分支,照买涨停照交易停牌;同small_cap等三策略) ②ShadowBroker涨跌停拒单(买撞涨停/卖撞跌停/停牌双向拒;limit_getter注入,未注入/异常/无状态降级放行等价旧行为) ③runner build_limit_getter(优先miniQMT实时tick lastPrice vs UpStop/DownStop与实盘同源,回退get_limit_status_batch日线口径);9新测试 [vps]
CI/CD / test (push) Successful in 15s
CI/CD / nas-deploy (push) Successful in 40s
CI/CD / nas-verify (push) Successful in 13s
2026-08-14 23:04:15 +08:00
claude_dev fbd0c39c6c fix(portfolio): P1.2 stop_loss去1m依赖—昨日涨停分支改get_limit_status_batch日线口径(原get_price frequency=1m,数据层无1m表→分支静默失效);_intraday_high_low→_limit_status(getattr降级同small_cap等三策略);3新测试(涨停打开卖/仍涨停持有/异常跳过) [vps]
CI/CD / test (push) Successful in 15s
CI/CD / nas-deploy (push) Successful in 36s
CI/CD / nas-verify (push) Successful in 20s
2026-08-14 22:57:26 +08:00
claude_dev 86a13ede42 test(portfolio): 修stale测试test_small_filters_by_roe_roa—锚定e807bed放宽阈值(roe0.05/roa0.02,原0.15/0.10对中证1000命中仅~5%),保留剔除不合格股意图(换roe0.03/roa0.01样本) [nas] 2026-08-14 22:57:20 +08:00
claude_dev f49154266d fix(live): 监控页三修——①收益率改首快照基线(与列表同口径,治共用QMT账户下cap兜底的假900%)②组合实盘成交落库_sync_trades(轮询broker当日成交→live_trades,此前完全没人写成交表)③updated_at北京时间显示+策略参数JSON改表格 [vps]
CI/CD / test (push) Successful in 15s
CI/CD / nas-deploy (push) Successful in 42s
CI/CD / nas-verify (push) Successful in 14s
2026-08-14 22:07:30 +08:00
claude_dev f73810a6da fix(live): 组合实盘快照守卫——cash<=0(持仓先到资金未同步)不落balance;2026-08-14实况=首条total=2931成收益率基线→前端341080%假收益率;抽出_snapshot_once可测+回归测试 [vps]
CI/CD / test (push) Successful in 16s
CI/CD / nas-deploy (push) Successful in 36s
CI/CD / nas-verify (push) Successful in 15s
2026-08-14 21:54:56 +08:00
claude_dev a1d4773189 fix(api): PUT /live 编辑漏补vt_symbol后缀(新建有normalize编辑没有);2026-08-14实况=用户改300024成裸码→引擎'vt_symbol无法解析,跳过'→假运行收不到行情;编辑与新建同规normalize+回归测试 [vps]
CI/CD / test (push) Successful in 17s
CI/CD / nas-deploy (push) Successful in 47s
CI/CD / nas-verify (push) Successful in 14s
2026-08-14 21:51:39 +08:00
claude_dev b27c3b479c fix(live/shadow): 实例锁第二层——按账户复制策略适配文件(live_3/live_5共用QMT账号被误判重复实例拒启);bullet_trade实例锁判重键=主机+strategy_path+broker+account_identity,同账号多策略是合法场景须路径互异 [vps]
CI/CD / test (push) Successful in 18s
CI/CD / nas-deploy (push) Successful in 26s
CI/CD / nas-verify (push) Successful in 13s
2026-08-14 20:28:14 +08:00
claude_dev e1cafac451 fix(live/shadow): bullet_trade单实例runtime锁按账户分目录(live_{id}/shadow_{id});VPS实况=影子进程持默认./runtime锁,两个组合实盘LiveLockBusyError起不来;多实盘并行+双轨§8的前提 [vps]
CI/CD / test (push) Successful in 14s
CI/CD / nas-deploy (push) Successful in 27s
CI/CD / nas-verify (push) Successful in 16s
2026-08-14 20:14:23 +08:00
claude_dev ea736acb29 fix(shadow): ShadowBroker补LiveEngine 0.9.2协议方法(supports_account_sync/cleanup等5个);VPS实况=影子进程启动即崩进崩溃循环(引擎_start_background_jobs无条件调supports_account_sync);加协议完整性防回归测试 [vps]
CI/CD / test (push) Successful in 15s
CI/CD / nas-deploy (push) Successful in 30s
CI/CD / nas-verify (push) Successful in 12s
2026-08-14 20:04:59 +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 c9bc654d3a fix(paper): 实走/影子隐藏起止日期(用户指正:开放账户区间无意义): 前端仅回放显示日期,卡片标题资金与区间→资金+说明文案; 后端非回放强制start=创建当天end空(组合日终重放依赖start_date空值会崩); 区间断言进测试 [nas]
CI/CD / test (push) Successful in 15s
CI/CD / nas-deploy (push) Successful in 31s
CI/CD / nas-verify (push) Successful in 13s
2026-08-14 19:45:09 +08:00
claude_dev f00730482f feat(shadow-desk): P1-d 影子主管+通路策略增强(用户拍板): channel_test universe分6类资产各3只(宽基/行业/跨境商品ETF/主板蓝筹/中盘/创业板,个股只主板+创业板无科创北交铁律)hold 6只每日跨类型轮换;盘中4时点场景(9:35主调仓卖全买等权/10:45部分加减仓/13:45卖后买资金复用/14:30 T+1拒单探针)每天全场景,适配15m; shadow supervisor --auto轮询paper库自动拉起/停止/重启影子账户子进程(env映射SANGUO_LIVE_+SANGUO_SHADOW_契约); 11新测试 [vps]
CI/CD / test (push) Successful in 12s
CI/CD / nas-deploy (push) Successful in 32s
CI/CD / nas-verify (push) Successful in 15s
2026-08-14 19:14:13 +08:00
claude_dev 2ee6043592 feat(live): 实盘组合策略下拉加通路测试标签(channel_test 自动进 registry 扫描,双轨验证入口) [nas]
CI/CD / test (push) Successful in 14s
CI/CD / nas-deploy (push) Successful in 23s
CI/CD / nas-verify (push) Successful in 11s
2026-08-14 14:35:59 +08:00
claude_dev 102f602aee fix(paper): 模拟盘列表创建时间UTC转北京时间显示(存的是UTC isoformat,直接截串少8h) [nas]
CI/CD / test (push) Successful in 17s
CI/CD / nas-deploy (push) Successful in 27s
CI/CD / nas-verify (push) Successful in 11s
2026-08-14 14:34:58 +08:00
claude_dev 36db2ed5a6 feat(shadow-desk): 通路测试策略channel_test+模拟盘列表改造: 策略=每日等权轮换ETF/蓝筹(卖旧买新走全买卖通路)+T+1当日卖探针(两端应一致拒单,验证拒单通路),注册backtest/live/前端,默认universe 5只高流动ETF,4单测(坑:BrokerFacade是dataclass,子类方法被父类__init__实例属性遮蔽须实例注入); 模拟盘列表:加类型列(个股/组合)+创建时间列,标的去JSON中括号,列宽重排,模式筛选加影子 [vps]
CI/CD / test (push) Successful in 12s
CI/CD / nas-deploy (push) Successful in 28s
CI/CD / nas-verify (push) Successful in 9s
2026-08-14 14:32:52 +08:00