From 264954cc32fbc0903f34bb80b1f8331499dce67e Mon Sep 17 00:00:00 2001 From: Macbook Date: Mon, 27 Jul 2026 21:23:55 +0900 Subject: [PATCH] Deploy: GitHub submodule sync 2026-07-27 21:23:55 --- chatbotApp-chatbot2.0-agent | 2 +- exAiChatBot-chatbot2.0-agent | 2 +- git_fetch_all.sh | 46 +++++++++++++++++++++++- server-dev/docker-compose.rag.server.yml | 4 +++ server-dev/env.exdev-server.template | 4 +-- server-dev/start-all-server.sh | 24 +++++++++++++ 6 files changed, 77 insertions(+), 5 deletions(-) diff --git a/chatbotApp-chatbot2.0-agent b/chatbotApp-chatbot2.0-agent index dcfe5b2..25356df 160000 --- a/chatbotApp-chatbot2.0-agent +++ b/chatbotApp-chatbot2.0-agent @@ -1 +1 @@ -Subproject commit dcfe5b2310bbdd6b8299b6840e359ef9b67bb89c +Subproject commit 25356df503f9bbec3917811c0549996531303962 diff --git a/exAiChatBot-chatbot2.0-agent b/exAiChatBot-chatbot2.0-agent index c27e0c8..7d7c912 160000 --- a/exAiChatBot-chatbot2.0-agent +++ b/exAiChatBot-chatbot2.0-agent @@ -1 +1 @@ -Subproject commit c27e0c8b3cd32f6bfc5b209cf4141e717edb9118 +Subproject commit 7d7c9125fc40477bab271c89233d8f4072d3a615 diff --git a/git_fetch_all.sh b/git_fetch_all.sh index 56e7d36..294b237 100755 --- a/git_fetch_all.sh +++ b/git_fetch_all.sh @@ -7,6 +7,9 @@ # ./git_fetch_all.sh --no-push # commit까지, push 생략 # ./git_fetch_all.sh --no-commit # fetch/merge만 (commit·push 생략) # +# commit 시 운영 WAS/RAG 기본 주소(172.16.180.130)를 복원합니다. +# exdev 로컬 주소(127.0.0.1 / host.docker.internal)는 .env·start 스크립트로만 사용합니다. +# # 대상 (.gitmodules) — 모두 branch=chatbot2.0-agent (main 사용 안 함): # chatbotApi-chatbot2.0-agent # chatbotApp-chatbot2.0-agent @@ -40,7 +43,7 @@ for arg in "$@"; do --no-commit) DO_COMMIT=false; DO_PUSH=false ;; --no-push) DO_PUSH=false ;; -h|--help) - sed -n '2,18p' "$0" + sed -n '2,22p' "$0" exit 0 ;; *) @@ -107,6 +110,44 @@ restore_monorepo_overlays() { fi } +# GitHub push 전: 로컬(exdev) WAS 주소를 커밋하지 않고 운영 기본값(172.16.180.130) 유지 +PROD_WAS_API="http://172.16.180.130:8086/api" +PROD_RAG_CHAT="http://172.16.180.130:28012/agent/chat" + +restore_production_endpoints_before_commit() { + local path="$1" + local dir="${ROOT_DIR}/${path}" + + case "${path}" in + kakaoChatbotSkill-chatbot2.0-agent) + local yml="${dir}/src/main/resources/application.yml" + if [[ -f "${yml}" ]]; then + # ${ENV:default} 형태의 default 만 운영 IP로 고정 (실행 시 ENV 로컬 오버라이드는 유지) + perl -i -pe "s|CHATBOT_API_BASE_URL:[^}]+}|CHATBOT_API_BASE_URL:${PROD_WAS_API}/}|g" "${yml}" + perl -i -pe "s|RAG_AGENT_CHAT_URL:[^}]+}|RAG_AGENT_CHAT_URL:${PROD_RAG_CHAT}}|g" "${yml}" + # trailing slash normalize for api default + perl -i -pe "s|CHATBOT_API_BASE_URL:http://172\.16\.180\.130:8086/api/\}|CHATBOT_API_BASE_URL:http://172.16.180.130:8086/api/}|g" "${yml}" + fi + ;; + exAiChatBot-chatbot2.0-agent) + if [[ -f "${dir}/env.template" ]]; then + perl -i -pe "s|^CHATBOT_API_BASE_URL=.*|CHATBOT_API_BASE_URL=${PROD_WAS_API}|" "${dir}/env.template" + fi + if [[ -f "${dir}/env.example" ]]; then + perl -i -pe "s|^CHATBOT_API_BASE_URL=.*|CHATBOT_API_BASE_URL=${PROD_WAS_API}|" "${dir}/env.example" 2>/dev/null || true + fi + if [[ -f "${dir}/scripts/agent/chatbot_tool_client.py" ]]; then + perl -i -pe 's|"http://127\.0\.0\.1:8086/api"|"http://172.16.180.130:8086/api"|g' \ + "${dir}/scripts/agent/chatbot_tool_client.py" + perl -i -pe 's|"http://host\.docker\.internal:8086/api"|"http://172.16.180.130:8086/api"|g' \ + "${dir}/scripts/agent/chatbot_tool_client.py" + fi + # monorepo overlay compose 는 push 대상에서 제외 (로컬 exdev 전용) + git -C "${dir}" checkout HEAD -- docker-compose.server.yml docker-compose.local.yml 2>/dev/null || true + ;; + esac +} + submodule_is_cloned() { local path="$1" [[ -e "${ROOT_DIR}/${path}/.git" ]] @@ -253,6 +294,9 @@ sync_one() { # 5) 로컬 수정사항 commit if $DO_COMMIT && repo_is_dirty; then log " 로컬 변경 commit..." + # push 전에 운영 WAS/RAG 기본 주소 복원 (exdev 로컬 주소는 .env / start 스크립트로만 사용) + restore_production_endpoints_before_commit "${path}" + log " 운영 엔드포인트 기본값 유지: ${PROD_WAS_API}" git add -A if git diff --cached --quiet; then log " staged 변경 없음 (ignore 된 파일만 있을 수 있음)" diff --git a/server-dev/docker-compose.rag.server.yml b/server-dev/docker-compose.rag.server.yml index 1c0a7c6..4cef035 100644 --- a/server-dev/docker-compose.rag.server.yml +++ b/server-dev/docker-compose.rag.server.yml @@ -34,6 +34,10 @@ services: LLM_BASE_URL: http://host.docker.internal:16000 TEI_EMBED_URL: http://host.docker.internal:16001 TEI_RERANK_URL: http://host.docker.internal:16002 + # exdev: 호스트에서 기동한 chatbotApi(WAS). 운영 기본값(172.16.180.130)은 git push 대상 코드에만 유지. + CHATBOT_API_BASE_URL: ${CHATBOT_API_BASE_URL:-http://host.docker.internal:8086/api} + INTERNAL_TOOL_API_KEY: ${INTERNAL_TOOL_API_KEY:-exdev-agent-tool-key} + CHATBOT_TOOL_TIMEOUT: ${CHATBOT_TOOL_TIMEOUT:-60} volumes: - ./data:/app/data - ./scripts:/app/scripts diff --git a/server-dev/env.exdev-server.template b/server-dev/env.exdev-server.template index 2ba915a..e8d1d9c 100644 --- a/server-dev/env.exdev-server.template +++ b/server-dev/env.exdev-server.template @@ -31,10 +31,10 @@ QDRANT_HOST=127.0.0.1 QDRANT_PORT=6333 QDRANT_COLLECTION=qa_vectors_v2 -# ── Agent / WAS ── +# ── Agent / WAS (Docker → 호스트 chatbotApi) ── AGENT_MODE=agent AGENT_MAX_ROUNDS=6 -CHATBOT_API_BASE_URL=http://127.0.0.1:8086/api +CHATBOT_API_BASE_URL=http://host.docker.internal:8086/api INTERNAL_TOOL_API_KEY=exdev-agent-tool-key CHATBOT_TOOL_TIMEOUT=60 diff --git a/server-dev/start-all-server.sh b/server-dev/start-all-server.sh index 00cd65e..30e869b 100755 --- a/server-dev/start-all-server.sh +++ b/server-dev/start-all-server.sh @@ -339,10 +339,29 @@ stop_legacy_stack() { } ensure_rag_env() { + # .env 키=값 갱신 (없으면 append) + patch_env() { + local key="$1" value="$2" tmp + tmp="$(mktemp)" + if [[ -f "${RAG_ENV}" ]]; then + grep -vE "^${key}=" "${RAG_ENV}" > "${tmp}" || true + else + : > "${tmp}" + fi + printf '%s\n%s=%s\n' "$(cat "${tmp}")" "${key}" "${value}" > "${RAG_ENV}" + rm -f "${tmp}" + } + if [[ ! -f "${RAG_ENV}" ]]; then log ".env 없음 → env.exdev-server.template 복사" cp "${ENV_TEMPLATE}" "${RAG_ENV}" fi + + # RAG(Docker) → 호스트 chatbotApi (exdev 로컬 WAS). 운영 IP(172.16.180.130) 사용 금지. + patch_env "CHATBOT_API_BASE_URL" "http://host.docker.internal:${WAS_PORT}/api" + patch_env "INTERNAL_TOOL_API_KEY" "${INTERNAL_TOOL_API_KEY}" + patch_env "CHATBOT_TOOL_TIMEOUT" "60" + log "RAG .env WAS: host.docker.internal:${WAS_PORT} (로컬 chatbotApi)" } ensure_mongo() { @@ -392,11 +411,16 @@ start_rag() { ensure_rag_env ensure_rag_compose [[ -f "${COMPOSE_SERVER}" ]] || fail "docker-compose.server.yml 없음" + # compose environment 보간 + 컨테이너 env (로컬 WAS) + export CHATBOT_API_BASE_URL="http://host.docker.internal:${WAS_PORT}/api" + export INTERNAL_TOOL_API_KEY="${INTERNAL_TOOL_API_KEY}" + export CHATBOT_TOOL_TIMEOUT="${CHATBOT_TOOL_TIMEOUT:-60}" cd "${RAG_DIR}" docker compose -f "${COMPOSE_SERVER}" down --remove-orphans 2>/dev/null || true local -a up_flags=(-d) if $NO_BUILD; then up_flags+=(--no-build); else up_flags+=(--build); fi log "RAG 스택 기동 (docker-compose.server.yml)..." + log " CHATBOT_API_BASE_URL=${CHATBOT_API_BASE_URL}" docker compose -f "${COMPOSE_SERVER}" up "${up_flags[@]}" wait_http "http://127.0.0.1:6333/collections" "Qdrant" 30 || true bootstrap_qdrant_if_empty