10 Commits

Author SHA1 Message Date
claude_dev 93d7acef50 fix(monitor+frontend): 审计剩余认同件批——T-1 watch_targets_union 真调 poll_once(旧版重抄实现自证恒绿;补 DUAL 双源路径覆盖例)/storm 读不动文件计 unreadable_files 入 evidence 不静默(P3 漏报向,灯色不动)/no_restart CreationDate 解析失败计违例=保守向复核留痕/_dual_track_pairs 兼返 unpaired 清单+零配对不再伪装 no-live-desk(可见性收敛,灯色不动)/weekday 死闸门随迁退役(monitor 门+registry docstring)/前端存量红 4 例清零(Result+TradesTable 空表渲染路径 scope 守卫+两断言对齐现 UI:收益概述已改指标卡/时间选择器已收编 head-meta, vitest 22 文件 67/67 绿);spec §4.1/§4.2-4,9/§9.A-17/§12 随码 [vps]
CI/CD / test (push) Successful in 46s
CI/CD / nas-deploy (push) Has been cancelled
CI/CD / nas-verify (push) Has been cancelled
2026-10-05 12:51:10 +08:00
claude_dev 79c6b8b921 fix(monitor): 审计分诊近期批 4 件+T-3 钉测——S-1 check_entry 查表入 try(fn 名笔误=单检降黄不再整班崩)/S-2 engines_no_restart 空确认日历降黄 fail-safe(废 vacuous 绿;存量测试 fixture 勘正=当日未确认≠日历全空)/A-1 account_monitor 配置读取宽捕 YAMLError+根节点非映射,节流告警首败+30 败心跳(yaml 上移模块级,ImportError 落启动 fail loud)/P3-26 logs_stale docstring 随迁 trading_day/T-3 复市日 morn 诚实黄契约钉测(赶 10-08 前);C-A4 spec 勘正 supervisor 60s→5s(run_supervisor 默认 poll_interval_sec=5.0,VPS schtask 无参覆盖实证)+§4.1/§4.2-3/§9.A-14,15/§12 同步 [vps] 2026-10-05 09:15:24 +08:00
claude_dev 7f9b4133e5 fix(monitor): strategy 侧休市表镜像+logs_stale 闸门迁 trading_day——国庆连休假黄同治 [vps]
CI/CD / test (push) Successful in 41s
CI/CD / nas-deploy (push) Successful in 30s
CI/CD / nas-verify (push) Successful in 9s
infra 提醒(b24f905 只落 data 侧)+域内自决, 两件:
- strategy_registry.EXCHANGE_HOLIDAYS 年度休市表(与 data 域逐字同步,
  CI test_holiday_table_synced_with_data_domain 强制两表相等, 单边改即红;
  年更义务经 data 年更闸+同步测传导双表)
- calendar_union 抽函数(镜像 data _calendar_days): 假定集剔休市表日,
  表缺年不剔(黄照旧绝不静默转绿), 确认集恒保留(表错不吞真相)
  → 10-05/06/07(表内周一~三)eve 交易日语义检整体不评
- logs_stale 闸门 weekday→trading_day: 引擎假日闲置不写日志=常态,
  裸 weekday 只免周末漏国庆周一连休(morn 假黄另一根因, prune 治不了它);
  表外长假尾复市日(10-08) morn 一班诚实黄属已知, 开市落笔自愈
- spec 同步: §1 时间线/§4.1 表/§4.2-5)/§4.3(五检+并集语义)/§7.1 坐标
  /§9.A-15,16 新坑/§10 值班行/§12 坐标+行号漂移勘正
