# Ask-AI Integration Implementation ## 概要 oauth_new アプリに ask-AI 機能を統合しました。この機能により、ユーザーはAIと対話し、その結果を atproto に記録できます。 ## 実装されたファイル ### 1. `/src/hooks/useAskAI.js` - ask-AI サーバーとの通信機能 - atproto への putRecord 機能 - チャット履歴の管理 - イベント送信(blog との通信用) ### 2. `/src/components/AskAI.jsx` - チャット UI コンポーネント - 質問入力・回答表示 - 認証チェック - IME 対応 ### 3. `/src/App.jsx` の更新 - AskAI コンポーネントの統合 - Ask AI ボタンの追加 - イベントリスナーの設定 - blog との通信機能 ## JSON 構造の記録 `./json/` ディレクトリに各 collection の構造を記録しました: - `ai.syui.ai_user.json` - ユーザーリスト - `ai.syui.ai_chat.json` - チャット記録(空) - `syui.syui.ai_chat.json` - チャット記録(実データ) - `ai.syui.ai_chat_lang.json` - 翻訳記録 - `ai.syui.ai_chat_comment.json` - コメント記録 ## 実際の ai.syui.log.chat 構造 確認された実際の構造: ```json { "$type": "ai.syui.log.chat", "post": { "url": "https://syui.ai/", "date": "2025-06-18T02:16:04.609Z", "slug": "", "tags": [], "title": "syui.ai", "language": "ja" }, "text": "質問またはAI回答テキスト", "type": "question|answer", "author": { "did": "did:plc:...", "handle": "handle名", "displayName": "表示名", "avatar": "アバターURL" }, "createdAt": "2025-06-18T02:16:04.609Z" } ``` ## イベント通信 blog(ask-ai.js)と OAuth アプリ間の通信: ### 送信イベント - `postAIQuestion` - blog から OAuth アプリへ質問送信 - `aiProfileLoaded` - OAuth アプリから blog へ AI プロフィール送信 - `aiResponseReceived` - OAuth アプリから blog へ AI 回答送信 ### 受信イベント - OAuth アプリが `postAIQuestion` を受信して処理 - blog が `aiResponseReceived` を受信して表示 ## 環境変数 ```env VITE_ASK_AI_URL=http://localhost:3000/ask # ask-AI サーバーURL(デフォルト) VITE_ADMIN_HANDLE=ai.syui.ai VITE_ATPROTO_PDS=syu.is VITE_OAUTH_COLLECTION=ai.syui.log ``` ## 機能 ### 実装済み - ✅ ask-AI サーバーとの通信 - ✅ atproto への question/answer record 保存 - ✅ チャット履歴の表示・管理 - ✅ blog との双方向イベント通信 - ✅ 認証機能(ログイン必須) - ✅ エラーハンドリング・ローディング状態 - ✅ 実際の JSON 構造に合わせた実装 ### 今後のテスト項目 - ask-AI サーバーの準備・起動 - 実際の質問送信テスト - atproto への putRecord 動作確認 - blog からの連携テスト ## 使用方法 1. 開発サーバー起動: `npm run dev` 2. OAuth ログイン実行 3. "Ask AI" ボタンをクリック 4. チャット画面で質問入力 5. AI の回答が表示され、atproto に記録される ## 注意事項 - ask-AI サーバー(VITE_ASK_AI_URL)が必要 - 認証されたユーザーのみ質問可能 - ai.syui.log.chat への書き込み権限が必要 - Production 環境では logger が無効化される