対象: VS Code main (ローカル Mac) で実行する main session 担当者 (= 代表取締役 自身)

前提:

  • sub セッションで作成済の ADR-0019 + 本ディレクトリの migration_overview.md を読了している
  • 既存 _template.md / ADR-0001〜0018 は触らない
  • 本セッション (sub) ではコード実装・Cloudflare 環境構築・GitHub Actions ワークフロー作成は 行わない

Step 1. プロジェクト構造作成 (30 min)

  1. git pull origin main
  2. drp/ を新規作成 (またはモノレポ pnpm workspace で既存に追加)
  3. pnpm init + pnpm add @langchain/langgraph @langchain/openai hono (Gateway 経由なら OpenAI 互換 SDK 1 本で 3 プロバイダ呼出可。LangChain provider package は個別追加なし)
  4. tsconfig.json strict mode
  5. wrangler.tomlCloudflare Workers 設定 (Routes / Secrets)
  6. Cloudflare Workers Paid plan ($5/月) に upgrade (Gateway 往復 + LLM 推論で CPU 30s 必要、Free tier 50ms では不足)

Step 2. LangGraph node 実装 (1–2 day)

migration_overview.md のノード対応表に従って、以下を実装:

  • src/nodes/triage.ts (Dify N1 = Gate 0 相当): 既存 Triage v0.2 プロンプトを移植
  • src/nodes/scoring.ts (Dify N4 = Gate 4): Scoring v0.1 プロンプト移植 + 50 点ロジック
  • src/nodes/body_generation.ts (Dify N7): docs/adr/_template.md 準拠生成
  • src/nodes/slug.ts (Dify N8): タイトル → snake_case
  • src/nodes/webhook.ts (Dify N9〜N13 統合): GitHub Actions 起動

StateGraph の channels で user_input / triage_json / scoring_json / adr_body_md / adr_slug / adr_number / pr_url を定義。

Step 3. LiteLLM Gateway 構築 + 統合 (1 day)

3-A. LiteLLM Gateway を GCP Cloud Run にデプロイ (4 hour)

  • gcloud run deploy litellm-gateway --image ghcr.io/berriai/litellm:main (Vertex AI と同 GCP Project に配置)
  • config.yaml で 3 プロバイダ登録 (vertex_ai/gemini-flash / anthropic/claude-sonnet / openai/gpt-4)
  • API キーは GCP Secret Manager で集中管理 (Cloud Run 環境変数直書き禁止)
  • 機密情報マスキング callback 実装 (取引先名・金額・scriptId・OAuth を pre-call で除去)。マスキング失敗時は呼出を fail-fast。
  • Virtual Key 発行: 業務委託エンジニア用 / 開発用 / 本番 LangGraph 用に分離
  • Cloud Run min instances = 1 で cold start 回避 (個人開発でも月数百円の差)

3-B. LangGraph から Gateway 呼出統合 (4 hour)

  • src/llm/gateway.ts: @langchain/openai の ChatOpenAI で baseURL に Cloud Run URL を指定 (LiteLLM が OpenAI 互換エンドポイント提供)
  • Cloudflare Workers Secrets に Gateway URL + Virtual Key を保存 (wrangler secret put)
  • ノードごとにモデル指定: triage = gemini-flash / body = claude-sonnet / scoring = gpt-4 等
  • LangChain provider package (@langchain/google-vertexai, @langchain/anthropic) は 使用しない (pre-1.0 breaking changes リスクを Gateway で隔離)

Step 4. Hono Web UI 最小自作 (4 hour)

  • src/server.ts: POST /draft (Web form 入力 → LangGraph 実行 → レスポンス)
  • public/index.html: HTML form (起案者・タイトル・コンテキスト・候補)
  • Cloudflare Workers にデプロイ → 業務委託エンジニア用 URL 共有
  • 認証は Cloudflare Access + Google ログイン (個人開発でも 50 user まで無料)

