Commit Graph

417 Commits

Author SHA1 Message Date
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
claude_dev 6220fc5943 refactor(paper): 影子升级为第三种运行模式(回放/实走/影子,用户拍板CTA和组合都可走影子): 模式卡三选一替代组合卡内撮合引擎单选; engine由mode推导(shadow→shadow否则eod_replay,CTA/组合统一); 日终20:30 job只遍历mode=live天然隔离影子账户; 列表徽标mode=shadow亮'影子'+组合live标'日终'; 2新测试 [vps]
CI/CD / test (push) Successful in 13s
CI/CD / nas-deploy (push) Successful in 27s
CI/CD / nas-verify (push) Successful in 9s
2026-08-14 12:55:26 +08:00
claude_dev 8e7e7282de feat(shadow-desk): P1-b/c 影子柜台常驻进程+本地撮合broker+前端引擎选择: ShadowBroker(实时价±滑点即时成交/佣金印花最低佣金/A股整手/T+1日锁/资金不足拒单/均价加权/duck-typed BrokerBase协议); runner挂bullet_trade LiveEngine同实盘唯一差=broker_factory换影子(双轨对账基础),成交落paper_trades+30s快照落持仓净值; CLI单实例文件锁(python -m sanguo_trader.shadow); paper_accounts加engine列(eod_replay/shadow迁移); 前端:模拟盘新建组合卡撮合引擎单选+列表影子/日终徽标; 10 broker单测 [vps]
CI/CD / test (push) Successful in 12s
CI/CD / nas-deploy (push) Successful in 25s
CI/CD / nas-verify (push) Successful in 9s
2026-08-14 12:16:05 +08:00
claude_dev 861c7faa8c feat(portfolio): P1-a 组合策略K线周期字段(前后端): 模拟盘新建组合卡显周期下拉(原v-if藏起,实走/影子用miniQMT档位); live组合分支不写死d(空=d默认,cta空=15m); 组合回测加interval(d=day,非d拒400+runner拒ValueError,分钟档等数据层); worker params存interval供回放预填; 前端组合回测表单加下拉(仅日线可选,其余disabled标注影子可用) [vps]
CI/CD / test (push) Successful in 11s
CI/CD / nas-deploy (push) Failing after 12s
CI/CD / nas-verify (push) Has been skipped
2026-08-14 12:05:23 +08:00
claude_dev ce62de5522 docs(shadow-desk): P0对账标记已通过(all_weather 2024全年全量vs3段续跑,持仓逐只/现金总值/净值<1e-6,跨除权覆盖);下一步P1常驻进程 [nas]
CI/CD / test (push) Successful in 13s
CI/CD / nas-deploy (push) Successful in 29s
CI/CD / nas-verify (push) Successful in 14s
2026-08-14 10:33:44 +08:00
claude_dev 1e7d696f45 feat(shadow-desk): P0对账spike(runner加initial_positions通道+final_portfolio产出): BacktestEngine续跑注入初始持仓(引擎原生支持,不消耗现金); 期末现金/持仓/总值从engine.context.portfolio直取; run_backtest_json透传initial_positions+final_portfolio; scripts/shadow_desk/spike_p0全量vs 3段续跑对账(持仓逐只/现金总值/净值曲线<1e-6,自动月初分段或--split压除权边界); 6测试 [vps]
CI/CD / test (push) Successful in 16s
CI/CD / nas-deploy (push) Successful in 28s
CI/CD / nas-verify (push) Successful in 12s
2026-08-14 10:10:51 +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 a5f19f5b43 fix(live): vt_symbol 默认值改裸码600000(前后端;后端create自动补后缀,默认值无需带SSE) [nas]
CI/CD / test (push) Successful in 9s
CI/CD / nas-deploy (push) Successful in 24s
CI/CD / nas-verify (push) Successful in 10s
2026-08-14 09:33:52 +08:00
claude_dev 94e1b59ec1 feat(web): K线周期下拉统一共享常量:列全miniQMT成品K线(1m~60m/日/周/月,周月由日线合成),默认日线;模拟盘/实盘/策略实例三表单同源;标注回放数据可用性(d/15m本地有) [nas]
CI/CD / test (push) Successful in 14s
CI/CD / nas-deploy (push) Successful in 32s
CI/CD / nas-verify (push) Successful in 14s
2026-08-14 09:18:27 +08:00