fix 文档管理模块 & 法规对话模块

This commit is contained in:
2026-05-20 23:34:08 +08:00
parent c22b03dc07
commit b065d55c86
39 changed files with 1671 additions and 540 deletions

124
dev.sh
View File

@@ -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