# 服务管理脚本使用说明

本项目为 `hzhub-admin`、`hzhub-ai` 和 `hzhub-portal-employee` 三个项目提供了后台运行管理脚本，方便开发调试。

## 📋 脚本列表

每个项目根目录下都包含以下脚本：

| 脚本 | 功能 | 说明 |
|------|------|------|
| `start.sh` | 启动服务 | 后台启动开发服务器 |
| `stop.sh` | 停止服务 | 停止后台运行的服务 |
| `restart.sh` | 重启服务 | 先停止后启动 |
| `status.sh` | 查看状态 | 查看服务运行状态和最新日志 |
| `logs.sh` | 查看日志 | 实时查看服务日志 |

## 🚀 快速开始

### 1. 启动后端服务 (hzhub-ai)

```bash
cd /data/hzhub/hzhub-ai
./start.sh
```

**输出示例：**
```
=========================================
启动 hzhub-ai 后端服务
=========================================
🚀 启动 Spring Boot 服务...
⏳ 等待服务启动中...
✅ 服务启动成功
   PID: 12345
   日志: /data/hzhub/hzhub-ai/logs/backend.log
   API: http://localhost:6039
```

**访问地址：** http://localhost:6039

### 2. 启动管理后台 (hzhub-admin)

```bash
cd /data/hzhub/hzhub-admin
./start.sh
```

**访问地址：** http://localhost:5666

### 3. 启动员工门户 (hzhub-portal-employee)

```bash
cd /data/hzhub/hzhub-portal-employee
./start.sh
```

**访问地址：** http://localhost:5137

## 📊 查看服务状态

```bash
# 查看后端服务状态
cd /data/hzhub/hzhub-ai
./status.sh

# 查看管理后台状态
cd /data/hzhub/hzhub-admin
./status.sh

# 查看员工门户状态
cd /data/hzhub/hzhub-portal-employee
./status.sh
```

**输出示例：**
```
=========================================
 hzhub-ai 服务状态
=========================================
状态: 🟢 运行中
PID: 12345
  PID  PPID CMD                             ELAPSED
12345     1 mvn spring-boot:run -Dspring-    00:15:32

日志文件: /data/hzhub/hzhub-ai/logs/backend.log
API地址: http://localhost:6039

端口状态: ✅ 6039 端口正在监听
```

## 📝 查看实时日志

```bash
# 查看后端日志
cd /data/hzhub/hzhub-ai
./logs.sh

# 或直接使用tail命令
tail -f /data/hzhub/hzhub-ai/logs/backend.log
```

按 `Ctrl+C` 退出日志查看。

## 🔄 重启服务

```bash
# 重启后端服务
cd /data/hzhub/hzhub-ai
./restart.sh

# 重启管理后台
cd /data/hzhub/hzhub-admin
./restart.sh

# 重启员工门户
cd /data/hzhub/hzhub-portal-employee
./restart.sh
```

## 🛑 停止服务

```bash
# 停止后端服务
cd /data/hzhub/hzhub-ai
./stop.sh

# 停止管理后台
cd /data/hzhub/hzhub-admin
./stop.sh

# 停止员工门户
cd /data/hzhub/hzhub-portal-employee
./stop.sh
```

## 💡 使用技巧

### 启动顺序建议

1. **先启动后端服务** (hzhub-ai)
   ```bash
   cd /data/hzhub/hzhub-ai && ./start.sh
   ```

2. **等待后端完全启动** (约30-60秒)
   ```bash
   ./status.sh  # 查看端口6039是否监听
   ```

3. **启动前端应用**
   ```bash
   cd /data/hzhub/hzhub-admin && ./start.sh
   cd /data/hzhub/hzhub-portal-employee && ./start.sh
   ```

### 一键启动所有服务

创建一个启动脚本 `/data/hzhub/start-all.sh`：

```bash
#!/bin/bash
echo "启动所有 HZHub 服务..."

cd /data/hzhub/hzhub-ai
./start.sh
sleep 10

cd /data/hzhub/hzhub-admin
./start.sh

cd /data/hzhub/hzhub-portal-employee
./start.sh

echo "所有服务启动完成！"
```

### 一键停止所有服务

创建一个停止脚本 `/data/hzhub/stop-all.sh`：

```bash
#!/bin/bash
echo "停止所有 HZHub 服务..."

cd /data/hzhub/hzhub-portal-employee
./stop.sh

cd /data/hzhub/hzhub-admin
./stop.sh

cd /data/hzhub/hzhub-ai
./stop.sh

echo "所有服务已停止！"
```

## ⚙️ 服务信息

| 项目 | 端口 | 日志文件 | PID文件 |
|------|------|----------|---------|
| hzhub-ai | 6039 | logs/backend.log | .pid |
| hzhub-admin | 5666 | logs/dev.log | .pid |
| hzhub-portal-employee | 5137 | logs/dev.log | .pid |

## 🔍 常见问题

### Q: 服务启动失败怎么办？

**A:** 检查以下几点：
1. 查看日志文件：`./logs.sh` 或 `tail -f logs/*.log`
2. 检查端口是否被占用：`netstat -tuln | grep 端口号`
3. 确认依赖是否安装：前端项目执行 `pnpm install`
4. 后端项目检查 Maven 是否可用：`mvn -v`

### Q: 如何确认服务是否完全启动？

**A:**
- **后端服务**：执行 `./status.sh` 查看6039端口是否监听
- **前端服务**：访问对应端口查看页面是否正常显示

### Q: PID文件损坏怎么办？

**A:** 手动删除PID文件：
```bash
rm .pid
./start.sh
```

### Q: 进程僵死无法停止？

**A:** 查找并强制终止进程：
```bash
# 查找进程
ps aux | grep "spring-boot\|vite\|pnpm"

# 强制终止
kill -9 <PID>

# 清理PID文件
rm .pid
```

## 📁 日志管理

### 日志位置

所有日志都保存在各项目的 `logs/` 目录下：

```
hzhub-ai/
├── logs/
│   └── backend.log

hzhub-admin/
├── logs/
│   └── dev.log

hzhub-portal-employee/
├── logs/
│   └── dev.log
```

### 日志轮转

建议定期清理日志文件：

```bash
# 清空日志文件
> logs/backend.log

# 或删除旧日志
rm logs/*.log
```

## ⚠️ 注意事项

1. **端口冲突**：确保端口 6039、5666、5137 未被其他服务占用
2. **资源占用**：后端服务启动较慢（30-60秒），请耐心等待
3. **开发模式**：这些脚本仅用于开发调试，生产环境请使用 Docker 部署
4. **数据持久化**：前端开发服务器会自动热重载，后端服务需要手动重启

## 🔗 相关文档

- [项目主文档](../CLAUDE.md)
- [部署文档](../hzhub-deploy/README.md)
- [开发环境配置](../docs/project/plan/phase-1.md)