課題(デモで確認された挙動)
「ターン20/20・完了」と表示されるが、なぜ20ターンなのか、いま残り何問なのかが会話中に分からない。ゴールが見えないまま枝葉に時間を使い切ってしまう一因になっている。
Before(現状)
- 上限は
MAX_TURNS = 20 固定。ヘッダーに「ターン N / 20」とだけ表示され、何がどこまで埋まったか(進捗)は見えない。
- 終了判定
isFinished は「最低スロットが充足 かつ MIN_TURNS_BEFORE_FINISH = 4 以上」。上限20に達するとクロージング。20という数字の根拠が曖昧。
- 職員視点では「あと何を答えれば終わるのか」が分からない。
After(あるべき姿)
- 会話中に「何が埋まっていて、残りどのくらいで終わりそうか」が見える(スロット充足度やチェックリスト等の進捗可視化)。
- ターン数上限の決め方を、固定20から「必要な情報が揃ったら早めに終える/足りなければ延ばす」方針に見直す(UX1 の本筋被覆と連動)。
技術的な着手ポイント
lib/server/interview/slots.ts
MAX_TURNS = 20 / MIN_TURNS_BEFORE_FINISH = 4 / isFinished / slotCompleteness(進捗表示の元データに使える)。
components/session/SessionView.tsx
- ヘッダーの
ターン {Math.min(session.currentQuestionIndex, MAX_TURNS)} / {MAX_TURNS} 表示。進捗バー/スロットチェックリストの追加候補箇所。
allQuestionsAsked = currentQuestionIndex >= MAX_TURNS が「完了」ボタン活性条件。
lib/server/interview/controller.ts
currentQuestionIndex の進め方、終了時に MAX_TURNS へジャンプさせる分岐。
- 進捗指標を API レスポンスに含めるか、既存の
extractedData からフロント側で算出するかは要検討。
受け入れ条件
優先度
高(デモ前に効く順で 1 → 3 → 2 の 2 番目)。ターン数を有効活用させ、脱線対策(UX1)を補強する。
このIssueは Slack #gov_ai_agent での議論(Yuki Kawabe / sunagawa)に基づき起票されました。
課題(デモで確認された挙動)
「ターン20/20・完了」と表示されるが、なぜ20ターンなのか、いま残り何問なのかが会話中に分からない。ゴールが見えないまま枝葉に時間を使い切ってしまう一因になっている。
Before(現状)
MAX_TURNS = 20固定。ヘッダーに「ターン N / 20」とだけ表示され、何がどこまで埋まったか(進捗)は見えない。isFinishedは「最低スロットが充足 かつMIN_TURNS_BEFORE_FINISH = 4以上」。上限20に達するとクロージング。20という数字の根拠が曖昧。After(あるべき姿)
技術的な着手ポイント
lib/server/interview/slots.tsMAX_TURNS = 20/MIN_TURNS_BEFORE_FINISH = 4/isFinished/slotCompleteness(進捗表示の元データに使える)。components/session/SessionView.tsxターン {Math.min(session.currentQuestionIndex, MAX_TURNS)} / {MAX_TURNS}表示。進捗バー/スロットチェックリストの追加候補箇所。allQuestionsAsked = currentQuestionIndex >= MAX_TURNSが「完了」ボタン活性条件。lib/server/interview/controller.tscurrentQuestionIndexの進め方、終了時にMAX_TURNSへジャンプさせる分岐。extractedDataからフロント側で算出するかは要検討。受け入れ条件
優先度
高(デモ前に効く順で 1 → 3 → 2 の 2 番目)。ターン数を有効活用させ、脱線対策(UX1)を補強する。