6 Commits

Author SHA1 Message Date
claude_dev 434d7cb357 feat(config): QMT 部署身份单一权威源 config/qmt_identity.json——P2-18 账号硬编码根治(⚖️-2 用户拍板:确认永为模拟号+令根治硬编码)
CI/CD / test (push) Failing after 7s
CI/CD / nas-deploy (push) Has been cancelled
CI/CD / nas-verify (push) Has been cancelled
根因三层(全案=audit/20261005_qmt_identity_env_plan.md): schtask 无 per-task env+机器级 env 未设→wrapper 被迫字面量;「部署身份」无单一权威源(env 名分裂三个);模拟号零安全压力致 32 文件 88 处 copy-paste 扩散。

- qmt_gate_common.load_identity 正典装载器(:14-59): env SANGUO_QMT_ACCOUNT/BIGQMT_ACCOUNT_ID(兼容别名)>json>RuntimeError fail-loud;SANGUO_IDENTITY_JSON 显式指路不存在=立即报错;查找=repo 相对>C:\sanguo_vnpy_v2\config\(生产副本回退位)
- 灾备腿同源: relogin/qmt_bridge_probe/setclip 改 from qmt_gate_common import ACCOUNT
- 桥腿镜像同链: xt_gateway._qmt_account/qmt_gateway_client._identity_default_account/is_price_source_vps/bridge_switch_ops(3 处 env 注入+1 处内嵌探针串)/check_xtquant——env 带默认的硬编码默认值全数退役
- xt_eod_wrapper.ps1 改 Get-Content identity json(保持 ASCII);码内 docstring 字面量→占位符(engine/runner/runner_live/live.yaml 注释/README)
- .gitignore 白名单 !config/qmt_identity.json(全局 *.json 曾吞之,git check-ignore 实证)
- tests/trader/test_qmt_identity.py 五钉: 装载链语义(env 双名覆盖/显式指路 fail)+单源一致性(identity≡live.yaml≡watch_accounts≡gate_common≡各腿镜像,休市表 CI 同步测先例)+码面字面量 grep-pin(生产码面零 66639661,只 config 三件套可含)
- 监控 spec: §3.2 账号来源 bullet/§9.A-18 坑条/§12 行数+行号勘正(插入块致 bridge_ping/calendar_probe/relogin_running 引用行号推移);runbook: 非代码资产两行(副本回退路径+生产 wrapper 待改清单=10-08 窗口后 §五③)

生产 wrapper(C:\sanguo_bigqmt 库外)字面量收尾=10-08 复市验证窗口后非代码资产流程;VPS 班车同窗口(护 10-08 07:50 relogin 首班旧码纯净)。trader+api 620 绿。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-05 17:32:42 +08:00
claude_dev f6ea116f10 chore(pipeline): 桥1m超时降级路径加warning打点——分清桥坏vs无数据 [vps] [no-doc]
CI/CD / test (push) Successful in 40s
CI/CD / nas-deploy (push) Successful in 1s
CI/CD / nas-verify (push) Successful in 6s
10-01 二次审计 P2-7 采纳 infra 域意见:不扩捕获面(0928-30 事故所见全部
=TimeoutError 形态, 扩面有真故障吞成静默降级的反向风险), 先做降级发生处
打点, 第二故障形态实证后再议。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-01 07:51:06 +08:00
claude_dev 4d61b643a5 fix(portfolio): 桥1m超时降级no_anchor——盘后桥不伺候分钟史不再炸整份IS日报 [vps] [no-doc]
CI/CD / test (push) Successful in 36s
CI/CD / nas-deploy (push) Successful in 6s
CI/CD / nas-verify (push) Successful in 10s
infra 09-28 部署后 §287 probe 定案:盘后桥 1m 查询 >30s 抛 TimeoutError,
经 make_price_fn→_build_leg 穿透 run_day,scheduler 兜底只记日志 → 整份
IS 日报缺失(而非 no_anchor 降级)。修=is_price_source_vps.make_price_fn
捕获 TimeoutError→缓存空 dict:调用方按无分钟数据走宁缺毋假降级链
(decision→no_anchor,arrival→派发 tick 兜底),日线锚(本地 dbbardata)
不受牵连;同 (day,code) 只烧一次 30s 超时后 fail-fast。probe() 不经此层
保持 fail-loud。今晚 20:50 首跑 cd1793c 新决策价口径的前提保障。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-28 15:36:45 +08:00
claude_dev b5aa18cf8d fix(pipeline): 冒烟实证修——桥扁DataFrame行走+env全链配方+epoch退化守卫 [vps]
CI/CD / test (push) Successful in 26s
CI/CD / nas-deploy (push) Successful in 9s
CI/CD / nas-verify (push) Successful in 8s
三案皆 VPS 真桥只读探针实证(09-26 冒烟):
- is_price_source_vps:minute_rows_to_map 形态归一(扁 DataFrame[index,close]
  实测形态为准,兼容遗留嵌套 dict);_minute_closes 改逐票调桥(扁形态无
  code 列,批量切片无法按票归属);_ensure_bridge_env 补 DEFAULT_DATA_
  PROVIDER=miniqmt + PYTHONPATH 全链(bridge/vnpy 根/vnpy_v4.4.0/vnpy_qmt_
  v0.3.3,SANGUO_VNPY_ROOT 可覆)——缺任一 xtdata import 即断。
- order_log_parser._t_raw_ts:epoch sanity floor=2000-01-01(生产实见
  t_raw=0 退化单 3565 条→1970 幽灵日;退化/负/垃圾回退行首时间戳),
  毫秒分支移入 floor 内评估。
- 测试 +3(扁/嵌套形态×2、epoch 退化回退×1)。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-26 14:07:22 +08:00
claude_dev e5b523de3f fix(pipeline): 终审修复波——价格源缓存键(日,码)修+分钟键形态解析+probe 形态门+norej 跨文件防撞+prev_close 20 日窗+费用零价跳过 [vps]
CI/CD / test (push) Successful in 24s
CI/CD / nas-deploy (push) Successful in 9s
CI/CD / nas-verify (push) Successful in 6s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-26 08:14:49 +08:00
claude_dev 68ea844e8b feat(pipeline): VPS 价格源适配器——桥分钟bar+dbbardata日线(偏差日报三价链锚点) [vps] 2026-09-26 07:57:37 +08:00