- TDD 4 新测, portfolio 776+data_platform 682 绿零回归

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-03 22:05:02 +08:00
claude_dev 9d1aea1741 chore(monitor): engines_expected setpoint 7→3——_ex四实例退役配套(infra批复): 现役=58通路日线/59通路15m/63挑战者#69; 夹具/wmic桩/三处计数测试同步镜像退役后口径; runbook记翻转工序(setpoint先上VPS→infra精确停退→次日3/3绿, 间隙红窗=已知有界) [vps] [no-doc]
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-01 09:54:53 +08:00
claude_dev b06dbc91f1 feat(monitor): v1.3第十一检data_monitor_alive——P1-10另一半互为外盯(data转呈采纳): data-monitor health_latest.json>26h停滞或缺失=红, morn+eve双班携带, 兜'SCHTASKS自检无人执行'结构洞; 与data域075052d盯我方两班互为反向; 附strategy-ops plan入库+§6开放决策点回填+v1→v1.3演化后记 [vps]
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-01 09:28:24 +08:00
claude_dev ad216e193a docs(monitor): strategy_checks 模块 docstring 补 shadow_*.log——P3-4 修 registry title 时 docstring 漏网(验收残留①) [vps] [no-doc]
CI/CD / test (push) Successful in 40s
CI/CD / nas-deploy (push) Successful in 5s
CI/CD / nas-verify (push) Successful in 6s
2026-10-01 08:16:23 +08:00
claude_dev 86e2e4a137 fix(monitor): 策略监控v1.2二审两修——fills双轨配对逐对账+no_restart盘窗口径重设计 [vps]
10-01 二次审计 P1-3/P2-3 处置(抗辩记录在案:P3-2 同日不复活=alerts_store
既有设计决策、P3-3 expected=7 为告警设定值非事实硬编码,均维持现状):
①P1-3 fills_vs_paper 全表总量口径在 live 桌回归日必误红——重设计为
_dual_track_pairs(instance_id 优先精确配对,回退 strategies 首名,
reconcile_report v2 语义镜像)逐对笔数+金额对账;配对内 0:1=真双轨分歧
照红;无 running live 账户=n/a 绿(09-30 语义保留)。
②P2-3 no_restart 旧「creation>=当日00:00」双失效(盘中重启次日必绿+
08:05 当日必然未确认→red 恒降黄)——重设计为近 3 个确认交易日盘窗
(09:15-15:30)内出生=违例:违例日皆已确认→red 可达;夜间/盘前出生=
合法 deploy 窗;连休无新增确认日自然绿。
附带:_count_running 排除 mode='live'(同族口径,wmic needle 数的是
shadow 进程);registry titles 随 LOG_GLOBS/新语义更新(P3-4);
runbook 注记三处同步+连休预期形态注(P3-1)。
fixture 增双轨配对(8=live↔7=shadow);测试 24 绿(新增盘窗红/deploy 窗
绿/未确认日缓评估/降级载体迁 is_identity_resid/配对全状态链)。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-01 07:50:55 +08:00
claude_dev c79c86e17c fix(monitor): 策略监控v1.1两修——日志面盯现役shadow_*.log+fills_vs_paper按live侧有数据才对账 [vps]
CI/CD / test (push) Failing after 35s
CI/CD / nas-deploy (push) Has been skipped
CI/CD / nas-verify (push) Has been skipped
09-30 复盘两案(09-28/29 eve+09-30 morn 三班实跑实证):
①日志双检只盯 live_*.log——LIVE=0 时代全是 stopped 旧文件:logs_stale 永黄
(09-30 08:05 首班误黄)+ logs_error_storm 26h 窗恒 0=vacuous 绿,现役引擎
实际写 shadow_*.log。修=LOG_GLOBS=("live_*.log","shadow_*.log") 两检查全盯,
live 桌回归日自动覆盖。
②fills_vs_paper 三连误报(0:28/0:201/0:32)——shadow 桌本地撮合订单不出门
(shadow/runner.py+broker.py 源码、paper_shadow_orders 全史 0 行、QMT 两日
cash/mktval 恒定三证互证),LIVE=0 时代 live_trades 结构性为空,拿 live 桌
总数对 shadow 桌总数每个有成交的交易日必误报。修=live 侧当日零行→绿 n/a
(no-live-fills),live 桌回归出成交即自动武装;柜台↔台账恒等式仍归 15:10
仪式(infra 域)分层不变。
测试:n/a 门(早段 red 被绿班消解链顺带验证)+shadow glob 双断言各 1 例,
tests/portfolio+trader/test_scheduler 764 passed。runbook 监控注记同步两处。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-30 22:12:07 +08:00
claude_dev 7ac74da6a4 feat(monitor): 策略监控 wrapper+schtask 注册脚本(恒0/ASCII/08:05+21:30 两班) [vps]
strategy_monitor_wrapper.ps1: 逐字适配数据域范本——恒 exit 0(红态由
alerts/health 承载, exit 3 会污染调度层 schtask 自检)、清三 proxy env、
Set-Location C:\sanguo_vnpy_v2、日志落 data\migration_logs\strategy_monitor_*.txt、
C:\Python310\python.exe -X utf8 --shift $Shift。注释纯 ASCII
(PS5.1 无 BOM 按 GBK 解析中文注释=崩溃铁律)。
register_strategy_monitor_schtasks.ps1: sanguo-strategy-monitor-morn 08:05 /
-eve 21:30 两行注册(--% 反斜杠工法、/ru SYSTEM /rl HIGHEST、VERIFY 尾节
输出下次运行时间); noon 按需手动跑不注册。注册动作归 infra(部署口令后执行)。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 13:38:00 +08:00
claude_dev 188bcbb4ff feat(monitor): 策略运维监控 v1——两班只读体检+alerts source=strategy(引擎/日志/订单链/报告产物十检) [vps]
数据面 data_monitor 三件套的策略域镜像: registry 驱动十检
(morn 5=engines_expected/actual/no_restart+logs_error_storm/stale,
eve 5=is_report_ran/is_identity_resid/orders_leftover/fills_vs_paper/
weekly_ran, noon 复用 morn 前四), 只读体检不修数据。
告警写 alerts_store source="strategy" host="vps"(与 data 域同表分域,
前端类别页直读 API 零改动); 每班末对本班绿 key resolve_passed(悬死案教训)
+purge_expired。日历语义逐字镜像 data_monitor: 确认集(dbbardata 000300)
∪近 15 日工作日假定集, 未确认工作日红级违例降黄, 周末/连休交易日语义
整体不评(告警不误开也不消解)。health 落 data/monitor/health_strategy_*
+health_strategy_latest(health_latest.json 是数据域的, 永不写)。
退出码 0=绿/黄 3=有红(wrapper 层恒转 0)。
wmic 纪律照 vps_count_engines(name='python.exe'+needle 计数, 自匹配免疫);
order 残留=replay_order_states 无 open/ack/partial(expire 终态);
fills 对账=笔数+金额双对账容差 0.01 元(paper_trades 只数 rejected=0,
一表两态); tests 756 绿(+21 新用例: 三 shift/未确认日降级/26h 窗/
消解自愈/health 文件名禁写 health_latest)。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 13:37:42 +08:00