This website requires JavaScript.
Explore
Help
Register
Sign In
sanguo
/
sanguo_vnpy_v2
Watch
3
Star
0
Fork
0
You've already forked sanguo_vnpy_v2
Code
Issues
5
Pull Requests
Actions
Packages
Projects
Releases
Wiki
Activity
Files
2731e26737a6419cfd1c4b5292562f1b10997d32
sanguo_vnpy_v2
/
sanguo_api
T
History
claude_dev
2731e26737
CI/CD / test (push)
Successful in 52s
Details
CI/CD / nas-deploy (push)
Has been cancelled
Details
CI/CD / nas-verify (push)
Has been cancelled
Details
fix(llm): P2-3 双防御——robust_json_parse 入口 isinstance(text,str) 统一 JSONParseError(非 str 曾 TypeError 裸逃逸穿透 502 契约变原生 500)+client 空回复 content:null 降级走 strict 重试一次(两轮仍空才 LLMError);null content 双调用+非 str 五形态测试 [vps] [no-doc]
2026-10-05 09:13:14 +08:00
..
llm
fix(llm): P2-3 双防御——robust_json_parse 入口 isinstance(text,str) 统一 JSONParseError(非 str 曾 TypeError 裸逃逸穿透 502 契约变原生 500)+client 空回复 content:null 降级走 strict 重试一次(两轮仍空才 LLMError);null content 双调用+非 str 五形态测试 [vps] [no-doc]
2026-10-05 09:13:14 +08:00
__init__.py
feat(strategy): registry 扩展自研目录扫描(AST)+文件读写+py_compile; __init__ 惰性化(纯逻辑模块脱离 fastapi 可单测) [nas]
2026-08-12 23:47:07 +08:00
app.py
feat(pipeline): 偏差日报补调度接线——20:50 APScheduler job 挂 ishortfall 日跑(审计终裁P1, runbook「随周报链跑」落地) [vps] [no-doc]
2026-09-27 07:58:20 +08:00
auth.py
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]
2026-08-14 23:09:34 +08:00
code_versions.py
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]
2026-08-15 23:38:07 +08:00
hypothesis_card.py
fix(pipeline): load_domains fail-soft 补形状防御——合法 YAML 但顶层非 dict 或 domains 非 dict 曾 AttributeError 500 穿透(只挡语法错;审计 P2-4);顶层 list/domains list 双降级测试 [vps] [no-doc]
2026-10-05 09:10:34 +08:00
hypothesis_decompose.py
fix(pipeline): 分解反馈循环批内防换皮——dup_violations 对照集随本批 passed 的 expression 增量并入(曾只收名字,同构换皮异名候选双双过门一次成型,首批污染已落 registry;审计 P2-7);同批孪生表达式 dup_exact 拒绝测试 [vps] [no-doc]
2026-10-05 09:09:56 +08:00
instance_store.py
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]
2026-08-15 23:38:07 +08:00
kline.py
feat(s1): 回测核心端到端跑通(vnpy client 对齐)
2026-07-07 06:21:17 +08:00
main.py
fix(api): 加 /health 存活探针端点(治Docker HEALTHCHECK恒unhealthy,/health原404)
2026-08-01 21:01:35 +08:00
routes_alerts.py
feat(api): /alerts 列表+summary+ack 路由(读 data/alerts.db,router 级鉴权,spec §20.15.4) [vps]
2026-09-25 22:54:07 +08:00
routes_factor.py
feat(api): 合成层L2三端点——GET /factor/composites清单(valid/is_ui/is_rolling/registered全标)/GET .../profiles/{key}详情(原样json+resolved_weights免前端复算)/POST .../profiles建档(pydantic ge=0 schema层422+create层ValueError→400双防线);5例含建档后清单立即可见 [nas]
2026-09-14 22:07:36 +08:00
routes_live.py
fix(api): routes_strategy全端点挂鉴权+文件名白名单——架构审计P0-2用户拍板限修: router级verify_token(原MVP裸奔=写.py+动态import执行面绑0.0.0.0公网直达); validate_py_name白名单^[A-Za-z0-9_-]+.py$堵os.path.join穿越/绝对路径逃逸(read/write/code-versions三口); 顺手收敛routes_portfolio/live两份分叉鉴权副本→routes.py正主(副本缺Bearer前缀时split越界500); 测试=无token 401+坏token 401+白名单parametrize+连坐两文件补帽 [vps] [no-doc]
2026-10-01 09:51:39 +08:00
routes_paper.py
feat(web): 对账中心上线——恒等式B5只读端点+前端恒等式区块,双轨对账页升级为对账中心(issue#42-A) [nas]
2026-08-26 20:31:42 +08:00
routes_pipeline.py
fix(factor): P4-2 终审修复波 I-1/I-2+M-1/M-2/M-3——building 二次分解纯增量注册+护栏 arity 表/容器拦截/零数据列+回写终态可辨+prompt 在库名单+max_tokens 提额
#84
[vps] [no-doc]
2026-10-02 09:19:12 +08:00
routes_portfolio.py
fix(api): routes_strategy全端点挂鉴权+文件名白名单——架构审计P0-2用户拍板限修: router级verify_token(原MVP裸奔=写.py+动态import执行面绑0.0.0.0公网直达); validate_py_name白名单^[A-Za-z0-9_-]+.py$堵os.path.join穿越/绝对路径逃逸(read/write/code-versions三口); 顺手收敛routes_portfolio/live两份分叉鉴权副本→routes.py正主(副本缺Bearer前缀时split越界500); 测试=无token 401+坏token 401+白名单parametrize+连坐两文件补帽 [vps] [no-doc]
2026-10-01 09:51:39 +08:00
routes_strategy.py
fix(api): routes_strategy全端点挂鉴权+文件名白名单——架构审计P0-2用户拍板限修: router级verify_token(原MVP裸奔=写.py+动态import执行面绑0.0.0.0公网直达); validate_py_name白名单^[A-Za-z0-9_-]+.py$堵os.path.join穿越/绝对路径逃逸(read/write/code-versions三口); 顺手收敛routes_portfolio/live两份分叉鉴权副本→routes.py正主(副本缺Bearer前缀时split越界500); 测试=无token 401+坏token 401+白名单parametrize+连坐两文件补帽 [vps] [no-doc]
2026-10-01 09:51:39 +08:00
routes.py
fix(web): 进度页时间线越界+因子任务日志空(用户08-30验收两处) [vps]
2026-08-30 10:46:05 +08:00
schemas.py
feat(api): 合成层L2三端点——GET /factor/composites清单(valid/is_ui/is_rolling/registered全标)/GET .../profiles/{key}详情(原样json+resolved_weights免前端复算)/POST .../profiles建档(pydantic ge=0 schema层422+create层ValueError→400双防线);5例含建档后清单立即可见 [nas]
2026-09-14 22:07:36 +08:00
strategy_registry.py
fix(api): routes_strategy全端点挂鉴权+文件名白名单——架构审计P0-2用户拍板限修: router级verify_token(原MVP裸奔=写.py+动态import执行面绑0.0.0.0公网直达); validate_py_name白名单^[A-Za-z0-9_-]+.py$堵os.path.join穿越/绝对路径逃逸(read/write/code-versions三口); 顺手收敛routes_portfolio/live两份分叉鉴权副本→routes.py正主(副本缺Bearer前缀时split越界500); 测试=无token 401+坏token 401+白名单parametrize+连坐两文件补帽 [vps] [no-doc]
2026-10-01 09:51:39 +08:00
validation.py
fix(vps验收五问题之四): ①#84个股回测/回放提交秒败——L2校验end>latest且end<=today(周末/节假日/当日未灌)不再400,引擎区间过滤自然截到latest;新增start>latest仍400(必空跑);VPS实况=结束默认今天周日>最新周五,首提即败 ②#85组合任务标的列永远000300.XSHG——worker symbol=benchmark改pool(spec透传,benchmark已在params);内存任务两处symbol回退symbol→pool→benchmark ③#42影子拉起即崩——live_strategy工厂表补4个TET副本映射(all_weather_ex等,01184c2改名后回测认得但影子/实盘runner不认,VPS shadow#42实录) ④#88影子快照刷垃圾行——_snapshot_loop每30s无条件写date=''行(40号半天97行),改_should_write_balance同日一行+空行情不写(+3测试) ⑤可观测性——supervisor子进程stdout/stderr落logs/shadow_{aid}.log(>5MB重置)+主管自身日志落logs/shadow_supervisor.log(原schtask控制台=黑洞,41/42崩因至今零线索);933绿 [vps]
2026-08-16 18:28:18 +08:00
ws.py
feat(api): WS 连接池 ConnectionManager
2026-07-06 18:15:22 +08:00