Step 5. GitHub Actions 連携 (2 hour)

  • .github/workflows/drp.yml 新規作成
  • LangGraph webhook → 採番 → ブランチ + PR 作成
  • 排他制御: concurrency: group: adr-numbering, cancel-in-progress: false
  • Cloudflare Workers Secret に GitHub PAT 配置 (wrangler secret put GH_PAT)

Step 6. adr-kit 導入 (30 min)

# 6-1. adr-kit プラグイン導入
/plugin marketplace add rvdbreemen/adr-kit
/plugin install adr-kit@rvdbreemen-adr-kit  # v0.11.0 で pin 検討
/reload-plugins

# 6-2. /adr-kit:setup は **実行しない**
# 理由: LangGraph 採番ルールと CLAUDE.md「ADR Kit Rules」セクションが衝突するため
# (詳細: docs/_internal/adr_skill_setup/langgraph-adrkit-boundary.md)

# 6-3. BizLink ドメイン素材を adr-kit references/ にコピー
cp docs/_internal/adr_skill_setup/bizlink-domain.md \
   .claude/skills/adr-kit/references/

cp docs/_internal/adr_skill_setup/langgraph-adrkit-boundary.md \
   .claude/skills/adr-kit/references/

# 6-4. CLAUDE.md References セクションに 1 行手動追記
#   - ADR ツールチェーン: docs/adr/0019-drp-migration.md

Step 7. lint 動作検証 (15 min, 非破壊)

# 7-1. 1 本動作確認
/adr-kit:lint docs/adr/0001-ssot-invoice.md

# 7-2. 全 18 本実行、pass 率記録
/adr-kit:lint docs/adr/

# 撤退条件: pass 率 50% 未満なら adr-kit 撤去 → LangGraph に lint node 追加
# (ADR-0019 撤退条件参照)

pass 率を記録: docs/_internal/decision_pipeline/langgraph_migration/lint_baseline.md (新規, main session で作成)。

Step 8. Dify 退役

# 8-1. Dify Cloud Workflow を Archive (削除はしない)
# Dify Cloud Console で Workflow をエクスポート → archives/dify-phase1-2026-05-07.yaml として保存

# 8-2. 既存設計書 6 本に Retired マーク追加
# docs/_internal/decision_pipeline/README.md 冒頭に退役マーク
# phase2a_design.md / dify_workflow_spec.md / dify_setup_instructions.md に「Status: Retired (2026-05-08, ADR-0019)」追記
# operator_guide.md / test_cases.md は LangGraph 版にスクリーンショット差替

Rollback (LangGraph 実装で 1 週間以上 ADR 起案できない事態)

  1. archives/dify-phase1-2026-05-07.yaml を Dify Cloud に Restore
  2. ADR-0019 を Rejected に更新、撤退理由を本文末尾に記録
  3. docs/_internal/changelog.md に rollback entry 追加 (構造化書式)
  4. main / sub workspace で「Decision Pipeline は Dify Phase 1 ベースに巻き戻し」を周知

Verification (実装完了の判定)

  • Cloudflare Workers /exec URL で起案フォームが開く
  • LangGraph webhook → GitHub Actions → PR 作成が end-to-end で動く
  • Triage v0.2 / Scoring v0.1 の TC-01〜TC-07 がすべて pass (test_cases.md 参照)
  • LiteLLM Gateway のマスキングが取引先名・金額・scriptId をすべて除去している
  • adr-kit lint pass 率を記録 (撤退条件 50% の基準値判定)
  • Dify Cloud Workflow が Archive 済 (削除不可)
  • 既存 _template.md / ADR-0001〜0018 は無変更
  • CLAUDE.md References に ADR-0019 リンク 1 行追加済

参照

  • ADR-0019 (docs/adr/0019-drp-migration.md)
  • migration_overview.md (docs/_internal/decision_pipeline/langgraph_migration/migration_overview.md)
  • RQ-038 (docs/_internal/research_prompts/RQ-038_adr_skill_architecture_result.md)
  • adr-kit セットアップ素材 (docs/_internal/adr_skill_setup/)
  • workspace_rules.md (docs/_internal/workspace_rules.md)