fix 文档管理模块 & 法规对话模块
This commit is contained in:
124
dev.sh
124
dev.sh
@@ -12,7 +12,8 @@ API_PID_FILE="$LOG_DIR/api.pid"
|
||||
FRONTEND_PID_FILE="$LOG_DIR/frontend.pid"
|
||||
API_LOG_FILE="$LOG_DIR/api.log"
|
||||
FRONTEND_LOG_FILE="$LOG_DIR/frontend.log"
|
||||
DOCKER_CONTAINERS="milvus minio redis postgres"
|
||||
DISPLAY_HOST="localhost"
|
||||
SERVICE_HOST="6.86.80.8"
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
@@ -54,6 +55,51 @@ ensure_log_dir() {
|
||||
mkdir -p "$LOG_DIR"
|
||||
}
|
||||
|
||||
check_tcp_connectivity() {
|
||||
local host="$1"
|
||||
local port="$2"
|
||||
|
||||
if command -v nc > /dev/null 2>&1; then
|
||||
nc -z -w 3 "$host" "$port" > /dev/null 2>&1
|
||||
return
|
||||
fi
|
||||
|
||||
require_python_bootstrap
|
||||
"$PYTHON_BOOTSTRAP" - <<PY > /dev/null 2>&1
|
||||
import socket
|
||||
import sys
|
||||
|
||||
try:
|
||||
with socket.create_connection(("${host}", ${port}), timeout=3):
|
||||
pass
|
||||
except Exception:
|
||||
sys.exit(1)
|
||||
|
||||
sys.exit(0)
|
||||
PY
|
||||
}
|
||||
|
||||
check_foundation_services() {
|
||||
local name
|
||||
local port
|
||||
|
||||
for service in \
|
||||
"Milvus:19530" \
|
||||
"MinIO API:9000" \
|
||||
"MinIO Console:9001" \
|
||||
"Redis:6379" \
|
||||
"PostgreSQL:5432"
|
||||
do
|
||||
name="${service%%:*}"
|
||||
port="${service##*:}"
|
||||
if check_tcp_connectivity "$SERVICE_HOST" "$port"; then
|
||||
success "${name}: ${SERVICE_HOST}:${port} 可连通"
|
||||
else
|
||||
warn "${name}: ${SERVICE_HOST}:${port} 不可连通"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
print_header() {
|
||||
echo ""
|
||||
echo -e "${CYAN}========================================${NC}"
|
||||
@@ -197,21 +243,8 @@ run_setup() {
|
||||
success "前端依赖安装完成"
|
||||
echo ""
|
||||
|
||||
info "[4/4] 检查 Docker 基础服务"
|
||||
if command -v docker > /dev/null 2>&1; then
|
||||
local container
|
||||
for container in $DOCKER_CONTAINERS; do
|
||||
if docker ps --format '{{.Names}}' | grep -q "^${container}$"; then
|
||||
success "${container}: 运行中"
|
||||
elif docker ps -a --format '{{.Names}}' | grep -q "^${container}$"; then
|
||||
warn "${container}: 已创建但未运行"
|
||||
else
|
||||
warn "${container}: 未找到容器"
|
||||
fi
|
||||
done
|
||||
else
|
||||
warn "未检测到 Docker,已跳过容器检查"
|
||||
fi
|
||||
info "[4/4] 检查 6.86.80.8 基础服务连通性"
|
||||
check_foundation_services
|
||||
|
||||
echo ""
|
||||
success "环境初始化完成"
|
||||
@@ -223,7 +256,7 @@ run_setup() {
|
||||
|
||||
api_health_ok() {
|
||||
if command -v curl > /dev/null 2>&1; then
|
||||
curl -fsS "http://localhost:$API_PORT/health" > /dev/null 2>&1
|
||||
curl -fsS "http://${DISPLAY_HOST}:$API_PORT/health" > /dev/null 2>&1
|
||||
return
|
||||
fi
|
||||
|
||||
@@ -233,7 +266,7 @@ import sys
|
||||
from urllib.request import urlopen
|
||||
|
||||
try:
|
||||
with urlopen("http://localhost:${API_PORT}/health", timeout=3) as response:
|
||||
with urlopen("http://${DISPLAY_HOST}:${API_PORT}/health", timeout=3) as response:
|
||||
body = response.read().decode("utf-8", errors="ignore")
|
||||
sys.exit(0 if "healthy" in body.lower() else 1)
|
||||
except Exception:
|
||||
@@ -260,9 +293,9 @@ start_api() {
|
||||
if [ "$mode" = "foreground" ]; then
|
||||
print_header "AI+合规智能中枢 - 启动 API"
|
||||
echo "运行模式: 前台调试(带 --reload)"
|
||||
echo "服务地址: http://localhost:$API_PORT"
|
||||
echo "文档地址: http://localhost:$API_PORT/docs"
|
||||
echo "健康检查: http://localhost:$API_PORT/health"
|
||||
echo "服务地址: http://${DISPLAY_HOST}:$API_PORT"
|
||||
echo "文档地址: http://${DISPLAY_HOST}:$API_PORT/docs"
|
||||
echo "健康检查: http://${DISPLAY_HOST}:$API_PORT/health"
|
||||
echo ""
|
||||
exec "$VENV_PYTHON" -m uvicorn app.main:app --host "$API_HOST" --port "$API_PORT" --reload
|
||||
fi
|
||||
@@ -274,8 +307,8 @@ start_api() {
|
||||
|
||||
if is_pid_running "$pid"; then
|
||||
success "API 启动成功 (PID: $pid)"
|
||||
echo " 地址: http://localhost:$API_PORT"
|
||||
echo " 文档: http://localhost:$API_PORT/docs"
|
||||
echo " 地址: http://${DISPLAY_HOST}:$API_PORT"
|
||||
echo " 文档: http://${DISPLAY_HOST}:$API_PORT/docs"
|
||||
echo " 日志: $API_LOG_FILE"
|
||||
else
|
||||
rm -f "$API_PID_FILE"
|
||||
@@ -316,7 +349,7 @@ start_frontend() {
|
||||
|
||||
if is_pid_running "$pid"; then
|
||||
success "前端启动成功 (PID: $pid)"
|
||||
echo " 地址: http://localhost:$FRONTEND_PORT"
|
||||
echo " 地址: http://${DISPLAY_HOST}:$FRONTEND_PORT"
|
||||
echo " 模式: $mode"
|
||||
echo " 日志: $FRONTEND_LOG_FILE"
|
||||
else
|
||||
@@ -407,6 +440,8 @@ run_status() {
|
||||
local frontend_running=false
|
||||
local pid
|
||||
local port_listener
|
||||
local service_name
|
||||
local service_port
|
||||
|
||||
echo -e "${YELLOW}API 服务:${NC}"
|
||||
pid="$(read_pid "$API_PID_FILE")"
|
||||
@@ -432,8 +467,8 @@ run_status() {
|
||||
warn " 健康检查: 未通过"
|
||||
fi
|
||||
fi
|
||||
echo " 地址: http://localhost:$API_PORT"
|
||||
echo " 文档: http://localhost:${API_PORT}/docs"
|
||||
echo " 地址: http://${DISPLAY_HOST}:$API_PORT"
|
||||
echo " 文档: http://${DISPLAY_HOST}:${API_PORT}/docs"
|
||||
echo ""
|
||||
|
||||
echo -e "${YELLOW}前端服务:${NC}"
|
||||
@@ -453,24 +488,25 @@ run_status() {
|
||||
fi
|
||||
fi
|
||||
echo " 模式: $FRONTEND_MODE"
|
||||
echo " 地址: http://localhost:$FRONTEND_PORT"
|
||||
echo " 地址: http://${DISPLAY_HOST}:$FRONTEND_PORT"
|
||||
echo ""
|
||||
|
||||
echo -e "${YELLOW}Docker 服务:${NC}"
|
||||
if command -v docker > /dev/null 2>&1; then
|
||||
local container
|
||||
for container in $DOCKER_CONTAINERS; do
|
||||
if docker ps --format '{{.Names}}' | grep -q "^${container}$"; then
|
||||
success " ${container}: 运行中"
|
||||
elif docker ps -a --format '{{.Names}}' | grep -q "^${container}$"; then
|
||||
warn " ${container}: 已停止"
|
||||
else
|
||||
warn " ${container}: 未创建"
|
||||
fi
|
||||
done
|
||||
else
|
||||
warn " Docker 未安装,已跳过"
|
||||
fi
|
||||
echo -e "${YELLOW}基础服务连通性:${NC}"
|
||||
for service in \
|
||||
"Milvus:19530" \
|
||||
"MinIO API:9000" \
|
||||
"MinIO Console:9001" \
|
||||
"Redis:6379" \
|
||||
"PostgreSQL:5432"
|
||||
do
|
||||
service_name="${service%%:*}"
|
||||
service_port="${service##*:}"
|
||||
if check_tcp_connectivity "$SERVICE_HOST" "$service_port"; then
|
||||
success " ${service_name}: ${SERVICE_HOST}:${service_port} 可连通"
|
||||
else
|
||||
warn " ${service_name}: ${SERVICE_HOST}:${service_port} 不可连通"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
if [ "$api_running" = true ] && [ "$frontend_running" = true ]; then
|
||||
@@ -526,7 +562,7 @@ AI+合规智能中枢统一脚本
|
||||
setup
|
||||
进行一次性的本地初始化。
|
||||
包含 Python 版本检查、.venv 虚拟环境创建、后端依赖安装、前端 npm install、
|
||||
以及 Docker 基础容器状态检查。
|
||||
以及 6.86.80.8 基础服务端口连通性检查。
|
||||
|
||||
start
|
||||
启动服务。默认行为等同于 ./dev.sh start all。
|
||||
@@ -548,7 +584,7 @@ AI+合规智能中枢统一脚本
|
||||
restart frontend --mode static 可直接切换前端启动模式。
|
||||
|
||||
status
|
||||
查看 API、前端、Docker 基础容器的状态。
|
||||
查看 API、前端、6.86.80.8 基础服务的状态。
|
||||
API 状态包含健康检查;前端状态包含当前模式和访问地址。
|
||||
|
||||
logs
|
||||
|
||||
Reference in New Issue
Block a user