跳到主要内容

DH-WP-001 S0 baseline 交付说明

0. 文档元信息

说明
消费者Trading Matrix 接收方、Data Horizon 运营与工程(导出 / 交接执行人)
触发条件字段字典已冻结;第一批信源与样本可从 DH 库导出或经 Open API 拼装
下一步动作执行 §4 生成 baseline → §5 校验 → §6 交接 → TM 填写 试消费反馈记录
字段依据S0 baseline 字段字典dh-wp-001-s0-v1

1. 交付物清单

artifact格式说明
sources_baselineCSV + JSON信源候选,见字段字典 §3
samples_baselineCSV + JSON代表样本,见字段字典 §4
manifest.jsonJSON版本、时间窗、记录数、时间语义与已知限制
本说明Markdown生成、校验、交接步骤(本文)

默认参数(待 TM 书面确认后可调整):

参数默认值
样本时间窗90
每信源样本上限50 条(按 published_at 降序)
候选信源范围source_type=signalkol_id 非空、status=1is_deleted=0
Schema 版本dh-wp-001-s0-v1

2. 生成方式(三条路径)

2.1 路径 A:导出 CLI(推荐,S0-C01)

工程仓计划提供:

cd server
go run ./scripts/export_tm_baseline.go \
-sample-days=90 \
-samples-per-source=50 \
-format=both \
-out=./output/tm-baseline-20260527
参数作用
-category-iddn_crawler_source.category_id 筛选
-kol-id仅导出指定 KOL 下信源
-source-ids逗号分隔 dn_crawler_source.id
-sample-days样本时间窗
-samples-per-source每源条数上限
-formatcsv / json / both

读取表dn_crawler_sourcedn_koldn_raw_news
输出目录output/tm-baseline-{date}/,含 sources_baseline.*samples_baseline.*manifest.json

当前状态(2026-05-27):CLI 尚未合入工程仓;S0 交接可先用路径 B + 路径 C,或运营 SQL + 脚本临时导出。

2.2 路径 B:Open API 拼装(过渡期)

适用于 TM 或 DH 脚本按信源拉样本。

