操作
バグ #361
未完了claude-searchサービス修正計画
ステータス:
進行中
優先度:
急いで
担当者:
-
開始日:
2025-06-07
期日:
進捗率:
0%
予定工数:
説明
概要¶
claude-searchサービスの問題修正計画
親チケット¶
#360 claude-searchサービスの現状調査と改善
修正計画詳細¶
フェーズ1: 緊急修正(優先度: 高)¶
1.1 APIのSQLクエリ修正¶
-
問題:
/app/main.py
33行目のSQLクエリが不完全 -
現状:
WHERE title LIKE LIMIT 10
($1プレースホルダー欠落) -
修正:
WHERE title LIKE $1 LIMIT 10
- 作業時間: 15分
- 影響: 検索機能の復旧
1.2 データベース接続文字列の修正¶
-
問題: ハードコードされたコンテナ名
a863ecbecef0_claude-search-db
-
修正: 環境変数またはサービス名
claude-search-db
を使用 - 作業時間: 20分
フェーズ2: インフラ整理(優先度: 中)¶
2.1 重複コンテナの整理¶
- 現状: claude-search-ui と claude-search-web の2つのNginxコンテナ
-
作業:
- 各コンテナの役割確認
- 不要なコンテナの停止・削除
- docker-compose.yml の整理
- 作業時間: 30分
2.2 Nginx設定の修正¶
-
ファイル:
/etc/nginx/sites-enabled/claude.call2arm.com.conf
-
修正内容:
# 現状: proxy_pass http://192.168.208.3:3005; # 修正: proxy_pass http://claude-search-api:8000;
- 作業時間: 20分
フェーズ3: 品質改善(優先度: 低)¶
3.1 ヘルスチェックの改善¶
- APIのヘルスチェックエンドポイント強化
- タイムアウト設定の調整
- 作業時間: 30分
3.2 ログ設定の改善¶
- エラーログの詳細化
- ログローテーション設定
- 作業時間: 20分
フェーズ4: テストと検証¶
4.1 動作確認¶
- 検索機能のテスト
- ヘルスチェックの確認
- Nginx経由でのアクセステスト
- 作業時間: 30分
作業手順¶
1. バックアップ¶
cd /root/claude-search-system
cp api/main.py api/main.py.backup
docker-compose -f docker-compose-api.yml ps > containers_backup.txt
2. API修正¶
# SQLクエリ修正
docker exec claude-search-api sed -i 's/WHERE title LIKE LIMIT/WHERE title LIKE $1 LIMIT/' /app/main.py
# 再起動
docker-compose -f docker-compose-api.yml restart claude-search-api
3. コンテナ整理¶
# 状態確認
docker ps -a | grep claude-search
# 不要なコンテナ停止
docker stop [不要なコンテナID]
docker rm [不要なコンテナID]
4. Nginx設定更新¶
# 設定編集
sudo nano /etc/nginx/sites-enabled/claude.call2arm.com.conf
# 構文チェック
sudo nginx -t
# リロード
sudo systemctl reload nginx
所要時間¶
- 合計作業時間: 約3時間
- 緊急修正のみ: 約35分
リスクと対策¶
- リスク: 本番環境での直接修正
- 対策: 各ステップでバックアップとロールバック手順を準備
成功基準¶
- APIのヘルスチェックがhealthyになる
- 検索機能が正常に動作する
- claude.call2arm.comでアクセス可能
- エラーログが出力されない
Redmine Admin さんが13日前に更新
フェーズ1完了報告¶
実施内容¶
-
バックアップ作成 ✅
- api_backup_20250607 作成
- containers_backup_20250607.txt 作成
-
SQLクエリ修正 ✅
- main.py 33行目:
WHERE title LIKE $1 LIMIT 10
に修正 - 検索機能が正常動作することを確認
- main.py 33行目:
-
DB接続文字列修正 ✅
- ハードコードされたコンテナIDを
claude-search-db
に変更 - 接続成功を確認
- ハードコードされたコンテナIDを
-
APIヘルスチェック ✅
-
/api/v2/health
が{"status": "healthy", "database": "connected"}
を返却 - 検索エンドポイントが正常応答(500エラー解消)
-
フェーズ2部分実施¶
-
重複コンテナ削除 ✅
- claude-search-ui を停止・削除(claude-search-webを使用)
動作確認結果¶
# APIルート
{"status":"ok","version":"2.0.0"}
# 検索テスト
{"results": [], "total": 0} # 正常応答
# ヘルスチェック
{"status": "healthy", "database": "connected"}
残作業¶
- Nginx設定のコンテナ名ベース化
- 完全な動作テスト
緊急修正は完了しました。
Redmine Admin さんが13日前に更新
一貫性のあるコード改善計画¶
コードレビューと改善作業を進めた結果、以下の実施計画を提案します。
1. 段階的なデプロイアプローチ¶
-
UI改善(完了)
- WebUI v2のデプロイを実施
- 新タブインターフェースを実装
- 検索・設定・インポート・About画面を準備
-
API安定化(次のステップ)
- APIコンテナの再構築と安定化
- データベース接続の信頼性向上
- エラーハンドリングの改善
-
機能拡張(後続タスク)
- 全文検索機能の実装
- 会話管理エンドポイントの実装
- ログ機能とモニタリングの強化
2. アクションアイテム¶
2.1 APIの安定化(優先度:高)¶
- バックアップから正常なAPIコードを復元
- 環境変数の一貫した使用を確保
- ヘルスチェックの改善
2.2 全文検索の実装(優先度:中)¶
- PostgreSQLの
search_vector
カラムを活用 - 検索精度の向上とスコアリング
- 検索結果のハイライト表示
2.3 会話管理API(優先度:中)¶
- 会話の追加・編集・削除APIの実装
- JSON形式でのインポート/エクスポート
- タグ付け機能
2.4 ログ機能(優先度:低)¶
- ファイルベースのログ記録
- ログローテーション設定
- パフォーマンスメトリクスの記録
3. 全体的なアプローチ¶
開発の一貫性を保つため、APIの基本機能を安定させることを優先し、その後段階的に機能を拡張していくアプローチを推奨します。今回のWebUI v2デプロイにより、ユーザー体験は既に大幅に向上しています。
操作