Skip to content

fix(screening): improve B1 scan reliability on Windows#2

Merged
kunkundi merged 3 commits into
kunkundi:mainfrom
CyrusAuyeung:agent/b1-scan-reliability
Jul 16, 2026
Merged

fix(screening): improve B1 scan reliability on Windows#2
kunkundi merged 3 commits into
kunkundi:mainfrom
CyrusAuyeung:agent/b1-scan-reliability

Conversation

@CyrusAuyeung

@CyrusAuyeung CyrusAuyeung commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

修改内容

  • B1 全市场单股评分改为有上限的线程池,默认 6 个 worker,可通过 DASHBOARD_B1_SCAN_WORKERS 调整并限制在 1–16。
  • 融资融券和大宗交易的全市场数据按日期缓存,并使用进程锁保证并发 worker 只加载一次。
  • 手动与定时全市场扫描共用非阻塞锁,防止同一进程内重复重扫。
  • 候选结果和时段缓存显式按 UTF-8 读写,避免中文 Windows 默认 CP936 解码失败。
  • 提供默认关闭的手动候选复用窗口,保持现有行为不变。
  • 基于最新 mainde75063)重新整合:完整保留板块潮汐的行业预处理、共享市场/板块上下文和策略注册;共享上下文构建完成后才并发单股评分。

问题原因

Dashboard 的部分候选缓存读取依赖系统默认编码,而扫描器按 UTF-8 写入 JSON;中文 Windows 默认 CP936 因此可能抛出 UnicodeDecodeError

全市场扫描还存在两个性能放大点:单股评分串行执行,以及融资融券、大宗交易接口按候选股重复拉取同一份全市场数据。手动和定时入口同时运行时会进一步放大负载;引入 worker 后,共享缓存的 check-then-set 还必须加锁以避免重复请求风暴。

兼容性与影响范围

  • 不改变策略评分、交易阈值、候选排序或买卖规则。
  • 默认 worker 数为 6,并有明确上限。
  • 手动候选复用默认关闭,只有显式配置后才生效。
  • 启用板块潮汐时仍先完成一次共享上下文构建,再把只读上下文传给单股 worker。
  • Windows、Linux、macOS 和容器继续读取同一份 UTF-8 状态文件。

验证

python -m unittest tests.test_multi_strategy_rules tests.test_sector_tide_strategy tests.test_strategy_package tests.test_dashboard_auth
Ran 146 tests
OK

PYTHON_BIN=python ./scripts/validate.sh
Ran 429 tests
OK

完整验证同时通过 Python、JavaScript、Shell 和 Windows BAT 语法检查。

Fixes #1

@CyrusAuyeung
CyrusAuyeung marked this pull request as ready for review July 15, 2026 06:20
@CyrusAuyeung
CyrusAuyeung force-pushed the agent/b1-scan-reliability branch from e67d058 to 53a83a4 Compare July 16, 2026 08:53
@CyrusAuyeung CyrusAuyeung changed the title fix: improve B1 scan reliability on Windows fix(screening): improve B1 scan reliability on Windows Jul 16, 2026
@kunkundi
kunkundi force-pushed the agent/b1-scan-reliability branch from 863a302 to f1cb40e Compare July 16, 2026 08:58
@kunkundi
kunkundi merged commit 198cc7f into kunkundi:main Jul 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] B1 全市场扫描在 Windows 上易超时且候选缓存读取失败

2 participants