#!/usr/bin/env bash # 레거시 Qdrant → Agent qdrant_data 복사 (qa_vectors_v2 사용 시 재인덱싱 필요할 수 있음) set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" RAG_DIR="${ROOT_DIR}/exAiChatBot-chatbot2.0-agent" TARGET_QDRANT="${RAG_DIR}/qdrant_data" RAG_ENV="${RAG_DIR}/.env" QDRANT_COLLECTION_NAME="${QDRANT_COLLECTION:-qa_vectors_v2}" if [[ -f "${RAG_ENV}" ]]; then _col="$(grep -E '^QDRANT_COLLECTION=' "${RAG_ENV}" 2>/dev/null | tail -1 | cut -d= -f2- | tr -d ' "\r' || true)" [[ -n "${_col}" ]] && QDRANT_COLLECTION_NAME="${_col}" fi LEGACY_CANDIDATES=( "${LEGACY_QDRANT_DATA:-}" "/Users/aidev/dev/ex-chatbot-stack/qdrant_data" "/Users/aidev/dev/exAIChatbot2.0/exAiChatBot-chatbot2.0/qdrant_data" "/Users/aidev/dev/exAiChatBot/qdrant_data" ) log() { echo "[$(date '+%H:%M:%S')] $*"; } export PATH="/opt/homebrew/bin:/Applications/Docker.app/Contents/Resources/bin:${PATH}" LEGACY_QDRANT="" for candidate in "${LEGACY_CANDIDATES[@]}"; do [[ -n "${candidate}" ]] || continue if [[ -d "${candidate}/collections" ]]; then LEGACY_QDRANT="${candidate}" break fi done if [[ -z "${LEGACY_QDRANT}" ]]; then log "레거시 qdrant_data 없음" exit 1 fi local_count="$(curl -sf "http://127.0.0.1:6333/collections/${QDRANT_COLLECTION_NAME}" 2>/dev/null \ | python3 -c "import sys,json; print(json.load(sys.stdin).get('result',{}).get('points_count',0))" 2>/dev/null || echo 0)" if [[ "${local_count}" -gt 0 ]]; then log "이미 ${local_count} points — bootstrap 생략" exit 0 fi log "Qdrant 중지 후 데이터 복사 (${LEGACY_QDRANT})..." (cd "${RAG_DIR}" && docker compose -f docker-compose.server.yml stop qdrant api admin 2>/dev/null) || true rm -rf "${TARGET_QDRANT}" mkdir -p "${TARGET_QDRANT}" cp -a "${LEGACY_QDRANT}/." "${TARGET_QDRANT}/" (cd "${RAG_DIR}" && docker compose -f docker-compose.server.yml up -d qdrant api admin 2>/dev/null) || \ (cd "${RAG_DIR}" && docker compose -f docker-compose.server.yml up -d) sleep 5 log "✅ qdrant_data 복사 및 RAG 재기동 완료"