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 68cf42f..667b7f3 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 @@ -644,6 +644,41 @@ NAS 其余=数值副本(sync 链产物)+大体积历史(minute_kline/ 2.1G=cfdai Mac=开发 fixture 无生产数据。corpus 不是第三种根——就是既有 `/volume1/stock` 数据根下的 新子目录,与 CLAUDE.md「NAS 部署目录」表一致。 +### 18.9 实施记录(2026-09-06/07 开工夜,T1/T2/T4/T5+T6 可自主项已验) + +commit 链 62a3a65→308d493(全 [nas],CI 绿,终版已部署 NAS /app)。两 lane 真数据冒烟 +rc=0: daily 431s/205 unit(news +100×2 股、全文 199 篇均值 3584 字、复合键零重、 +--limit 零 marker);backfill 13s/8 unit(①2026 层真公告 59+125、④真 PDF 1.09MB+索引)。 +verify_corpus.py(只读验收器,晨检一条命令)真数据 PASS:三域 dups=0、账本=唯一键数、 +PDF 索引=文件数。文件全 admin 属主;容器时区 CST 与 NAS 对齐。 + +**与 §18.3 字面的四项实施偏差(均为实测倒逼,语义不劣化)**: +1. 股票池源=巨潮 `szse_stock.json`(6247 含退市 000003+北交 920001→A 前缀过滤 6168), + 非 NAS 副本库 distinct symbol——orgId 是按股查询硬前提且退市覆盖实测更全。 +2. 单实例锁=flock(非 5m 的 pid 活性同款)——docker run --rm 各容器独立 PID namespace, + pid 检测跨容器失效;flock 内核级经 bind mount 同 inode 跨容器互斥,进程死自动释放 + 无陈旧锁(让路契约同款,实测二实例 EXIT=3)。 +3. 业绩快报无服务端类别码(category_yjkb_* 无效码被服务端**静默忽略返回全量**,官方 + history-notice.js 码表无此项,单股对照实测)——PDF 六类=五服务端码+客户端标题谓词 + 「业绩快报」(announcementType 数字码 012111 仅作参考);announcementTypeName 恒 null, + ann_meta.ann_type 存原始数字码串。 +4. backfill ①年序=新→旧(字面「2000→今」与 §18.7「回补~1周后即可供 factor」自相矛盾, + 翻转后 day1 即近年数据;全量完结不受影响)。 + +**§18.5 验收进度**: 5/5b/6 已过——主容器 restart 期间 corpus 容器存活且 marker 在涨 +(实测);docker stop 断点冻结 27 unit→重启从 000028_2026 精确接续零重拉(实测);单实例 +锁二实例让路 EXIT=3(实测);容量闸门真卷演练(临时阈值 99999G>free 644G→段首暂停 +零下载+capacity_paused.json,工件即清);测试 270 绿+CI 绿。**待数据累积后补**: +验收 1(5 股抽查)/2(600519 2001 起)/3(news 2023-09 硬顶)/4(PDF 抽 20 份)+限速 +合规 stats 复核——依赖 DSM 任务注册后数日运行。 + +**运维要点**: wrapper=repo `scripts/nas_sync/run_corpus_standalone.sh`→NAS `/volume1/ +stock/corpus/run_corpus.sh`(scp -O 手动同步);容器必带 `--user 1024:100 --group-add 101` +(Synology ACL 只授权 administrators 组,漏组=Permission denied)+`--name sanguo-corpus` +(杀=docker stop);东财 search-api 无 UA 返 200 空 body(全 fetcher 统一带 UA); +--until 语义=完成当前 unit 后停(首 unit 必跑);day-1 全文洪峰由 daily --until 10:30 +墙钟+backfill ③账本反扫兜底。 + ## 参考(调查来源) - xtdata 官方:https://dict.thinktrader.net/nativeApi/xtdata.html