# 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 が無効化される