Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3107d56764 | ||
|
|
79a1ca36c5 |
@@ -3,7 +3,7 @@
|
|||||||
一个简洁强大的数据可视化工具,支持 **Web UI** 和 **API** 两种方式生成精美的对比图表和表格图片。
|
一个简洁强大的数据可视化工具,支持 **Web UI** 和 **API** 两种方式生成精美的对比图表和表格图片。
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
## ✨ 功能特性
|
## ✨ 功能特性
|
||||||
|
|
||||||
|
|||||||
Executable
+45
@@ -0,0 +1,45 @@
|
|||||||
|
#!/bash
|
||||||
|
# data-chart-tool 保活脚本
|
||||||
|
# 检查服务是否运行,如果没有则启动
|
||||||
|
|
||||||
|
PORT=16016
|
||||||
|
APP_DIR="/home/openclaw/.openclaw/workspace-hz4th_coder/works/data-chart-tool"
|
||||||
|
LOG_FILE="$APP_DIR/logs/server.log"
|
||||||
|
|
||||||
|
# 检查端口是否被占用
|
||||||
|
if ss -tlnp | grep -q ":$PORT "; then
|
||||||
|
# 检查是不是 node 进程
|
||||||
|
PID=$(ss -tlnp | grep ":$PORT " | grep -oP 'pid=\K[0-9]+' | head -1)
|
||||||
|
if [ -n "$PID" ]; then
|
||||||
|
CMD=$(ps -p "$PID" -o comm= 2>/dev/null)
|
||||||
|
if [ "$CMD" = "node" ] || [ "$CMD" = "MainThread" ]; then
|
||||||
|
# node 服务在运行,检查是否正常响应
|
||||||
|
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:$PORT/api/health 2>/dev/null)
|
||||||
|
if [ "$HTTP_CODE" = "200" ]; then
|
||||||
|
echo "[$(date)] Service OK (PID=$PID, HTTP=$HTTP_CODE)"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# 端口被非 node 进程占用(如 Python http.server),杀掉它
|
||||||
|
echo "[$(date)] Port $PORT occupied by $CMD (PID=$PID), killing..."
|
||||||
|
kill -9 "$PID" 2>/dev/null
|
||||||
|
sleep 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 启动 node 服务
|
||||||
|
echo "[$(date)] Starting data-chart-tool..."
|
||||||
|
cd "$APP_DIR"
|
||||||
|
nohup node server.js >> "$LOG_FILE" 2>&1 &
|
||||||
|
echo "[$(date)] Started with PID $!"
|
||||||
|
|
||||||
|
# 等待启动
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
# 验证
|
||||||
|
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:$PORT/api/health 2>/dev/null)
|
||||||
|
if [ "$HTTP_CODE" = "200" ]; then
|
||||||
|
echo "[$(date)] Service started successfully (HTTP=$HTTP_CODE)"
|
||||||
|
else
|
||||||
|
echo "[$(date)] WARNING: Service may not have started correctly (HTTP=$HTTP_CODE)"
|
||||||
|
fi
|
||||||
@@ -882,7 +882,7 @@ app.get('/api/health', (req, res) => {
|
|||||||
res.json({
|
res.json({
|
||||||
status: 'ok',
|
status: 'ok',
|
||||||
service: 'data-chart-tool',
|
service: 'data-chart-tool',
|
||||||
version: '1.2.0',
|
version: '1.8.0',
|
||||||
endpoints: {
|
endpoints: {
|
||||||
'POST /api/chart': '生成图表图片(JSON body)',
|
'POST /api/chart': '生成图表图片(JSON body)',
|
||||||
'GET /api/chart': '生成图表图片(URL 参数)',
|
'GET /api/chart': '生成图表图片(URL 参数)',
|
||||||
@@ -897,7 +897,7 @@ app.get('/api/health', (req, res) => {
|
|||||||
app.get('/api/docs', (req, res) => {
|
app.get('/api/docs', (req, res) => {
|
||||||
res.json({
|
res.json({
|
||||||
name: '数据可视化图表生成器 API',
|
name: '数据可视化图表生成器 API',
|
||||||
version: '1.2.0',
|
version: '1.8.0',
|
||||||
endpoints: [
|
endpoints: [
|
||||||
{
|
{
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
|
|||||||
Reference in New Issue
Block a user