9b4a25799f
Replace fixed ackText with a rule-based AckProvider that picks response templates by message type and intent (translate, summary, rewrite, poster, ppt, mindmap, code, search, schedule). Pure sync, zero I/O, auto-falls back to config.ackText on any error. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
39 lines
965 B
Bash
Executable File
39 lines
965 B
Bash
Executable File
#!/usr/bin/env bash
|
||
# Plaza Next.js 生产进程(plaza.tkmind.cn → Cloudflare Tunnel :3001)
|
||
set -euo pipefail
|
||
|
||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||
cd "$ROOT"
|
||
|
||
if [[ -f "${ROOT}/.env" ]]; then
|
||
set -a
|
||
# shellcheck disable=SC1091
|
||
source "${ROOT}/.env"
|
||
set +a
|
||
fi
|
||
|
||
export NODE_ENV=production
|
||
export H5_PUBLIC_BASE_URL="https://m.tkmind.cn"
|
||
PORTAL_PORT="${H5_PORT:-8081}"
|
||
PLAZA_PORT="${PLAZA_PORT:-3001}"
|
||
|
||
NODE_BIN="${NODE_BIN:-/opt/homebrew/opt/node@24/bin/node}"
|
||
if [[ ! -x "${NODE_BIN}" ]]; then
|
||
NODE_BIN="$(command -v node)"
|
||
fi
|
||
|
||
echo "==> 等待 Portal :${PORTAL_PORT}…"
|
||
for _ in $(seq 1 120); do
|
||
if curl -sf "http://127.0.0.1:${PORTAL_PORT}/auth/status" >/dev/null 2>&1; then
|
||
break
|
||
fi
|
||
sleep 1
|
||
done
|
||
|
||
if ! curl -sf "http://127.0.0.1:${PORTAL_PORT}/auth/status" >/dev/null 2>&1; then
|
||
echo "Portal 未就绪 (:${PORTAL_PORT}),Plaza 退出" >&2
|
||
exit 1
|
||
fi
|
||
|
||
exec "${NODE_BIN}" scripts/start-plaza-prod.mjs -- --skip-build --no-portal
|