DH-WP-001 S0 baseline 字段字典
0. 文档元信息
| 项 | 说明 |
|---|---|
| 消费者 | Trading Matrix 策略种子工程、Data Horizon 导出脚本 / Open API 实现、运营复核 |
| 触发条件 | Data Horizon 工程仓与 dn_crawler_source / dn_kol / dn_raw_news 事实核对完成,准备冻结第一版静态 baseline |
| 下一步动作 | 按 S0 baseline 交付说明 生成 sources_baseline / samples_baseline;交给 TM 后填写 试消费反馈记录 |
| Schema 版本 | dh-wp-001-s0-v1(修订时递增,并在 manifest.json 中声明) |
| 工程仓对照 | data-horizon docs/agent-tasks/dh-wp-001-trading-matrix-source-candidate.md §3 |
本文冻结 DH-WP-001 S0 阶段 CSV / JSON 的字段名、必填规则、枚举值与 Data Horizon 现有表字段映射。S1 字段(dh_quality_grade 等)在本文标注为「S0 可空 / S1 必填」,导出时允许留空。
1. 交付文件与记录类型
| 文件名 | 记录类型 | 说明 |
|---|---|---|
sources_baseline.csv / .json | 信源候选 | 一行一信源,稳定 source_id |
samples_baseline.csv / .json | 代表样本 | 一行一样本,稳定 sample_id,外键 source_id |
manifest.json | 元数据 | 生成时间、schema 版本、记录数、时间语义声明、已知限制 |
JSON 根结构建议:
{
"schema_version": "dh-wp-001-s0-v1",
"generated_at": "2026-05-27T00:00:00Z",
"sources": [ /* 同 CSV 列 */ ],
"samples": [ /* 同 CSV 列 */ ],
"manifest": { /* 见 §6 */ }
}
2. 标识与引用约定(S0 冻结)
| 概念 | 格式 | 底层依据 | 备注 |
|---|---|---|---|
source_id | cs_{id},例 cs_12 | dn_crawler_source.id | 对外字符串,避免与 TM 侧数字 ID 冲突 |
sample_id | rn_{id},例 rn_120073 | dn_raw_news.id | 可选并列字段 news_id(MD5)供去重 |
raw_ref | HTTPS URL 或 dh://raw_news/{id} | dn_raw_news.source_url 或主键 | 必须可审计回链 |
| 时间格式 | ISO 8601 UTC,例 2026-05-27T08:00:00Z | Unix 秒由 source_timestamp 转换 | CSV 与 JSON 统一 |
2.1 三类时间语义(S0 重要声明)
| 字段 | 含义 | S0 映射 |
|---|---|---|
published_at | 信源侧原始发布时间 | dn_raw_news.source_timestamp |
captured_at | Data Horizon 首次捕获时间 | dn_raw_news.created_at |
ingested_at | 进入 baseline 包 / 可被 TM 消费的时间 | S0 与 captured_at 相同(均为 created_at) |
已知限制:当前库表无独立「先入队列、后入库」时间戳。S0 在
manifest.json中必须写明:captured_at与ingested_at同源,不得用于推断采集延迟分布。S1 可在标准化完成时用updated_at或专用列区分。
3. 信源字段(sources_baseline)
3.1 字段表
| 字段 | 类型 | S0 必填 | 说明 | 枚举 / 格式 | DH 映射 |
|---|---|---|---|---|---|
source_id | string | ✓ | 稳定信源 ID | cs_{id} | dn_crawler_source.id |
source_type | string | ✓ | WP 侧信源类型 | 见 §3.2 | 由 source_type + category_id 映射 |
display_name | string | ✓ | 展示名称 | 非空 | title 优先,否则 source_name |
channel | string | ✓ | 来源渠道 | 见 §3.3 | platform |
external_ref | string | ✓ | 外部账号 / 频道 / 链接 | {platform}:{external_id} | platform + external_id |
market_scope | string | 建议 | 主要市场与标的范围 | 逗号分隔或 JSON 数组字符串 | dn_kol.market(经 kol_id) |
signal_style | string | 建议 | 信号或内容风格 | 逗号分隔或 JSON 数组字符串 | dn_kol.strategy_style |
active_status | string | ✓ | 追踪状态 | 见 §3.4 | S0:status=1→active,2→paused;无 KOL 绑定的 signal 源→pending_review |
selection_reason | string | 建议 | 入选 / 优先验证理由 | 自由文本 | 运营填写;可来自 tags 含 tm_priority |
kol_id | string | 可空 | 关联 KOL | kol_{id} | dn_crawler_source.kol_id |
kol_name | string | 可空 | KOL 名称 | — | dn_kol.kol_name |
language | string | 建议 | 语言 | zh, en, … | language |
last_sample_at | datetime | 建议 | 最近样本发布时间 | ISO 8601 | MAX(FROM_UNIXTIME(source_timestamp)) |
sample_count_90d | integer | 建议 | 近 90 天样本数 | ≥0 | 聚合 dn_raw_news |
dh_quality_grade | string | S0 可空 | A/B/C/D 初评 | A,B,C,D | S1;S0 留空 |
dh_quality_reason | string | S0 可空 | 初评理由 | — | S1 |
created_at | datetime | ✓ | 信源登记时间 | ISO 8601 | dn_crawler_source.created_at |
updated_at | datetime | ✓ | 最近更新时间 | ISO 8601 | 无列时:dn_kol.updated_at 或导出时刻 |
3.2 source_type(WP 枚举)
| 值 | 含义 | DH 默认映射规则 |
|---|---|---|
professional_trader | 职业交易员 | source_type=signal 且 category_id=2(带单信号) |
analyst | 分析师 | source_type=signal 或 social,category_id=3(KOL 观点) |
channel | 频道 / 社群 | platform 为 telegram / discord |
news | 新闻源 | source_type=news |
onchain | 链上观察 | tags 含链上相关或运营标注 |
other | 其他 | 兜底 |
3.3 channel(与 platform 对齐)
| 值 | 说明 |
|---|---|
twitter | X / Twitter |
telegram | Telegram |
discord | Discord |
website | 网站 / RSS / API |
other | 其他 |
3.4 active_status
| 值 | 含义 | S0 赋值规则 |
|---|---|---|
active | 活跃追踪 | dn_crawler_source.status=1 且近 90 天有样本 |
low_activity | 低活跃 | status=1 但 90 天内样本 < 阈值(默认 5) |
pending_review | 待复核 | 新登记、未绑 KOL、或运营未确认 |
paused | 暂停 | status=2 |
retired | 淘汰 | is_deleted=1 或运营标记(不进 baseline) |
4. 样本字段(samples_baseline)
4.1 字段表
| 字段 | 类型 | S0 必填 | 说明 | 枚举 / 格式 | DH 映射 |
|---|---|---|---|---|---|
sample_id | string | ✓ | 稳定样本 ID | rn_{id} | dn_raw_news.id |
news_id | string | 建议 | 内容去重键 | 32 位 MD5 | dn_raw_news.news_id |
source_id | string | ✓ | 所属信源 | cs_{id} | source_id |
raw_ref | string | ✓ | 原始记录引用 | URL 或 dh://raw_news/{id} | source_url 或构造 |
raw_content | string | ✓ | 原始正文或可审计摘要 | 见 §4.3 | content;合规限制时用摘要 |
published_at | datetime | ✓ | 原始发布时间 | ISO 8601 | source_timestamp |
captured_at | datetime | ✓ | DH 捕获时间 | ISO 8601 | created_at |
ingested_at | datetime | ✓ | 入库 / 交接时间 | ISO 8601 | S0 同 created_at |
symbols | string | 建议 | 涉及标的 | 逗号分隔,例 BTC,ETH | subjects JSON |
direction | string | 建议 | 方向线索 | 见 §4.2 | S0 可空或 unknown |
time_horizon | string | 建议 | 交易周期 | 见 §4.2 | S0 可空或 unknown |
entry_hint | string | 建议 | 入场线索 | 自由文本 | S0 可空 |
exit_hint | string | 建议 | 退出线索 | 自由文本 | S0 可空 |
risk_hint | string | 建议 | 风险提示 | 自由文本 | S0 可空 |
parse_status | string | ✓ | 可解析性 | 见 §4.2 | 规则计算,见 §5.2 |
quality_flags | string | 建议 | 质量标记 | 逗号分隔 | 见 §5.3 |
source_author | string | 可空 | 私域发布者 | — | source_author |
language | string | 建议 | 语言 | — | language |
title | string | 可空 | 标题 | — | title |
4.2 枚举值
direction:long | short | neutral | risk_alert | unknown
time_horizon:intraday | short_term | swing | medium_long | unknown
parse_status:
| 值 | 含义 | S0 判定(满足即成立) |
|---|---|---|
parsable | 可尝试生成策略种子 | 有 published_at、非空 raw_content、有 raw_ref,且 quality_flags 不含 invalid |
needs_review | 需人工复核 | 缺 source_url 仅内文、或交易线索全空但内容像信号 |
unparsable | 不可解析 | status=3(失败/无效)或 raw_content 过短(< 20 字符)且无 URL |
4.3 raw_content 与合规
| 场景 | 导出内容 |
|---|---|
| 可对外全文 | 完整 content |
| 私域 / 授权限制 | ≤500 字摘要 + raw_ref 指向 DH 内链;manifest 注明 content_redacted=true |
| 超长正文 | 全文保留,manifest 可注明 max_export_chars |
5. 校验与过滤规则
5.1 信源入包条件
is_deleted=0;source_type=signal且已绑kol_id(S0 第一批默认范围,可配置);active_status≠retired;- 近 90 天内至少 1 条有效样本(
dn_raw_news.status != 3)。
5.2 parse_status 计算伪代码
if raw_news.status == 3: unparsable
else if empty(content) or len(content) < 20 and no source_url: unparsable
else if has published_at and content and raw_ref and not duplicate-invalid: parsable
else if missing source_url but has content: needs_review
else: needs_review
5.3 quality_flags
| 标记 | 触发条件 |
|---|---|
duplicate | repeat_news_id 非空 |
invalid | status=3 |
missing_published | source_timestamp 为空 |
missing_url | source_url 为空 |
stale | published_at 早于窗口起点(默认 90 天) |
noise | 运营或 S1 Agent 标注(S0 可空) |
5.4 去重
- 样本:同一
news_id仅保留一条; - 信源:同一
external_ref+channel仅保留一条,合并时保留sample_count_90d最高者。
6. manifest.json 必填键
| 键 | 说明 |
|---|---|
schema_version | dh-wp-001-s0-v1 |
generated_at | 导出 UTC 时间 |
sample_window_days | 默认 90 |
samples_per_source_max | 默认 50 |
source_count / sample_count | 记录数 |
time_semantics_note | 固定文案:S0 captured_at === ingested_at |
candidate_filter | 例 signal + kol_id + status=1 |
content_redaction | 是否摘要导出 |
dh_repo_commit | 可选,导出脚本所在 commit |
7. Trading Matrix 反馈字段(S0 占位)
S0 文件不包含下列字段;TM 试消费后写入 试消费反馈记录,S1 起落库 dn_tm_source_feedback。
| 字段 | 说明 |
|---|---|
tm_seed_status | 是否已生成策略种子 |
tm_validation_status | 是否进入回测 / 模拟 / 小资金实盘 |
tm_asset_status | 观察 / 失败 / 暂停 / 核心候选等 |
tm_feedback_reason | 反馈理由 |
tm_last_feedback_at | 最近反馈时间 |
8. 与 Open API 的字段别名(过渡期)
在 export_tm_baseline CLI 完成前,TM 可通过现有 Open API 拉取部分样本:
| baseline 字段 | Open API(POST /v1/open/kol/source-signal-list)现状 | 缺口 |
|---|---|---|
sample_id | id(数字) | 需映射为 rn_{id} |
published_at | source_timestamp(Unix) | 需 ISO8601 |
raw_content | content | ✓ |
raw_ref | — | 待扩展 source_url |
captured_at / ingested_at | — | 待扩展 |
扩展项跟踪:工程仓 S0-B03(open.api)。
9. 版本变更
| 版本 | 日期 | 变更 |
|---|---|---|
dh-wp-001-s0-v1 | 2026-05-27 | 初版冻结:基于 DH 工程仓表结构与 DH-WP-001 任务包 §5 对齐 |
Changelog / 演化记录
2026-05-27:创建 S0 baseline 字段字典 v1,明确 ID 规则、时间语义、枚举、映射与校验规则。