步骤API用途
1POST /v1/open/kol/source-list获取 KOL 分类下的信源列表(id, title, platform
2POST /v1/open/kol/source-signal-listsource_id + start_time / end_time 分页拉 dn_raw_news

鉴权:MCP API Key(见工程仓 docs/open-api-third-party-spec.md)。

拼装时注意

  • 将 API id 映射为 sample_id=rn_{id}source_id=cs_{source_id}
  • source_timestamppublished_at(ISO 8601 UTC);
  • 补齐 raw_ref:有 source_url 则用,否则 dh://raw_news/{id}(需 CLI 或 SQL 导出正文时一并带出 content);
  • captured_at / ingested_at 在 S0 均取自 created_at(若 API 未返回,需查库或等 S0-B03 扩展)。

2.3 路径 C:运营后台 + SQL 审计(首批人工兜底)

步骤操作
1在 DH 管理后台 KOL / 采集渠道 确认候选源已绑定 KOL、tagstm_priority(可选)
2在目标环境执行 §7 抽样 SQL,确认每源样本量与时间填充率
3用 SQL SELECT 或临时脚本按字段字典列导出 CSV
4运营填写 selection_reasonactive_statuspending_review / low_activity 等人判字段

3. 生成流程(端到端)


4. 导出逻辑要点

4.1 信源(sources)

  1. 联结 dn_kol 填充 market_scopesignal_stylekol_name
  2. 聚合近 90 天 dn_raw_newslast_sample_atsample_count_90d
  3. 按字段字典 §3.2 映射 source_type
  4. 计算 active_status(字典 §3.4);
  5. 排除 retired 及 90 天内零样本源。

4.2 样本(samples)

  1. 每源取最多 N 条,按 source_timestamp DESC;
  2. 排除 status=3repeat_news_id 非空打 duplicate,不重复占行;
  3. 计算 parse_status(字典 §5.2);
  4. subjects JSON → symbols 逗号串;
  5. 私域合规:按 DH-WP-001 任务包设计 §9 与运营备忘决定是否摘要 raw_content

4.3 manifest

必须包含字典 §6 全部键,并固定 time_semantics_note

S0:captured_atingested_at 均映射 dn_raw_news.created_at,不代表独立入库流水线时间。


5. 校验清单

5.1 自动校验(导出脚本 / CI 建议)

#检查项失败处理
V1每条 source_id 匹配 ^cs_\d+$拒绝导出
V2每条 sample_id 匹配 ^rn_\d+$拒绝导出
V3samplessource_id 均存在于 sources拒绝导出
V4必填字段非空(字典 §3、§4 标 ✓)拒绝导出
V5published_at / captured_at / ingested_at 可解析为 ISO 8601拒绝导出
V6无重复 news_id去重或拒绝
V7manifest.sample_count 与实际行数一致拒绝导出

5.2 人工抽检(运营,建议 ≥10%)

#检查项
H1打开 raw_refdh:// 内链能回到原始记录
H2published_at 与正文语境一致(非明显错位)
H3优先验证列表无「来源不明」匿名源
H4parse_status=unparsable 的条目未进入 TM 优先包(可单独附 samples_low_priority
H5私域摘要条目在 manifest 标明 content_redaction

5.3 S0 验收对齐(任务包 §8)

  • ≥1 批可追溯、已去重、带 active_status 的信源候选
  • 每个优先源有代表样本(数量与 TM 确认一致)
  • 每条样本可回溯 source_id + raw_ref
  • 三类时间不混用语义(S0 允许 capture/ingest 同源,manifest 已声明)
  • parse_status 三类可区分
  • 无来源不明、无时间戳数据进入优先列表
  • TM 书面确认可据此判断是否足够生成策略种子(见试消费反馈)

6. 交给 Trading Matrix

6.1 交接包结构

tm-baseline-YYYYMMDD/
├── sources_baseline.csv
├── sources_baseline.json
├── samples_baseline.csv
├── samples_baseline.json
├── manifest.json
└── README.txt # 可选:指向本交付说明 URL

6.2 交接信息(邮件 / Issue 模板)

字段内容
Schemadh-wp-001-s0-v1
生成时间{manifest.generated_at}
信源数 / 样本数{source_count} / {sample_count}
时间窗{sample_window_days}
字段字典本文档库链接 → s0-baseline-field-dictionary.md
已知限制capture/ingest 同源;交易线索字段 S0 大量为空;dh_quality_* 未填
试消费截止由双方约定
反馈填写tm-trial-consumption-feedback.md

6.3 TM 侧建议试消费步骤

  1. 加载 sources_baseline,按 active_status=activeselection_reason / tags 筛优先源;
  2. 加载 samples_baseline,仅对 parse_status=parsable 尝试策略种子生成;
  3. needs_review 抽样人工看字段是否够用;
  4. 记录缺字段、命名冲突、时间语义问题至试消费反馈;
  5. 勿将 DH 交付物中的空 direction / time_horizon 视为 TM 验证失败,除非种子生成强依赖这些列。

7. 数据库抽样 SQL(交接前执行)

目标环境执行,结果粘贴至工程仓 S0-B02 或试消费反馈附录。

-- 候选信源规模
SELECT COUNT(*) AS candidate_sources
FROM dn_crawler_source
WHERE is_deleted = 0 AND status = '1'
AND source_type = 'signal' AND kol_id IS NOT NULL;

-- 每源样本量与时间填充率(近 90 天)
SELECT
cs.id AS source_id,
cs.source_name,
COUNT(r.id) AS sample_cnt,
SUM(r.source_timestamp IS NOT NULL) AS has_published,
SUM(r.source_url IS NOT NULL AND r.source_url != '') AS has_url,
MAX(FROM_UNIXTIME(r.source_timestamp)) AS last_published
FROM dn_crawler_source cs
LEFT JOIN dn_raw_news r ON r.source_id = cs.id
AND r.created_at >= DATE_SUB(NOW(), INTERVAL 90 DAY)
AND r.status != 3
WHERE cs.is_deleted = 0 AND cs.status = '1' AND cs.source_type = 'signal'
GROUP BY cs.id
ORDER BY sample_cnt DESC
LIMIT 30;

-- 无效 / 重复占比
SELECT status, COUNT(*) FROM dn_raw_news
WHERE created_at >= DATE_SUB(NOW(), INTERVAL 90 DAY)
GROUP BY status;

8. 已知限制与风险

限制影响缓解
export_tm_baseline CLI首批需 API/SQL 手工优先合入 S0-C01
captured_at === ingested_at无法分析入库延迟manifest 声明;S1 加列
active_status 粗粒度仅 1/2 开关S1 dn_tm_source_candidate
交易线索字段空缺TM 种子需更多 NLPS1 Signal Agent + 标注表
Open API 缺 URL / 时间别名TM 脚本需二次查库S0-B03
KOL 私域全文合规风险摘要 + raw_ref 内链

9. 相关链接

文档位置
任务包设计DH-WP-001 任务包设计
字段字典S0 baseline 字段字典
试消费反馈Trading Matrix 试消费反馈记录
TM 原始任务书Data Horizon 信源候选与样本交付任务书
工程可落地清单data-horizon 仓 docs/agent-tasks/dh-wp-001-trading-matrix-source-candidate.md

Changelog / 演化记录

2026-05-27:创建 S0 baseline 交付说明,覆盖生成路径、校验、交接模板与抽样 SQL。