# チャット型ファネルビルダー 実装状況（「完成してコミット済みか？」への回答）— 2026-07-07

**対象ブランチ**: `feature/funnel-chat-builder`（`main` には未マージ）
**関連**: 計画 `docs/funnel-builder-implementation-plan-20260706.md`／仕様 `docs/funnel-builder-template-specs-20260706.md`／論点整理 `docs/funnel-builder-decisions-20260707.md`

---

## 結論（先に回答）

**チャット部分は実装・コミット済みです。** 計画の 7 テンプレート（②③①④⑦⑥⑤）すべてがチャットで回答→右マップ更新→確定で **private 下書き一式**を生成するところまで動く実装が、`feature/funnel-chat-builder` にコミット・push 済みです。`FEATURE_FUNNEL_BUILDER` が既定 OFF のため、**このブランチをマージしても本番挙動は一切変わりません**（有効化したときだけ現れる）。

ただし **「完全に検証済み」ではありません**。当開発環境は `vendor/` が無く `php artisan migrate` / `php artisan test` を実行できないため、静的検査（PHP 8.4 lint 全通過・文字混入なし・設計監査）までで、**動的な統合テストは未実行**です（下記「残タスク」A-1）。また ⑤ の高度機能（時限CTA・再生期限）は設計判断により**簡易版**での提供です。

---

## 計画の PR 分割（3-2）に対する実装状況

| PR | 内容 | 状況 |
|----|------|------|
| PR1 | feature flag＋入口 | ✅ 実装済（`config/features.php`・OFF時バイト不変の入口）。**phpunit の sqlite分離（C3）は未実施**（下記） |
| PR2 | sessions/messages＋Model＋Controller＋ルート＋UI骨格＋再開一覧 | ✅ 実装済 |
| PR3 | Engine＋Registry＋②＋Validator＋MapBuilder＋右マップ（基準バッジ/不要ノード/要確認） | ✅ 実装済 |
| PR4 | Applier：Funnel＋Page（section margin非依存）＋二重apply防止＋失敗復旧 | ✅ 実装済（復旧は failed→再試行方式。K10 の趣旨を満たす） |
| PR5 | シナリオ＋draftステップ（account_id必須・status=draft・読者項目/公開フォーム設定）＋form_registerへのid埋込＋未設定警告 | ✅ 実装済 |
| PR6 | 公開前チェック＋本番同様テスト（チェックリスト＋既存プレビュー）＋apply無効制御 | ✅ 実装済（本番同様テストは K9 どおりチェックリスト＋マップノード。自動E2Eではない） |
| PR7 | ③LINE取得（LP/サンクス/line_btn/line_qr。LINE配信文面は自動生成しない） | ✅ 実装済 |
| PR8 | ①個別相談（案B：下書きEvent＋/e/{uid}送客） | ✅ 実装済 |
| PR9 | ④Zoom面談（案B） | ✅ 実装済 |
| PR10 | ⑦特商法・プライバシー（静的2ページ） | ✅ 実装済 |
| PR11 | ⑥単発イベント決済（Product/Plan・inactive生成） | ✅ 実装済 |
| PR12 | ⑤自動ウェビナー | ⚠️ **簡易版**で実装（動画＋カウントダウン＋常時CTA）。時限CTA・再生期限は視聴ページの新規機能が前提のため未実装（設計判断で簡易版採用） |

## Definition of Done（3-6）に対する状況

- ✅ 生成ステップは `status='draft'`（`StepMailDispatchService` は `active` のみ送信＝送られない）。**dispatch を実行して送信0件の統合テストは vendor 環境が必要（未実行）**。
- ✅ 生成シナリオは `account_id`＋`mail_delivery_account_id`＋読者項目既定＋公開フォーム設定まで用意（`ScenarioReaderFormDefaults`・`ScenarioPublicFormSetting`）→ 公開すれば LP でフォームが描画される（公開レンダラが `form_register` を `scenario_id` で解決することを確認）。
- ✅ 右マップの配信ノードに時間基準バッジ（基準：登録日／LINE登録日／開催日時／決済完了 等）。
- ✅ 「あとで設定／仮で進める」項目は公開前チェック（チェックリスト＋要確認 warnings）に列挙。
- ✅ flag OFF で `creation_mode=chat` の現行挙動（chat_brief 保存→blank ファネル）が不変。

## UX 原則（仕様 §0）

1問1答＋選択肢チップ＋おすすめ／1つ戻る／あとで設定・仮で進める／時間基準バッジ常時表示／不要ノードは「不要＋理由」／要確認バッジ／公開前チェック→本番同様テストの2段締め／内部用語の言い換え（ラベル・シナリオID等を見せない）— **いずれも実装済み**（`resources/views/funnel/builder/show.blade.php`）。選択肢の補足（hint）表示不具合も修正済み。

---

## 残タスク（「完全完成」までに必要なこと）

| # | 項目 | 種別 | 誰が |
|---|------|------|------|
| A-1 | vendor 環境で `composer install && php artisan migrate && php artisan test --filter=FunnelBuilder` | 検証ゲート（公開前必須） | Cursor/サーバ側 |
| A-2 | `FEATURE_FUNNEL_BUILDER=true` にする判断・段階公開 | 公開判断 | 製品側 |
| C3 | phpunit の sqlite/:memory: 分離（本番DB事故の構造的防止） | テスト基盤 | vendor 環境で全スイート確認しつつ実施（既存テスト互換のため単独では変更しない） |
| PR12+ | ⑤ の本格ウェビナー機能（時限CTA・再生期限）＝視聴ページの新規機能 | 新規開発 | 別設計メモ起票後 |

> 補足: Builder の Feature テストは `DatabaseTransactions`（ロールバック方式・本リポジトリの安全既定）を使用しており、テスト実行で既存データを破壊しません。C3 の sqlite 分離は「全テストスイートを sqlite で通す」広域変更のため、既存テストの互換を vendor 環境で確認しながら行うべきで、当環境の盲目変更は避けています。

---

## コミット（このブランチ、新しい順の主なもの）

- `f9cbfa7` failed apply からの復旧＋選択肢hint表示（K10・UX）
- `cab61ef` docs: C-1/C-2 実装反映
- `448d6c7` ①④（案B）＋⑤簡易版テンプレ追加
- `5c6db2a` B-4 複数アカウント時の使用先明示
- `4e49e31` B-1 ③LINEドリップ空を完了画面に明示
- `1cc9626` B-2 決済プラン inactive 生成
- `c9cc7d3` ⑥決済テンプレ／`03c3a6b` ⑦法務／`77de29a` ③LINE＋汎用化／`1f32a8d` Controller/routes/views/Applier/tests／`52afc17` 基盤（flag・テーブル・Engine・②）

**まとめ**: チャット機能は 7 テンプレすべて実装・コミット済み・OFFで既存不変。残るのは「実行環境での動的検証（A-1）」「公開判断（A-2）」「⑤高度機能の新規開発」であり、コード実装としてのチャット部分は仕上がっています。
