Commit Graph

  • c9bc654d3a fix(paper): 实走/影子隐藏起止日期(用户指正:开放账户区间无意义): 前端仅回放显示日期,卡片标题资金与区间→资金+说明文案; 后端非回放强制start=创建当天end空(组合日终重放依赖start_date空值会崩); 区间断言进测试 [nas] claude_dev 2026-08-14 19:45:09 +08:00
  • 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] claude_dev 2026-08-14 19:14:13 +08:00
  • 2ee6043592 feat(live): 实盘组合策略下拉加通路测试标签(channel_test 自动进 registry 扫描,双轨验证入口) [nas] claude_dev 2026-08-14 14:35:59 +08:00
  • 102f602aee fix(paper): 模拟盘列表创建时间UTC转北京时间显示(存的是UTC isoformat,直接截串少8h) [nas] claude_dev 2026-08-14 14:34:58 +08:00
  • 36db2ed5a6 feat(shadow-desk): 通路测试策略channel_test+模拟盘列表改造: 策略=每日等权轮换ETF/蓝筹(卖旧买新走全买卖通路)+T+1当日卖探针(两端应一致拒单,验证拒单通路),注册backtest/live/前端,默认universe 5只高流动ETF,4单测(坑:BrokerFacade是dataclass,子类方法被父类__init__实例属性遮蔽须实例注入); 模拟盘列表:加类型列(个股/组合)+创建时间列,标的去JSON中括号,列宽重排,模式筛选加影子 [vps] claude_dev 2026-08-14 14:32:52 +08:00
  • 6220fc5943 refactor(paper): 影子升级为第三种运行模式(回放/实走/影子,用户拍板CTA和组合都可走影子): 模式卡三选一替代组合卡内撮合引擎单选; engine由mode推导(shadow→shadow否则eod_replay,CTA/组合统一); 日终20:30 job只遍历mode=live天然隔离影子账户; 列表徽标mode=shadow亮'影子'+组合live标'日终'; 2新测试 [vps] claude_dev 2026-08-14 12:55:26 +08:00
  • 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] claude_dev 2026-08-14 12:16:05 +08:00
  • 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] claude_dev 2026-08-14 12:05:23 +08:00
  • ce62de5522 docs(shadow-desk): P0对账标记已通过(all_weather 2024全年全量vs3段续跑,持仓逐只/现金总值/净值<1e-6,跨除权覆盖);下一步P1常驻进程 [nas] claude_dev 2026-08-14 10:33:44 +08:00
  • 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] claude_dev 2026-08-14 10:10:51 +08:00
  • 8f184c9f2e ci(vps-deploy): 纳入前端dist同步+API重启(治公网前端无管线手动步骤): Mac构建+tar+scp→VPS换dist(脚本入仓scripts/nas_sync,vps_update_dist.py); 重启加端口释放等待(防end→run竞态10048静默崩,今日实踩)+起服探活(上限10min) [nas] claude_dev 2026-08-14 10:06:54 +08:00
  • a5f19f5b43 fix(live): vt_symbol 默认值改裸码600000(前后端;后端create自动补后缀,默认值无需带SSE) [nas] claude_dev 2026-08-14 09:33:52 +08:00
  • 94e1b59ec1 feat(web): K线周期下拉统一共享常量:列全miniQMT成品K线(1m~60m/日/周/月,周月由日线合成),默认日线;模拟盘/实盘/策略实例三表单同源;标注回放数据可用性(d/15m本地有) [nas] claude_dev 2026-08-14 09:18:27 +08:00
  • fff9119f38 docs(design): 影子柜台+双轨一致性验证(用户需求):影子vs实盘同跑对账——一致性参数表(费率/滑点标定/涨跌停/T+1对齐)+日终对账报表(笔数/价差<10bps/持仓/净值月<0.5%) [nas] claude_dev 2026-08-14 09:11:39 +08:00
  • 02ece66e86 docs(design): 影子柜台设计v2(用户反馈):miniQMT实时订阅驱动(替代schtask轮询,与实盘同款)+实时价撮合+步长=策略自身周期(tick~月线)+每实例独立虚拟账户;对账兜底保留 [nas] claude_dev 2026-08-14 09:05:03 +08:00
  • 869a758b89 fix(web): 任务耗时活计时钳0(本机时钟慢于服务端时短暂显示—) [nas] claude_dev 2026-08-14 08:35:46 +08:00
  • 7e94339e42 docs(design): 模拟盘影子交易柜台设计(验收四轮#4):checkpoint增量+VPS盘中15m schtask+自有撮合;可行性已验(引擎initial_positions+attribute_history直查源) [nas] claude_dev 2026-08-14 08:32:42 +08:00
  • 234b44e141 feat(live): CTA实盘vt_symbol裸6位码自动补交易所后缀(6→SSE,0/3→SZSE);表单提示+单策略原因说明(实盘需A股适配,陆续扩展) [nas] claude_dev 2026-08-14 08:30:56 +08:00
  • 5850a60561 feat(api+web): 任务列表管理(验收四轮批1):历史任务→任务列表改名;DELETE /task/{id}单/批删除(进行中拒删);GET /task/{id}/params参数回放+点任务ID跳参数页预填;真创建时间+耗时列(提交即记,进行中活计时);进行中禁查看;组合任务params全量存 [nas] claude_dev 2026-08-14 08:29:20 +08:00
  • 94de7191f5 feat(backtest): 任务提交时间表task_submissions+按task_id删结果(行+曲线文件+提交记录); record_submission/load_submissions/delete_result_by_task_id [vps] claude_dev 2026-08-14 08:29:20 +08:00
  • 02a862349a fix(portfolio): worker Mac分支(SSH到VPS)remote_cmd也补--provider unified(同VPS分支基准空根因,Mac开发路径防踩) [nas] claude_dev 2026-08-14 07:10:45 +08:00
  • a6f6956c5d fix(portfolio): worker VPS分支也走unified provider:默认local(仅parquet)无指数点位致基准曲线恒空(dbbardata才有);冒烟实证VPS unified全链路OK [vps] claude_dev 2026-08-13 23:29:12 +08:00
  • 849e437244 fix(strategy): dirty误标根治:Monaco setValue回写modelValue(含换行规整)与nextTick复位竞态;改载入宽限窗口300ms(echoGrace),窗口内code变更不算用户编辑 [nas] claude_dev 2026-08-13 23:23:13 +08:00
  • f0a0e6bc8a fix(strategy): 编辑器加载文件误标未保存(code程序化赋值触发watch置dirty,运行回测被拦);select后nextTick复位 [nas] claude_dev 2026-08-13 23:19:58 +08:00
  • 6728872d72 fix(portfolio): 基准装载时序修正:load_strategy()会reset_settings()清掉预设,须在initialize闭包内set_benchmark(聚宽同款模式);构造参数与预run设置双失效 [vps] claude_dev 2026-08-13 23:09:58 +08:00
  • c8b7be69c9 fix(portfolio): 基准曲线恒空根因=bullet_trade 0.9.x BacktestEngine(benchmark=)构造参数收而不用,须set_benchmark()设全局settings(VPS冒烟实测benchmark_data恒None);run前显式设,幂等 [vps] claude_dev 2026-08-13 22:59:03 +08:00
  • 95d621874f feat(strategy): 文件树分组支持点击折叠/展开(箭头旋转动效) [nas] claude_dev 2026-08-13 20:40:03 +08:00
  • 929f52e3c2 feat(portfolio): 组合回测加持仓变化图(daily_positions每日聚合count/value经worker/routes透传,柱=持仓数线=市值)+超额收益曲线(策略/基准净值-1,聚宽标配,前端算);2测试 [vps] claude_dev 2026-08-13 20:40:03 +08:00
  • ced95d006a feat(strategy): 代码编辑文件树按类型分组(组合策略/个股策略+数量徽标) [nas] claude_dev 2026-08-13 20:33:49 +08:00
  • fd0b9d0c36 feat(live): 组合策略实盘(R3-1): live_accounts加strategy_type/pool/max_pool/benchmark列(ALTER迁移); supervisor对组合行拉runner_live子进程(env传参+崩溃检测); runner_live重写适配bullet_trade 0.9.2新API(strategy_file+broker_factory,旧initialize=/broker=已废弃)+live_strategy.py适配文件挂StrategyTemplate; 前端live/New双卡表单+列表组合徽标; 8测试 [vps] claude_dev 2026-08-13 19:57:23 +08:00
  • baaa459481 test(api): 修2个stale测试(benchmark-curve/risk-series未知任务从404改断言降级200空序列,对齐b2c41c7降级设计) [nas] claude_dev 2026-08-13 19:57:23 +08:00
  • 819198919c feat(portfolio): 组合回测结果页加月度收益热力图(年×月+年度合计)+滚动夏普/波动双轴图(63日窗,业界标准);前端从equity_curve算零后端改动;strategy query预填 [nas] claude_dev 2026-08-13 19:40:24 +08:00
  • 82c9edb092 fix(strategy): 编辑器代码空白根因=/strategy/files不含code; 加GET /strategy/file/{name}按需拉取; 运行回测改回跳参数页+按策略预填(New.vue读query.class,推翻上轮直接发起) [nas] claude_dev 2026-08-13 19:40:18 +08:00
  • b9d9285246 fix(frontend): paper New.vue 行内 @click if 表达式 rolldown 编译不过(run576 vite build 失败根因)改 setMode 方法 [nas] claude_dev 2026-08-13 18:35:27 +08:00
  • e2d118fa38 fix(frontend): CI vue-tsc -b 三处类型错(live List重复import/paper List initial_capital可空/组合净值series宽类型);本地改用 -b 模式校验对齐CI [nas] claude_dev 2026-08-13 18:33:42 +08:00
  • d030cfc91f feat(paper): 组合策略接入模拟盘实走(E1+E2): paper_accounts加strategy_type列(含迁移); portfolio_paper每晚20:30全量重放→当日成交/末日持仓/净值落paper表(幂等,回测引擎为单一真相源); run_live_step按类型分流; create支持portfolio(仅live); 前端新建模拟盘策略类型选择+组合字段(策略/池/上限/基准) [vps] claude_dev 2026-08-13 18:32:09 +08:00
  • 3e7d40ad5f fix(frontend): Code.vue StrategyFile 接口补 type 字段(CI vue-tsc -b 报 TS2339,run570-572 build 失败根因) [nas] claude_dev 2026-08-13 18:28:19 +08:00
  • ccf958c5d6 feat(paper/live): 生命周期管理补全: paper停止/恢复(实走20:30 step跳过stopped)/删除(连带净值成交持仓挂单)/编辑(名称标的资金); live删除(运行中拒绝)/编辑(stopped才可改); 前端列表+结果页按钮/编辑弹窗/删除确认 [vps] claude_dev 2026-08-13 18:27:32 +08:00
  • d8c156e6de feat(strategy): 策略库灌入vnpy内置8策略模板(DoubleMa/AtrRsi/BollChannel/DualThrust/KingKeltner/MultiSignal/MultiTimeframe/TurtleSignal); registry自研目录优先加载(编辑副本即刻生效,pip兜底); 分类器识别vnpy_ctastrategy import风格 [vps] claude_dev 2026-08-13 18:24:40 +08:00
  • 08aec403f7 feat(portfolio): 组合回测结果增强: 基准对比曲线(对齐交易日+归一化)+回撤序列+扩展指标(波动/Sortino/Calmar/超额/Alpha/Beta), worker与API透传, 结果页净值对比+回撤图 [vps] claude_dev 2026-08-13 18:22:10 +08:00
  • c41fd862ea feat(frontend): 验收UX批A: CTA回测提交统一跳任务中心; 代码编辑「运行回测」直接发起(默认参数+最近1年,CTA/组合分流); 模拟盘策略改下拉; 状态徽标实走文案+去排队兜底 [nas] claude_dev 2026-08-13 18:17:16 +08:00
  • 976c99de07 fix(history): 创建时间 UTC→北京时间(+8); 标的列加宽(100→130)治折行 [nas] claude_dev 2026-08-13 14:17:23 +08:00
  • 5248062102 feat(history): 任务列表加创建时间(created_at)+类型命名统一菜单(个股回测/组合回测/参数优化/因子分析)+列宽均衡(去实例列) [nas] claude_dev 2026-08-13 14:04:57 +08:00
  • b99e58bca1 fix(api): GET /task 合并内存 running/pending 任务(任务中心看到刚提交的,治只查DB看不到运行中) [nas] claude_dev 2026-08-13 14:00:45 +08:00
  • 728b8ccec9 feat(portfolio): 任务中心UX(GitHub Actions模式)—提交后跳历史任务页+自动刷新运行中状态+发起新回测入口; PortfolioBacktest 回归表单/查看两态(治单任务跟踪丢失) [nas] claude_dev 2026-08-13 13:50:24 +08:00
  • 15f132ccb5 feat(portfolio): 参数表单分块(策略与选股/时间与资金/基准与费用); 进行中页加「发起新回测」(治等待页无法新建) [nas] claude_dev 2026-08-13 11:36:35 +08:00
  • ebe368f54a fix(portfolio): run_backtest_json main params+Namespace 漏费用字段致 rc=1(组合回测失败) [vps] claude_dev 2026-08-13 11:34:03 +08:00
  • 66b393df16 feat(portfolio): 组合回测接入A股费用(佣金/印花税/最低佣金/滑点)对齐个股回测; BulletTrade set_order_cost/set_slippage [vps] claude_dev 2026-08-13 10:32:49 +08:00
  • b48a3b5c75 feat(portfolio): 组合回测改 trackTask 三态+localStorage 持久(提交后可切页,回来续看进度/结果,治同步等待体验) [nas] claude_dev 2026-08-13 10:14:47 +08:00
  • 523105650d fix(api): GET /task 内存失后 DB fallback 返 status(治回测 done 后前端轮询 404 死循环卡等待) [nas] claude_dev 2026-08-13 08:52:53 +08:00
  • c833c07fd6 fix(portfolio): 历史组合结果可查看(PortfolioBacktest查看模式+History跳转/筛选/标签); 回测等待加已耗时提示(治卡顿错觉) [nas] claude_dev 2026-08-13 08:34:34 +08:00
  • e07cf7cd81 fix(portfolio): 默认日期改最近1年+记忆; MOCK_ON=import.meta.env.DEV(NAS构建走真实,治组合回测2022日期/不在历史mock假象) [nas] claude_dev 2026-08-13 08:05:46 +08:00
  • 4ad505434b feat(backtest): 个股回测接入费用(cfg通道)+slippage+benchmark放宽至4基准 [vps] claude_dev 2026-08-12 23:56:14 +08:00
  • 1d8e39709f feat(strategy): 策略代码+实例路由组(routes_strategy)并注册 app [nas] claude_dev 2026-08-12 23:56:14 +08:00
  • 31836701f6 feat(strategy): 策略实例 JSON 存储 CRUD(list/get/create/update/delete) [nas] claude_dev 2026-08-12 23:47:51 +08:00
  • a272741dd6 feat(strategy): registry 扩展自研目录扫描(AST)+文件读写+py_compile; __init__ 惰性化(纯逻辑模块脱离 fastapi 可单测) [nas] claude_dev 2026-08-12 23:47:07 +08:00
  • 93bd251cc9 fix(frontend): 组合回测基准下拉 + 新建回测改名个股回测(消除歧义) [nas] claude_dev 2026-08-12 23:32:15 +08:00
  • 29b663acfc fix(monaco): defineTheme 去掉多余 name 字段(治 CI build TS2353) [nas] claude_dev 2026-08-12 23:26:32 +08:00
  • 5c8a7e12c6 feat(frontend): 终端化重构+策略管理(代码→实例→4运行)+撮合设计+回测参数 [nas] claude_dev 2026-08-12 23:23:23 +08:00
  • 58b5d08280 docs: 补 NAS 组合回测验证截图(2026-07-31 all_weather 跑通) [nas] claude_dev 2026-08-12 08:45:24 +08:00
  • 4f6cd43b21 feat(nas_sync): parquet 断点续传脚本(逐文件scp+NAS size校验跳过,治VPS无rsync) [nas] claude_dev 2026-08-12 08:45:24 +08:00
  • bf30283ac5 fix(ci): nas-verify 加 checkout(check-vps-needed 需 git log+脚本,原 job 只 curl/ssh 无代码) [nas] claude_dev 2026-08-02 23:27:51 +08:00
  • 67d1c1ef2f ci(vps-gate): commit必打[vps]/[nas]标签+vps-deployed tag+待推issue [nas] claude_dev 2026-08-02 23:25:40 +08:00
  • b66a6c5958 fix(ashare_engine): load_data 直查 dbbardata 绕 vnpy peewee(治 CTA 死算) claude_dev 2026-08-02 21:48:33 +08:00
  • c263aa14ab chore(cta_engine): 加 load_data bar数+run_backtesting logging(确诊卡点) claude_dev 2026-08-02 21:21:42 +08:00
  • 3d934f5fa6 chore(cta_engine): 加阶段 logging(治 spawn 子进程黑盒,定位卡死) claude_dev 2026-08-02 21:14:40 +08:00
  • 2ff8ecaf52 perf(metrics): rolling alpha/beta 向量化(O(n²)→O(n),治分钟级卡死) claude_dev 2026-08-02 20:54:50 +08:00
  • b2c41c73b8 fix(backtest): CTA metrics benchmark 缺失降级(不阻塞整组指标图) claude_dev 2026-08-02 20:37:50 +08:00
  • 2cb2ab0dd8 fix(config): vnpy_db 改 NAS v2 dbbardata 库(治 CTA 结果页 5图空白) claude_dev 2026-08-02 20:22:44 +08:00
  • 4c5270cf7a fix(frontend): EquityCurve 去 v-if + watch flush:post(治净值图永不init) claude_dev 2026-08-02 20:01:55 +08:00
  • c049e0e97d fix(frontend): MetricCards fmt 兜底字符串值(治结果页整页渲染崩溃) claude_dev 2026-08-02 19:51:51 +08:00
  • 857d43c6c2 fix(frontend): CTA结果页补净值曲线图(零成交也出图) claude_dev 2026-08-02 19:10:55 +08:00
  • 9588a77a01 feat(portfolio): 回测可观测性 L1+L2+L3(治排查黑盒) claude_dev 2026-08-02 13:42:06 +08:00
  • 6d23f7b5ec fix(portfolio): worker _TIMEOUT 3600→10800(3h)+timeout非静默日志 claude_dev 2026-08-02 07:14:00 +08:00
  • e22c8ee939 feat(portfolio): max_pool 字段透传(model+handler+前端,解除30硬编码) claude_dev 2026-08-01 23:20:40 +08:00
  • 7a14d7da82 feat(portfolio): strategy 字段全链透传(API→orchestrator→worker→runner_backtest + 前端选择器) claude_dev 2026-08-01 23:01:26 +08:00
  • 5c5bd9d7bb fix(docker): PYTHONPATH ENV 移 COPY 后(缓存命中 TA-Lib,避 sourceforge wget 卡) claude_dev 2026-08-01 22:49:21 +08:00
  • 0f6cdbedc9 fix(entrypoint): uvicorn --log-level 转小写(治 exit2 crash loop,第3根因) claude_dev 2026-08-01 21:59:39 +08:00
  • c210197778 fix(entrypoint): +x 执行位 + SKIP_REDIS_CHECK 默认1(治 run535 NAS crash loop) claude_dev 2026-08-01 21:43:29 +08:00
  • 6d786fbf41 fix(orchestrator): spawn 子进程 PYTHONPATH + entrypoint 回根治孤儿 claude_dev 2026-08-01 21:33:20 +08:00
  • ca0ec016f9 ci(nas-verify): 加 /health gate 防存活探针回归 claude_dev 2026-08-01 21:07:34 +08:00
  • 1989a54ee5 fix(deps): requirements-lock 补 bullet-trade/jqdatasdk 治重装丢包 claude_dev 2026-08-01 21:05:27 +08:00
  • a17f291850 fix(api): 加 /health 存活探针端点(治Docker HEALTHCHECK恒unhealthy,/health原404) claude_dev 2026-08-01 21:01:35 +08:00
  • f9b7c103c0 docs: §10 可复现构建更新(单阶段Dockerfile+polars[rtcompat]+已验证换装) claude_dev 2026-08-01 20:39:58 +08:00
  • 7bed73aa4c fix(docker): polars[rtcompat]==1.42.1(治 NAS AVX2 SIGILL 根因) claude_dev 2026-08-01 20:09:03 +08:00
  • e0808859da fix(docker): polars 钉 1.42.1(NAS 无 AVX2,>=1.43 SIGILL 崩溃 exit132) claude_dev 2026-08-01 19:49:06 +08:00
  • 0332aef3d4 fix(docker): 加 .dockerignore 瘦身构建上下文(1.9G→~50MB)+Dockerfile apt清华镜像 claude_dev 2026-08-01 19:20:12 +08:00
  • 53daf9b57b fix(docker): Dockerfile apt 换清华 debian 镜像(原 deb.debian.org 国内不稳) claude_dev 2026-08-01 19:16:10 +08:00
  • 608574b49b fix(docker): Dockerfile pip install 对齐清华源(与 Dockerfile.test+运行时env一致) claude_dev 2026-08-01 19:07:52 +08:00
  • e64b5906da fix(portfolio-backtest): 净值曲线 echarts 空白 - watch漏触发手动兜底 claude_dev 2026-08-01 16:56:26 +08:00
  • 4986e5c3c4 feat(portfolio): 组合回测异步化(接入 orchestrator task 框架) claude_dev 2026-08-01 13:52:46 +08:00
  • 2ca2facce3 fix(docker): requirements-docker 补组合/CTA 运行时依赖(治重建丢包后患) claude_dev 2026-08-01 12:23:53 +08:00
  • 4fccfad4ca fix(nas): 固化容器 --init 铁律(防后台回测被清复发) claude_dev 2026-08-01 08:49:32 +08:00
  • 3b3e42985e fix(datareader): read_index_daily 切 dbbardata(治 benchmark 读陈旧 vnpy DbBarData) claude_dev 2026-08-01 08:41:57 +08:00
  • 6b3d86920b fix(idx-eod): 000300 沪深300 加入 CODES,补 7-16→7-31 数据 claude_dev 2026-08-01 08:00:36 +08:00
  • 3813d22e2b fix(nas_sync): sync_parquet.sh 加保活+retry(防6.24G跨公网broken pipe) claude_dev 2026-08-01 07:37:31 +08:00
  • 4876727289 fix(nas_sync): sync_valuation_daily 改scp-r(单tar跨公网broken pipe) claude_dev 2026-08-01 02:04:19 +08:00
  • 86bec48b14 feat(nas_sync): valuation+financial_abstract 每日同步脚本 claude_dev 2026-07-31 23:03:50 +08:00
  • ae6dde7778 fix(frontend): 组合回测副标题文案修正(本地执行,非VPS) claude_dev 2026-07-31 22:54:49 +08:00
  • 9013ecc141 docs(claude): 加部署职责边界(业务session只push,推VPS是运维+人决策) claude_dev 2026-07-31 22:44:41 +08:00