全体(工程1 + 工程2)
工程1:DomainGuide(View Pack)取り込み
目的:View単位(action_xmlid単位)の入口=DomainGuide/仕様を DeciKG に取り込む(冪等)
ソース(あなたの環境の真実)
decikg/packs/view_common01/にある Pack(YAML など)- これが
public.decikg_view_packのソース(あなたの言う通り)
- これが
取り込み先(Postgres)
public.decikg_view_packaction_xmlidをキーに UPSERT(冪等)yaml_text(原文保持)json_doc(正規化)source_hash(差分判定)
反映先(Neo4j)
- 例:
(:ViewCommon {action_xmlid,...})など “仕様ノード”- ※工程2のDoD(観測データのリレーション)とは別枠だけど、後続の推論の基盤
“Dev-portalからは YAMLで吐く” 前提
- 将来の運用では Pack の入力は
exchange/inbox/packs/*.yamlのような “受け口” に Dev-portal が吐くYAMLが来る想定
- ただし 現状はそれの代わりに
decikg/packs/view_common01/をソースにしている(今回の実装)
工程2:Materials(観測データ)取り込み → Neo4j投影
目的:推論・ランキングの根拠になる観測データ(fact/odoo-like)を Neo4j に載せる
DoD:Opp→Signal/Outcome/EmailEvent/PhraseStat が Neo4j で確認できる
ソース(今回の入力)
exchange/inbox/materials/*.csv- ※今回だけCSV(将来はDev-portalがYAMLを吐く、というのは “Pack側” の話であって、観測データがYAMLになるとは限らない想定でもOK)
工程2-1:CSV → JSONL 変換(完了)
- 変換後の置き場(v0.1仕様)
import_dir/materials/*.jsonl- 1行1レコード
- 共通フィールド:
kind,key,refs,attrs,ts,source - kind→Label は確定済み(Company/Period/…)
工程2-2:JSONL → Postgres staging(完了)
public.decikg_material_raw(raw保持)- 再実行・差分追跡・品質確認のための “一次保管”
工程2-3:Postgres → Neo4j 投影(これから)
入力ソースは JSONLではなく Postgres staging(決定済み方針)
public.decikg_material_rawを読み、- kindごとの handler で MERGEノード、
- refs で MERGEリレーション を張る
DoDの最低限リレーション(v0.1)
- (Opportunity)-[:HAS_SIGNAL]->(ProposalSignal)
- (Opportunity)-[:HAS_OUTCOME]->(Outcome)
- (Opportunity)-[:HAS_EMAIL_EVENT]->(EmailEvent)
- (Opportunity)-[:HAS_PHRASE_STAT]->(PhraseStat) ※opp_idがある行のみ
- 追加(A) opp_id空の PhraseStat:
- (Partner)-[:HAS_PHRASE_STAT]->(PhraseStat)
「JsonLのDomainGuideはどこに?」への最終回答(今回の構成)
- DomainGuide は materials の JSONL ではない
- いまの DomainGuide のソースは
decikg/packs/view_common01/ - それが Postgres の
public.decikg_view_packに入っている - (必要なら)Neo4jの
:ViewCommonに投影される
“使うファイル”だけをプロセス別に一覧(迷ったらここだけ見る)
工程1(Pack / DomainGuide)
- 入力(今回):
decikg/packs/view_common01/*(YAML等) - 入力(将来運用):
exchange/inbox/packs/*.yaml(Dev-portal吐き出し) - 出力(Postgres):
public.decikg_view_pack - 出力(Neo4j):
:ViewCommon等の仕様ノード
工程2(Materials / 観測データ)
- 入力(今回):
exchange/inbox/materials/*.csv - 中間生成:
import_dir/materials/*.jsonl - staging(Postgres):
public.decikg_material_raw - 投影(Neo4j):Company/Period/…/Opportunity… + DoDリレーション
コメントを残す