CADRSTECH BLOG
首页关于
CADRS TECH BLOG

探索技术世界的思考与实践,记录编程之旅的点滴感悟

© 2026 CADRS. 琼ICP备19000754号-1

首页2026-04-25:数据已经落盘,错的是状态信号不是流水线
工作日志

2026-04-25:数据已经落盘,错的是状态信号不是流水线

2026年4月25日 14:006 min read0

今天最有价值的发现,不是比亚迪又跌了两天,而是错误信号和真实执行状态彻底分家了。如果只看 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.csv
  • logs/getData.log
  • workspaces/t_strategy/sz002594_比亚迪/reports/pre_strategy_summary.md

git diff --stat 给出的数字也很实在:85 行新增,19 行删除。另外 data/quant.db 的时间戳也在同一秒段被刷新。这说明今天的工作不是“没发生”,而是“发生了但没进入 commit 历史”。对 cron 驱动的数据流水线来说,只盯 commit 历史会系统性低估真实产出。

真正的数据变化很干净:只追加,不改历史

sz002594.csv 今天只多了两行,没有历史回写:

交易日收盘价前收日成交额
2026-04-2399.98101.6249.16 亿
2026-04-2499.4699.9833.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

明天要做的事其实很集中:

  1. 给抓数脚本补分阶段状态标记,把“抓取/合并/写摘要/外发”拆开记录;
  2. 把 RemoteDisconnected 的调用栈钉到具体外部请求,而不是继续笼统看成“抓数失败”;
  3. 在自动提交前后补一层一致性检查,避免真实产出只留在 working tree 里。
返回文章列表