操作
バグ #371
未完了claude-search API会話管理エンドポイント実装
ステータス:
進行中
優先度:
高め
担当者:
-
開始日:
2025-06-08
期日:
進捗率:
0%
予定工数:
説明
概要¶
claude-search API v2.2 - 会話管理エンドポイント実装
親チケット¶
#369 claude-search Phase3中期改善
背景¶
WebUI v2のインポート機能に対応するため、会話の追加・管理APIが必要。
現在は検索のみ可能で、データ追加はSQLで直接実行している状態。
実装内容¶
1. 会話追加エンドポイント¶
POST /api/v2/conversations
- リクエストボディ:
{ "title": "会話タイトル", "content": "会話内容", "claude_conversation_id": "元のID(オプション)", "created_at": "2025-06-08T12:00:00Z", "tags": ["タグ1", "タグ2"], "metadata": {} }
- 重複チェック(content_hashで判定)
- 409 Conflictで重複時エラー
2. 会話一覧エンドポイント¶
GET /api/v2/conversations?limit=20&offset=0
- ページネーション対応
- ソート機能(created_at, updated_at)
- フィルタリング(tags, date_from, date_to)
3. 会話詳細エンドポイント¶
GET /api/v2/conversations/{id}
- UUID指定で詳細取得
- メッセージ履歴含む
4. 会話更新エンドポイント¶
PUT /api/v2/conversations/{id}
- タイトル、タグ更新
- メタデータ更新
5. 会話削除エンドポイント¶
DELETE /api/v2/conversations/{id}
- 論理削除(is_active=false)
- 物理削除オプション
6. バルクインポート¶
POST /api/v2/conversations/bulk
- 複数会話の一括追加
- トランザクション処理
- プログレスレポート
技術仕様¶
- FastAPI実装
- Pydanticモデル定義
- asyncpgでDB操作
- content_hashはSHA256使用
テスト項目¶
- 単体会話追加
- 重複チェック
- バルクインポート(100件)
- エラーハンドリング
- ページネーション
成功基準¶
- WebUI v2からJSONインポート可能
- 重複データの自動スキップ
- 1000件/分の処理速度
Redmine Admin さんが13日前に更新
Redmine Admin さんが13日前に更新
- ステータス を 新規 から 進行中 に変更
API会話管理エンドポイント実装の着手¶
チケット#370(WebUI v2デプロイ)が完了したため、本チケットの実装に着手します。
1. 現状確認¶
-
WebUI v2が実装済み
- タブインターフェースでインポート機能のUIが用意されている
- APIエンドポイント未実装のため機能しない状態
-
APIの状態
- 現在APIコンテナは不安定な状態
- 修正が必要(データベース接続、環境変数など)
-
優先実装項目
- 会話追加エンドポイント(POST /api/v2/conversations)
- 会話一覧エンドポイント(GET /api/v2/conversations)
- バルクインポート(POST /api/v2/conversations/bulk)
2. 実装計画¶
-
APIコンテナの安定化
- データベース接続の正常化
- ロギング機能の強化
-
会話管理APIの実装
- RESTful APIエンドポイント設計
- JSONスキーマの定義
- バリデーション機能
-
テストと検証
- 各エンドポイントの単体テスト
- WebUIとの連携テスト
- エラーハンドリングの確認
3. 技術的アプローチ¶
エンドポイント設計:
POST /api/v2/conversations # 単一会話追加
GET /api/v2/conversations # 会話一覧取得
GET /api/v2/conversations/{id} # 会話詳細取得
PUT /api/v2/conversations/{id} # 会話更新
DELETE /api/v2/conversations/{id} # 会話削除
POST /api/v2/conversations/bulk # バルク追加
これからAPI安定化作業を行い、順次エンドポイントを実装していきます。
操作