# Cron 默认 Qi vs Nq 陷阱 (2026-08-13 用户发现) ## 🚨 事故时间线 - **2026-07-29 左右 → 2026-08-13**: cron `lottery-hot-data` 跑 `lottery_特码_cron.sh`, 脚本默认抓 `v_xg.json['Qi']`(已开期), 跑了一个月标题/排名/挂牌全是已开期数据。 - **2026-08-13 12:04 北京**: 用户问 "你这前面写的期数是已开的, 分析的数据也是已开的? 我只要你分析未开的啊" — 当天 v_xg.json Qi=087 (已开), Nq=088 (未开, 8/13 周四 21:30 开彩)。 ## 根因 `scripts/lottery_特码_cron.sh` 第 9-19 行: ```python d = json.loads(r.read().decode('utf-8')) print(d['Qi']) # ❌ 改用 Nq ``` `scripts/lottery_特码.py` 第 397-406 行 (默认 period): ```python period = json.loads(r.read().decode('utf-8')).get('Qi', '082') # ❌ 改用 Nq, fallback '088' ``` 两个文件 runtime 路径全部用 Qi, 文档注释里写 "自动取 Qi 期"。**用户问"特码"永远是想知道"下期买什么", 不是"上期回顾"**。 ## 硬规则 (修改时必检) 1. `lottery_特码_cron.sh` 默认写 `NQ=$(... Nq ...)` (小写 `Nq=未开`) 2. `lottery_特码.py` 默认 `period = v_xg.json['Nq']`, fallback `'088'` 3. **修改这两个文件后必跑**: ```bash grep -n "Qi\|Nq" ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码.py \ ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码_cron.sh ``` - 搜出来的 `Qi` 只允许出现在文档注释 (`"""Qi = 最新已开"""`) 和 `qi_xg = v.get('Qi')` 字段快照里 - runtime 路径 (`period = ...`, `print(d['...'])`) 必须是 Nq ## 验证脚本 ```bash # 跑完 cron 脚本, 看第一行 "🎯 分析期号: NNN (v_xg.json Nq 未开下期)" bash ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码_cron.sh 2>&1 | head -3 # 期望: 🎯 分析期号: 088 (v_xg.json Nq 未开下期) # 不期望: 🎯 分析期号: 087 (v_xg.json Qi) ``` ## 文档一致性 - `references/v_xg-data-qi-pitfall.md` 之前只讲 Qi/Nq 字段语义, **没强调 "分析/抓数据选 Nq" 的运行时规则** - 这个 reference 专门补这个运行时陷阱 - `SKILL.md` 硬规则 #4 (2026-08-13 新增) + 用户硬偏好 #8 = 同步规则 ## 教训 任何**"自动取 X 期"** 的脚本默认,都要先问自己: 1. 用户用这个脚本的目标场景是什么? (特码分析 = 推算下期) 2. 默认值应该符合同一类用户意图 (Nq = 未开) 3. Qi/已开期 只用于**核对** (查 marksix6.com / SQLite draws 表), 不是默认推送