目的:システムをどのような責務単位に分割するかを定義する。 「何がどこに属するか」を明確にすることで、④UML・⑥技術選定・⑦実装の設計判断の根拠とする。
📐 FigJam で閲覧・編集:
https://www.figma.com/online-whiteboard/create-diagram/5539c88f-e618-456d-85c1-69d746746c24
| 責務 | 説明 |
|---|---|
| 画面描画・ルーティング | ページ遷移・各画面のレンダリング |
| ペルソナ選択UI | ユーザーがペルソナを選択・確認できるインターフェース(選択は任意。未選択時はランダム自動選択される旨を表示) |
| 複数カラム回答表示 | 選択されたペルソナ数に応じたカラムレイアウトの制御 |
| ストリーミング表示 | バックエンドからの逐次レスポンスをリアルタイムに表示 |
| 認証状態の管理 | ゲスト/ログインユーザーに応じた表示・操作の分岐 |
| バリデーション | 質問入力の文字数制限など、最低限のフロント側チェック |
フロントエンドが持たないもの
| 責務 | 説明 |
|---|---|
| 認証・認可 | 認証基盤と連携し、ゲスト/ログインユーザーを識別。ログイン必須エンドポイントの保護 |
| レート制限 | User単位でのリクエスト回数を管理し、上限超過時はエラーを返す |
| LLM APIの呼び出し | ペルソナのシステムプロンプトとQuestionを組み立て、複数ペルソナ分を並列リクエスト(Groq API経由) |
| APIキー管理 | Groq APIキーをサーバー内の環境変数で管理。フロントエンドには一切公開しない |
| ペルソナ管理 | PresetPersonaの定義管理・CustomPersonaのCRUD |
| データ永続化 | CustomPersonaのCRUD・RateLimitの管理(ログインユーザーのみ)。チャット履歴はDBに保存しない |
| ストリーミング制御 | Groqのストリーミングレスポンスをフロントエンドに中継 |
バックエンドが持たないもの