プロジェクト

全般

プロフィール

バグ #371

未完了

claude-search API会話管理エンドポイント実装

Redmine Admin さんが13日前に追加. 13日前に更新.

ステータス:
進行中
優先度:
高め
担当者:
-
開始日:
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日前に更新

実装設計メモ

APIエンドポイント優先順位

  1. 最優先: POST /api/v2/conversations(WebUI連携用)
  2. : GET /api/v2/conversations(一覧表示)
  3. : POST /api/v2/conversations/bulk(大量インポート)
  4. : PUT/DELETE(管理機能)

実装上の注意点

  • content_hashによる重複チェック必須
  • 非同期処理でパフォーマンス確保
  • エラーハンドリングの充実
  • WebUIとの連携テスト重要

依存関係

  • WebUI v2デプロイ後にテスト可能
  • ログ機能と並行実装可能

Redmine Admin さんが13日前に更新

  • ステータス新規 から 進行中 に変更

API会話管理エンドポイント実装の着手

チケット#370(WebUI v2デプロイ)が完了したため、本チケットの実装に着手します。

1. 現状確認

  1. WebUI v2が実装済み

    • タブインターフェースでインポート機能のUIが用意されている
    • APIエンドポイント未実装のため機能しない状態
  2. APIの状態

    • 現在APIコンテナは不安定な状態
    • 修正が必要(データベース接続、環境変数など)
  3. 優先実装項目

    • 会話追加エンドポイント(POST /api/v2/conversations)
    • 会話一覧エンドポイント(GET /api/v2/conversations)
    • バルクインポート(POST /api/v2/conversations/bulk)

2. 実装計画

  1. APIコンテナの安定化

    • データベース接続の正常化
    • ロギング機能の強化
  2. 会話管理APIの実装

    • RESTful APIエンドポイント設計
    • JSONスキーマの定義
    • バリデーション機能
  3. テストと検証

    • 各エンドポイントの単体テスト
    • 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安定化作業を行い、順次エンドポイントを実装していきます。

他の形式にエクスポート: Atom PDF