diff --git a/docs/superpowers/specs/2026-07-21-data-source-fusion-design.md b/docs/superpowers/specs/2026-07-21-data-source-fusion-design.md index 64967ce..7d2e1a4 100644 --- a/docs/superpowers/specs/2026-07-21-data-source-fusion-design.md +++ b/docs/superpowers/specs/2026-07-21-data-source-fusion-design.md @@ -843,6 +843,17 @@ valuation 今日刚同步/三表 09-06 全量),七域覆盖≡VPS(沪深 5215 一次性回补态、从未接日喂(与 vb 按年文件有 bs-daily 日喂形成对照);修法=季度 追赶一次性回补(~10 季×5200 股≈5.2 万发,分两晚),排 dmsk 之后,待用户点头。 +**W4' 完成终态(2026-09-08 02:18)**: backfill 210 unit/1771 发/5680s/零失败 +rc=0,70 期×3 表全落库(27.1万/28.0万/28.0万行);**verify PASS=键唯一 0 重键** +(硬门),BJ 行 1.04万-1.15万/域(北交所含性实证);**净新增 383 只**镜像外代码 +(dmsk_codes=5598 vs 镜像有效 5215)=2009 年后退市+镜像空档股,补缺目标达成。 +daily lane 首跑(00:42)符合设计: 近3期重扫 2 分钟,+10/+7/+7 晚披露入账, +NOTICE_DATE 5569/5569 非空最新至当日。**已知边界**: 2009 年前退市股(如 +000003, 2002 年退)dmsk(2009 起)与 F10(拉老退市也空)双源皆无=源头缺失, +无免费方案,如实记档。翻页坑: 东财 datacenter 用 `pageNumber`(cninfo 才是 +pageNum),误用被静默忽略=12 页全回第一页,冒烟 +500/6000 实锤后修(d71ee55)。 +DSM `sanguo-fundamentals-daily` 07:10 待用户 GUI 注册(注册后每日新鲜度自走)。 + ## 参考(调查来源) - xtdata 官方:https://dict.thinktrader.net/nativeApi/xtdata.html diff --git a/scripts/data_platform/verify_dmsk.py b/scripts/data_platform/verify_dmsk.py index c213ee7..f543ce4 100644 --- a/scripts/data_platform/verify_dmsk.py +++ b/scripts/data_platform/verify_dmsk.py @@ -38,10 +38,13 @@ def main(): n_bj = int(df["SECURITY_CODE"].astype(str).str[:2] .isin(BJ_PREFIXES).sum()) delisted = int((df["SECURITY_CODE"].astype(str) == "000003").sum()) - latest_notice = str(df["NOTICE_DATE"].astype(str).max())[:10] + notice = df["NOTICE_DATE"].dropna() + # 注意 astype(str).max() 遇 NaN 会得 "None"(ASCII 大于日期串)——先 dropna + latest_notice = str(notice.max())[:10] if len(notice) else "n/a" report[domain] = dict(periods=len({p.parent.name for p in parts}), parts=len(parts), rows=len(df), dup_keys=dups, bj_rows=n_bj, delisted_000003_rows=delisted, + notice_nonnull=int(notice.count()), latest_notice_date=latest_notice) if dups: fails.append(f"{domain}: {dups} 重键行(键唯一硬门)")