chore: initial commit of ai site platform

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
whm
2026-07-31 10:19:22 +08:00
commit 6366859bb3
222 changed files with 47313 additions and 0 deletions

96
scripts/linux/common.sh Normal file
View File

@@ -0,0 +1,96 @@
#!/usr/bin/env bash
# 宇信达智建 — Linux 公共函数(宿主机物理目录模式,不依赖 Docker
# shellcheck disable=SC2034
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
RUNTIME="$ROOT/.runtime"
LOG_DIR="$RUNTIME/logs"
PID_DIR="$RUNTIME/pids"
VENV_DIR="$RUNTIME/venv"
PGDATA="$RUNTIME/postgres"
UPLOAD_DIR="$ROOT/platform/data/uploads"
PG_PORT="${AJZ_PG_PORT:-5432}"
PG_USER="${AJZ_PG_USER:-platform}"
PG_PASS="${AJZ_PG_PASS:-platform}"
PG_DB="${AJZ_PG_DB:-platform}"
mkdir -p "$LOG_DIR" "$PID_DIR" "$UPLOAD_DIR"
c_info() { printf '\033[36m==> %s\033[0m\n' "$*"; }
c_ok() { printf '\033[32m OK %s\033[0m\n' "$*"; }
c_warn() { printf '\033[33m !! %s\033[0m\n' "$*"; }
c_err() { printf '\033[31m ERR %s\033[0m\n' "$*" >&2; }
have_cmd() { command -v "$1" >/dev/null 2>&1; }
docker_ready() {
have_cmd docker || return 1
docker info >/dev/null 2>&1
}
port_listen() {
local port="$1"
if have_cmd ss; then
ss -ltn "( sport = :$port )" 2>/dev/null | grep -q ":$port"
elif have_cmd netstat; then
netstat -ltn 2>/dev/null | grep -q "[.:]$port "
else
(echo >/dev/tcp/127.0.0.1/"$port") >/dev/null 2>&1
fi
}
wait_port() {
local port="$1" name="$2" sec="${3:-40}"
local i=0
while (( i < sec * 2 )); do
if port_listen "$port"; then
c_ok "$name 端口 $port 已监听"
return 0
fi
sleep 0.5
((i++)) || true
done
c_warn "$name 端口 $port 未在 ${sec}s 内就绪"
return 1
}
wait_http() {
local url="$1" name="$2" sec="${3:-40}"
local i=0
while (( i < sec * 2 )); do
if curl -fsS --max-time 2 "$url" >/dev/null 2>&1; then
c_ok "$name 就绪 $url"
return 0
fi
sleep 0.5
((i++)) || true
done
c_warn "$name 未在 ${sec}s 内就绪: $url"
return 1
}
detect_os() {
if [[ -f /etc/os-release ]]; then
# shellcheck source=/dev/null
. /etc/os-release
echo "${ID:-unknown}"
else
echo "unknown"
fi
}
sudo_run() {
if [[ "$(id -u)" -eq 0 ]]; then
"$@"
elif have_cmd sudo; then
sudo "$@"
else
c_err "需要 root 或 sudo 才能安装系统包: $*"
return 1
fi
}
export ROOT RUNTIME LOG_DIR PID_DIR VENV_DIR PGDATA UPLOAD_DIR
export PG_PORT PG_USER PG_PASS PG_DB