最終更新: 2026/06/22 18:56
LangGraph TS Decision Pipeline 実装手順 (main session)
対象: 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)
git pull origin maindrp/を新規作成 (またはモノレポ pnpm workspace で既存に追加)pnpm init+pnpm add @langchain/langgraph @langchain/openai hono(Gateway 経由なら OpenAI 互換 SDK 1 本で 3 プロバイダ呼出可。LangChain provider package は個別追加なし)tsconfig.jsonstrict modewrangler.tomlで Cloudflare Workers 設定 (Routes / Secrets)- 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_casesrc/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 起案できない事態)
archives/dify-phase1-2026-05-07.yamlを Dify Cloud に Restore- ADR-0019 を Rejected に更新、撤退理由を本文末尾に記録
docs/_internal/changelog.mdに rollback entry 追加 (構造化書式)- main / sub workspace で「Decision Pipeline は Dify Phase 1 ベースに巻き戻し」を周知
Verification (実装完了の判定)
- Cloudflare Workers
/execURL で起案フォームが開く - 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)