Files
tick-stock-panel/backend/app
shy3130 e2c84dbeca fix(dragon-tiger): thscode 为 null 的退市/B股标的归一化, 修复龙虎榜崩溃
用户反馈: 展开复盘页龙虎榜 (2026-10-29 榜单 72 条) 前端崩溃。
根因: fuyao 对退市整理期股/B股返回 thscode=null (ticker 有值) — 今天
首次上榜的萃华退(002731)/宁通信B(200468)/动力B股(900920) 3 条 null
thscode 被后端原样透传, 违反前端 DragonTigerStockItem.thscode: string
契约 (下游按 string 使用, 收到 null 即崩)。

- dragon_tiger 服务新增归一化 (新拉取 + 历史缓存读回共用):
  thscode 缺失时由 ticker 推导市场后缀 (6xx/900→SH, 0xx/3xx/200→SZ,
  4xx/8xx→BJ), 两者都不可用则丢弃并告警; 游资席位嵌套 rows 同样处理
- 前端: 类型放宽为 string | null (如实反映数据源现实), 榜单卡片统一走
  _dtCode/_dtLabel 兜底 (旧缓存/异常数据源也不再崩), 无代码行不触发
  onOpenStock
- 实测真实数据: 72 条归一后 0 条 null; 三条退市/B股 →
  002731.SZ / 200468.SZ / 900920.SH; 席位嵌套 rows 同样干净

验证: 后端新增 6 条归一化用例 (ticker 推导/不可识别丢弃/嵌套 rows/
缓存读回/端到端); 前端新增龙虎榜卡片回归 2 条 (展开 72 条不崩 + 点击
null 行以 ticker 兜底回调); 后端全量 3546 passed; 前端 49 文件 348
用例 + build 通过; ruff 零新增。

Signed-off-by: shy3130 <shy3130@qq.com>
2026-10-29 22:35:30 +08:00
..