本文档说明 darkline 案例数据如何落库。它只描述案例层入口,不替代完整事件链表结构。
案例数据最小关系:
dl_case_import_batch
-> dl_case_record
-> dl_darkline_hypothesis
-> dl_chain_state
解释:
dl_case_import_batch 记录一次导入或一次案例包。dl_case_record 记录单个案例、正文快照和来源 hash。dl_darkline_hypothesis 记录案例对应的暗线假设主入口。dl_chain_state 记录当前链路状态和消费等级。用途:记录案例导入批次。
主键:
import_batch_id
字段:
| 字段 | 含义 |
|---|---|
| import_batch_id | 导入批次 ID |
| source_name | 来源名称 |
| source_kind | 来源类型 |
| source_document_path | 来源文档或来源包路径 |
| source_hash | 来源内容 hash |
| case_count | 本批案例数 |
| data_dir | 本批文件资产目录 |
| imported_at | 导入时间 |
| note | 备注 |
用途:记录单个案例。
主键:
case_id
字段:
| 字段 | 含义 |
|---|---|
| case_id | 案例 ID |
| import_batch_id | 所属批次 |
| case_order | 批次内顺序 |
| case_title | 案例标题 |
| case_family | 案例家族,例如监管风险、困境修复、反常识 K 线 |
| case_level | L1 / L2 / L3 / UNKNOWN |
| current_status | 当前状态 |
| case_body_md | 案例正文快照 |
| case_body_hash | 正文 hash |
| local_body_path | 本地正文文件路径 |
| source_document_path | 来源文档路径 |
| source_section_heading | 来源章节标题 |
| created_at | 创建时间 |
| updated_at | 更新时间 |
用途:把案例挂到暗线假设入口。
主键:
darkline_hypothesis_id
字段:
| 字段 | 含义 |
|---|---|
| darkline_hypothesis_id | 暗线假设 ID |
| case_id | 关联案例 |
| hypothesis_title | 假设标题 |
| darkline_level | 暗线层级 |
| hypothesis_family | 假设家族 |
| hypothesis_status | 假设状态 |
| source_case_body_hash | 来源案例正文 hash |
| created_at | 创建时间 |
| updated_at | 更新时间 |
用途:记录案例链路当前状态。
主键:
state_record_id
字段:
| 字段 | 含义 |
|---|---|
| state_record_id | 状态记录 ID |
| darkline_hypothesis_id | 暗线假设 ID |
| case_id | 案例 ID |
| chain_clarity_status | 链路清晰状态 |
| reality_confirmation_status | 现实验证状态 |
| market_manifestation_status | 市场显影状态 |
| validation_readout_status | 验证读法 |
| current_consumption_level | 当前可消费等级 |
| state_record_time | 状态记录时间 |
| note | 备注 |
历史导入默认状态:
LEGACY_IMPORTED_REVIEW
含义:
消费等级建议:
NO_CONSUMPTION
REVIEW_ONLY
CASEBOOK
MONITOR
CONDITIONABLE_CANDIDATE
历史案例默认:
CASEBOOK
但这只表示可作为案例库材料,不表示可直接作为规则或预测依据。
每次导入至少校验:
case_count == case_body_file_count
dl_case_record 行数 == case_count
dl_darkline_hypothesis 行数 >= case_count
dl_chain_state 行数 >= case_count
case_body_hash 与正文文件一致
manifest 文件存在且所有 artifact_status = READY
导入失败时,文件包仍可保留,但 summary 必须写清:
mysql_import_status = FAILED
mysql_error_type
mysql_error
完整案例不只写最小四张表。进入暗线追踪后,应按以下结构补齐链路数据:
dl_source_document
dl_case_record
-> dl_case_reasoning_step
-> dl_expected_line
-> dl_event_node
-> dl_evidence
-> dl_evidence_node_link
-> dl_impact_target
-> dl_manifestation_bridge
-> dl_alternative_explanation
-> dl_chain_state
各表职责:
| 表 | 作用 |
|---|---|
| dl_source_document | 原始来源或案例来源入口 |
| dl_case_record | 案例主记录、正文快照、来源 hash |
| dl_darkline_hypothesis | 暗线假设主入口 |
| dl_case_reasoning_step | 推理步骤、关键 why 节点、判断变化 |
| dl_expected_line | 如果暗线为真,理论上应发生的 M/B/C/N/L 节点 |
| dl_event_node | 已经发生的现实事件节点 |
| dl_evidence | 证据摘录、证据强度、证据 hash |
| dl_evidence_node_link | 证据、事件、应有之线之间的多对多关系 |
| dl_impact_target | 影响对象,股票、行业、风格、K线或其他输出层 |
| dl_manifestation_bridge | 输出层显影,例如 K线、风格、股票池变化 |
| dl_alternative_explanation | 替代解释和反证 |
| dl_chain_state | 当前链路状态、现实验证状态、市场显影状态、消费等级 |
Full archive 校验建议:
每个 case_id 至少有 1 条 dl_darkline_hypothesis。
每个 case_id 至少有 1 条 dl_expected_line。
每个 case_id 至少有 1 条 dl_case_reasoning_step。
每个 case_id 至少有 1 条 dl_evidence。
每个 darkline_hypothesis_id 至少有 1 条 dl_chain_state。
如果存在 event_node,则必须有 evidence_node_link。
如果存在 manifestation_bridge,则必须有关联 impact_target。
如果 market_manifestation_status 不是 UNKNOWN,则必须有 manifestation 或说明缺口。
判断变化必须新增 chain_state,不允许覆盖旧状态。
没有现实事件、没有市场显影、没有替代解释时,不强行造数据;必须在 dl_chain_state.note 或对应 review 字段里写清缺口。
旧案例迁入后需要执行一次结构合规修复,避免其他 AI 看到缺表后误判数据不符合 darkline 标准。
执行脚本:
python scripts\repair_legacy_case_compliance.py --database tianxia
脚本只做结构合规,不做事实补证:
缺 event_node:补 EVENT_NODE_ARCHIVE_GAP。
缺 manifestation_bridge:补 HELD_BY_MARKET_MANIFESTATION_GAP。
缺 alternative_explanation:补 HELD_BY_ALTERNATIVE_EXPLANATION_GAP。
每条 legacy case 追加一条 *_STATE_LEGACY_COMPLIANCE_V1 状态。
这些补充行只表示“缺口已显式记录”,不能读成“事件已验证 / 市场已显影 / 替代解释已排除”。
合规结果应分账:
CASEBOOK_FULL_CHAIN_IMPORTED:完整链路原本已存在。
CASEBOOK_WITH_EXPLICIT_GAPS:结构链路齐,但含 GAP_REVIEW 缺口。