親: #1
依存: #2 (A2), #3 (A3)
目的
固定10問+適応生成のモデルをやめ、「スキーマスロット(steps/connections/exceptions/incidents/gaps)が充足するまで深掘りを選ぶ」目標駆動コントローラに置き換える。
実装範囲
lib/server/interview/controller.ts の置換
- 「次に埋めるべきスロット」を決定する関数(不足度・重要度・直近ターン関連度のスコアリング)
- スロット→質問テンプレのルーティング
- 早期終了条件(最低スロット充足 + 連続2ターン情報増加なし)
lib/server/interview/questions.ts を縮小: テンプレのみ残し、固定リストは廃止
- セッション状態に
currentQuestionIndex の代わりに slotProgress を持たせる(or 維持しつつ進捗UIだけ書き換え)
完了条件
Sprint 0-1 の受け入れシナリオが「スロット駆動」で動く(業務名・目的・法令・関係者・主要ステップが揃ったら自然に深掘りフェーズに進む)
- 必要なら 5問以下で終了することもあれば、15問以上聞くこともあり得る挙動
関連
- 現状:
lib/server/interview/controller.ts, questions.ts, followup.ts
親: #1
依存: #2 (A2), #3 (A3)
目的
固定10問+適応生成のモデルをやめ、「スキーマスロット(steps/connections/exceptions/incidents/gaps)が充足するまで深掘りを選ぶ」目標駆動コントローラに置き換える。
実装範囲
lib/server/interview/controller.tsの置換lib/server/interview/questions.tsを縮小: テンプレのみ残し、固定リストは廃止currentQuestionIndexの代わりにslotProgressを持たせる(or 維持しつつ進捗UIだけ書き換え)完了条件
Sprint 0-1の受け入れシナリオが「スロット駆動」で動く(業務名・目的・法令・関係者・主要ステップが揃ったら自然に深掘りフェーズに進む)関連
lib/server/interview/controller.ts,questions.ts,followup.ts