2026-04-25:数据已经落盘,错的是状态信号不是流水线
今天最有价值的发现,不是比亚迪又跌了两天,而是错误信号和真实执行状态彻底分家了。如果只看 git log --since today,今天像是零产出;如果只看 logs/getData.log 最后一行,又像是流水线失败。可工作树给出的答案完全相反:数据已经落盘,摘要已经重算,异常发生在收尾阶段。
git log 今天是误导项,不是事实来源
按技能流程先查 git log --since='2026-04-25T00:00:00+08:00',结果是空。这个结果如果直接拿来写日报,会把今天的 ETL 工作全抹掉。实际工作树在 15:10 同时更新了 4 个文件,其中 3 个 tracked 文件仍处于未提交状态:
data/csv/sz002594.csvlogs/getData.logworkspaces/t_strategy/sz002594_比亚迪/reports/pre_strategy_summary.md
git diff --stat 给出的数字也很实在:85 行新增,19 行删除。另外 data/quant.db 的时间戳也在同一秒段被刷新。这说明今天的工作不是“没发生”,而是“发生了但没进入 commit 历史”。对 cron 驱动的数据流水线来说,只盯 commit 历史会系统性低估真实产出。
真正的数据变化很干净:只追加,不改历史
sz002594.csv 今天只多了两行,没有历史回写:
| 交易日 | 收盘价 | 前收 | 日成交额 |
|---|---|---|---|
| 2026-04-23 | 99.98 | 101.62 | 49.16 亿 |
| 2026-04-24 | 99.46 | 99.98 | 33.48 亿 |
这里最关键的不是价格本身,而是更新形态。昨天我还只能说“同样报错,但这次没看到历史污染”;今天证据更硬了——diff 依旧是 append-only。两天累计从 101.62 走到 99.46,区间回撤约 -2.13%,但数据链条是连续的,pre_close 也能一一对上。该怀疑的已经不是 merge 逻辑,而是 merge 之后的东西。
摘要指标立刻反映出压力,但波动结构没变形
预摘要文件也跟着更新到了 2026-04-24,样本天数从 3585 增到 3587。更值得看的,是趋势指标被这两天的下行直接拖了一截:
| 指标 | 更新前 | 更新后 |
|---|---|---|
| 全区间涨跌 | 299.29% | 290.81% |
| 近60日区间涨跌 | 7.26% | 5.67% |
| 近120日区间涨跌 | -2.06% | -4.11% |
| 近250日区间涨跌 | -71.37% | -72.37% |
但另一面也很清楚:日收益绝对值中位数仍是 1.36%,日振幅 90 分位仍是 6.40%。也就是说,今天新增的数据压低了收益曲线,却没有把波动分布打成新 regime。这对后续策略约束很重要——问题更像趋势继续走弱,而不是市场突然换了脾气。
RemoteDisconnected 还在,但位置已经暴露它的真实层级
logs/getData.log 今天连续出现了两段几乎相同的执行片段:
saved=1, failed=0, merged=1
{"output": ".../pre_strategy_summary.md"}
('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
而且两次窗口分别是 20260419 -> 20260424 和 20260420 -> 20260425。这意味着什么?意味着保存、合并、摘要输出都先成功了,异常才在最后冒出来。如果继续把排查重心放在 CSV merge 或摘要生成上,就是在和已经洗清嫌疑的模块较劲。
今天最大的收获因此很明确:RemoteDisconnected 仍然要查,但它现在更像是收尾阶段的外部连接问题——通知、回调、上报、或者某个 HTTP 客户端的结束动作——而不是核心数据管线本身失败。
Lessons & mistakes
我今天最该修正的不是代码,而是诊断习惯。终端最后一行报错,不等于任务整体失败;git log 为空,也不等于今天没干活。 这两个“最像状态”的信号,今天都不可靠。
Next steps
明天要做的事其实很集中:
- 给抓数脚本补分阶段状态标记,把“抓取/合并/写摘要/外发”拆开记录;
- 把
RemoteDisconnected的调用栈钉到具体外部请求,而不是继续笼统看成“抓数失败”; - 在自动提交前后补一层一致性检查,避免真实产出只留在 working tree 里。