# 企业能耗管理平台 (EMS)

本项目基于 Golang 后端 + Vue 3 前端 + Docker 容器化部署架构构建，支持企业级电力监控与数据分析。

## 项目结构

```
.
├── backend/            # Golang 后端 (Gin + GORM)
├── frontend/           # Vue 3 前端 (Vite + TypeScript)
├── configs/            # 配置文件 (Nginx 等)
├── data/               # 数据持久化目录 (自动生成)
├── docker-compose.yml  # 生产环境容器编排
├── docker-compose.wsl.yml # WSL 开发环境容器编排
└── README.md           # 说明文档
```

## 快速开始

### 1. 环境准备
确保已安装 Docker & Docker Compose。

### 2. 开发环境启动 (WSL / 本地调试)

适用于开发人员，端口全开放，方便数据库工具直连调试。

```bash
# 启动开发环境服务栈
docker-compose -f docker-compose.wsl.yml up -d --build
```

**访问地址:**
*   **Web 界面:** [http://localhost](http://localhost) (Nginx)
*   **后端 API:** [http://localhost:8080](http://localhost:8080) (直连后端，方便调试)
*   **PostgreSQL:** `localhost:5433` (用户: `ems_user` / 密码: `ems_pass`)
*   **TDengine:** `localhost:6030`
*   **Redis:** `localhost:6379`
*   **EMQX (MQTT):** `localhost:1883` (TCP), Dashboard: `localhost:18083` (admin/public)

### 3. 生产环境部署 (Production)

适用于正式服务器部署，安全性更高，数据库端口仅限内网访问。

```bash
# 启动生产环境服务栈
docker-compose up -d --build
```

**访问地址:**
*   **Web 界面:** [http://YOUR_SERVER_IP](http://YOUR_SERVER_IP)
*   **API 接口:** 统一通过 Nginx 转发，例如 `/api/v1/...`
*   **数据库:** 默认仅监听 `127.0.0.1`，不对外网暴露端口。

### 4. 本地源码运行 (非 Docker)

如果您想在本地单独运行前后端代码进行调试：

#### 后端 (Golang)
```bash
cd backend
go mod tidy
# 确保本地已启动必要的数据库 (Postgres, TDengine, Redis)，或修改配置指向 Docker 服务
go run main.go
```

#### 前端 (Vue 3)
```bash
cd frontend
npm install
npm run dev
# 开发服务器启动在 http://localhost:5173
```

## 技术栈详情

*   **核心服务:** Golang (Gin), Vue 3 (TypeScript, Element Plus)
*   **数据存储:**
    *   **PostgreSQL:** 存储用户、设备、告警规则等元数据
    *   **TDengine:** 高性能时序数据库，存储电力、传感器历史数据
*   **中间件:**
    *   **Redis:** 缓存与即时状态
    *   **EMQX:** MQTT 消息代理，处理物联网设备接入
    *   **Nginx:** 反向代理与静态资源服务
