# AGENTS.md — ems (Energy Management System) ## Project Overview 高速公路服务区能源管理后台系统。接入服务区各类表计(电表、水表、充电桩等),通过物模型进行设备管理,实现服务区**源网荷储**(光伏、电网、负荷、储能)的调配管理。 后端基于若依(RuoYi)框架开发,**当前生产环境使用 Spring Cloud 微服务版本**。 ## Workspace Context 本仓库 (`ems/`) 是 `prod_group_bg/` 工作空间的一个模块,依赖以下兄弟项目(不在本 pom 中): - `common-application/` — 若依单体版框架模块 - `common-cloud/` — 若依微服务版模块(ruoyi-common-*, ruoyi-gateway, ruoyi-auth, ruoyi-api-system) - `prod-common/` — 公共库 (`prod-commons`) 这些依赖发布在私有 Nexus (`maven.xt.wenhq.top:8083`)。修改这些项目后需先 `mvn install` 才能被 ems 引用。 ## 模块结构 ``` ems-core/ # 核心业务模块(domain, mapper, service) ├── 被 ems-cloud/ems-server 引用(微服务接口层) ├── 被 ems-cloud/ems-dev-adapter 引用(设备采集层) └── 被 ems-application/ems-admin 引用(单体版) ems-cloud/ # 微服务部署版(生产使用) ├── ems-server/ # 能源管理接口服务 :9202 └── ems-dev-adapter/ # 设备数据采集服务 :9203 ems-application/ # 单体部署版 └── ems-admin/ # 单体入口 :9100 ``` **核心设计**:`ems-core` 复用,不同部署模式仅暴露外部接口实现不同。 ## 生产微服务实例 | 实例 | 端口 | 说明 | |------|------|------| | ruoyi-gateway | 9100 | 网关 | | ruoyi-auth | 9200 | 认证中心 | | ruoyi-system | 9201 | 系统模块 | | ems-server | 9202 | 能源管理业务 | | ems-dev-adapter | 9203 | 设备数据采集 | ## Build Commands ```bash # 先构建 ems-core(必须) mvn clean install -pl ems-core # 构建微服务 mvn clean package -pl ems-cloud/ems-server,ems-cloud/ems-dev-adapter -am # 构建单体版 mvn clean package -pl ems-application/ems-admin -am ``` Java 1.8 required. Tests skipped (`true`). ## Key Conventions - **Base package**: `com.ruoyi.ems` (业务), `com.ruoyi` (单体入口) - **MyBatis**: XML mappers 在 `ems-core/src/main/resources/mapper/ems/` - **DB**: MySQL + Druid; 数据源配置在 `application-druid.yml` (单体) 或 Nacos (微服务) - **Nacos**: `192.168.20.210:8848`, namespace `2c519718-1e09-4de4-9af5-d07f837372d6` - **Context paths**: ems-server `/ems`, ems-dev-adapter `/ems-dev-adapter` ## SQL Files 无迁移框架,手动执行: | 文件 | 用途 | |------|------| | `ems_sys_data.sql` | 若依系统表初始化数据 | | `ems_server.sql` | 能源管理业务表结构 (DDL) | | `ems_init_data_ctfwq.sql` | 服务区落地初始化数据(能源分类、设备、物模型) | | `ems_clear_data.sql` | 数据清理 | | `ca.sql` | 碳管理相关表 | ## Docker `docker/cloud/docker-compose.yml` 部署完整微服务栈。镜像需单独构建。