Agent 2.0 exdev 서버 배포 스택

- server-dev start/stop/deploy 및 Gitea push 자동 배포
- local-dev 로컬 개발 환경

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Macbook
2026-07-21 22:57:30 +09:00
commit 4b86b2a660
344 changed files with 45787 additions and 0 deletions
+161
View File
@@ -0,0 +1,161 @@
#!/bin/bash
# run-with-excel.sh
# 엑셀 파일로 RAG 시스템 전체 실행
set -e
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m'
# 사용법
if [ "$#" -lt 1 ]; then
echo "사용법: ./run-with-excel.sh <엑셀파일경로> [옵션]"
echo ""
echo "예제:"
echo " ./run-with-excel.sh data/qa_data.xlsx"
echo " ./run-with-excel.sh ~/Downloads/customer_qa.xlsx"
echo " ./run-with-excel.sh data/qa_data.xlsx --rebuild # 이미지 재빌드"
echo ""
exit 1
fi
EXCEL_FILE=$1
REBUILD=${2:-""}
# 파일 존재 확인
if [ ! -f "$EXCEL_FILE" ]; then
echo -e "${RED}❌ 엑셀 파일을 찾을 수 없습니다: $EXCEL_FILE${NC}"
exit 1
fi
echo -e "${GREEN}================================================${NC}"
echo -e "${GREEN}RAG 시스템 자동 실행 (엑셀 파일 사용)${NC}"
echo -e "${GREEN}================================================${NC}"
echo ""
# 프로젝트 디렉토리로 이동
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR"
# 1. 엑셀 파일 복사
echo -e "${GREEN}[1/6] 엑셀 파일 복사 중...${NC}"
EXCEL_BASENAME=$(basename "$EXCEL_FILE")
cp "$EXCEL_FILE" "data/$EXCEL_BASENAME"
echo " ✅ data/$EXCEL_BASENAME"
echo ""
# 2. JSONL 변환
echo -e "${GREEN}[2/6] JSONL 변환 중...${NC}"
if python scripts/excel_to_jsonl.py "data/$EXCEL_BASENAME"; then
echo " ✅ data/qa_raw.jsonl 생성 완료"
else
echo -e "${RED} ❌ JSONL 변환 실패${NC}"
echo ""
echo "pandas와 openpyxl이 설치되어 있는지 확인하세요:"
echo " pip install pandas openpyxl"
exit 1
fi
# 변환된 QA 수 확인
QA_COUNT=$(wc -l < data/qa_raw.jsonl | tr -d ' ')
echo " 📊 변환된 QA 쌍: ${QA_COUNT}개"
echo ""
# 3. .env 파일 확인
echo -e "${GREEN}[3/6] 환경 설정 확인 중...${NC}"
if [ ! -f ".env" ]; then
echo -e "${YELLOW} ⚠️ .env 파일이 없습니다.${NC}"
echo " env.template을 복사합니다..."
cp env.template .env
echo ""
echo -e "${RED} ❗ .env 파일을 수정해주세요:${NC}"
echo " vi .env"
echo ""
echo " 필수 설정:"
echo " - LLM_HOST=<LLM서버IP>"
echo " - TEI_EMBED_HOST=<TEI서버IP>"
echo " - TEI_RERANK_HOST=<TEI서버IP>"
echo ""
read -p "지금 수정하시겠습니까? (y/n) " answer
if [ "$answer" = "y" ]; then
${EDITOR:-vi} .env
else
echo ""
echo "환경 설정 후 다시 실행하세요:"
echo " vi .env"
echo " ./run-with-excel.sh data/$EXCEL_BASENAME"
exit 0
fi
fi
# .env 로드
source .env
# API 주소 출력
echo " 📍 LLM API: ${LLM_BASE_URL:-http://host.docker.internal:16000}"
echo " 📍 TEI Embed: ${TEI_EMBED_URL:-http://host.docker.internal:16001}"
echo " 📍 TEI Rerank: ${TEI_RERANK_URL:-http://host.docker.internal:16002}"
echo ""
# 4. Docker 이미지 빌드
if [ "$REBUILD" = "--rebuild" ] || ! docker images | grep -q "rag-batch-slim"; then
echo -e "${GREEN}[4/6] Docker 이미지 빌드 중...${NC}"
docker-compose -f docker-compose-slim.yml build
echo " ✅ 이미지 빌드 완료"
else
echo -e "${GREEN}[4/6] Docker 이미지 확인 완료${NC}"
fi
echo ""
# 5. 기존 서비스 정리
echo -e "${GREEN}[5/6] 기존 서비스 정리 중...${NC}"
docker-compose -f docker-compose-slim.yml down 2>/dev/null || true
echo " ✅ 정리 완료"
echo ""
# 6. Docker 실행
echo -e "${GREEN}[6/6] Docker 서비스 실행 중...${NC}"
echo ""
echo "실행 순서:"
echo " 1️⃣ 전처리 (LLM 요약)"
echo " 2️⃣ 임베딩 (TEI API)"
echo " 3️⃣ 인덱싱 (FAISS)"
echo " 4️⃣ API 서비스 시작"
echo ""
echo -e "${YELLOW}Ctrl+C를 눌러 중단할 수 있습니다${NC}"
echo ""
sleep 2
# Docker Compose 실행
if docker-compose -f docker-compose-slim.yml up; then
echo ""
echo -e "${GREEN}================================================${NC}"
echo -e "${GREEN}✅ RAG 시스템 실행 완료!${NC}"
echo -e "${GREEN}================================================${NC}"
echo ""
echo "API 주소: http://localhost:28012"
echo "API 문서: http://localhost:28012/docs"
echo ""
echo "테스트:"
echo " curl http://localhost:28012/health"
echo " curl -X POST http://localhost:28012/ask \\"
echo " -H 'Content-Type: application/json' \\"
echo " -d '{\"query\":\"테스트 질문\"}'"
else
echo ""
echo -e "${RED}================================================${NC}"
echo -e "${RED}❌ Docker 실행 실패${NC}"
echo -e "${RED}================================================${NC}"
echo ""
echo "로그 확인:"
echo " docker-compose -f docker-compose-slim.yml logs"
echo ""
echo "문제 해결:"
echo " 1. .env 파일의 API 주소 확인"
echo " 2. 외부 API 서버 상태 확인"
echo " 3. Docker 디스크 공간 확인"
exit 1
fi