RAGパイプライン設計
Ingestion フロー(ドキュメント登録時)
Retrieval フロー(チャット時)
プロンプト設計(チャットAPI)
プロンプトインジェクション対策:
- ユーザー入力は500文字上限
- ユーザー入力部分を
---で明確に区切る - 質問内容をすべてロギングし、異常パターンを検知可能にする
レスポンス形式
Mermaid構文チェック(バックエンド):
re.search(r'```mermaid\n(.+?)\n```', response, re.DOTALL)で抽出- 許可リスト(
flowchart,sequenceDiagram,gantt等)に含まれる図タイプのみ通過 - 構文エラーまたは許可リスト外の場合は
mermaid: nullとして返却
フロントエンド設計
画面一覧
管理者向け
- ログイン画面
/login - パスワード変更画面
/change-password(must_change_password=true時に強制リダイレクト) - ダッシュボード
/admin— 登録ドキュメント数・カテゴリ統計・Ingestion失敗アラート - ドキュメント一覧
/admin/documents— 検索・フィルタ・Ingestionステータス表示 - ドキュメント詳細・編集
/admin/documents/:id— バージョン管理・再Ingestionボタン付き - カテゴリ管理
/admin/categories - ユーザー管理
/admin/users
社員向け
- チャット画面
/chat— メッセージ入力・Mermaid図表示・カテゴリフィルタ・Mermaidトグル
JWT認証フロー(HttpOnly Cookie方式)
Mermaid.jsセキュリティ設定(必須)
主要コンポーネント
ChatWindow— メッセージ一覧表示・自動スクロールMessageBubble— テキスト(react-markdown) + Mermaid図(サニタイズ済み)レンダリングMermaidToggle— Mermaid図出力ON/OFFのUIトグルDocumentUploadForm— ドキュメント登録(Drag&Drop対応)VersionHistoryTable— バージョン履歴・復元ボタン・IngestionステータスバッジIngestionStatusBadge— pending/processing/completed/failed の視覚表示CategoryFilter— チャット画面でのカテゴリ絞り込み(複数選択)SourceAccordion— 引用元ドキュメントの折りたたみ表示
状態管理
- Zustand — ユーザー情報(role, name, must_change_password)のみ。JWTトークンは保持しない
- React Query (TanStack Query) — APIデータフェッチ・キャッシュ
- axios —
withCredentials: trueを基本設定。401時のRefreshトークンリトライインターセプター