# Ether 物业信息化平台 - 实现方案文档

> 本文档基于需求规格说明书、技术规范说明书和领域模型详细设计整理而成
> 创建日期: 2026-02-05
> 版本: v1.0

---

## 📋 系统概述

Ether 物业信息化平台是一个 **B端（管理端）+ G端（政府端）+ C端（客户端）** 的三端一体化物业管理系统，核心目标是实现"数据一网统管，业务一键闭环"。

### 建设范围
- **本期重点**: 全面覆盖B端内部管理流程，包括空间基础数据、综合工单体系、设施设备全生命周期管理、财务计费与收缴中心
- **协同范围**: 对接外部停车系统、支付网关及政府监管接口

---

## 🏗️ 一、系统架构设计

### 1.1 整体架构（微服务 + DDD）

```
┌─────────────────────────────────────────────────────────────────────────────┐
│                              前端层 (Presentation)                           │
├─────────────────┬─────────────────┬─────────────────┬───────────────────────┤
│   B端PC管理后台  │  B端PDA移动作业  │   C端小程序      │    G端政府监管        │
│  Vue3 + AntdVue │ Uni-app + Antd  │   微信小程序     │    Web门户            │
│                 │    Mobile       │                 │                       │
└─────────────────┴─────────────────┴─────────────────┴───────────────────────┘
                                       │
┌─────────────────────────────────────────────────────────────────────────────┐
│                           API网关层 (Gateway)                                │
│              Spring Cloud Gateway + JWT认证 + 限流 + 签名验证                 │
└─────────────────────────────────────────────────────────────────────────────┘
                                       │
┌─────────────────────────────────────────────────────────────────────────────┐
│                          核心业务服务层 (Core Services)                       │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐           │
│  │  空间主数据  │ │  运营调度    │ │  设施设备    │ │  财务计费    │           │
│  │   Domain    │ │   Domain    │ │   Domain    │ │   Domain    │           │
│  │   (4.1)     │ │   (4.2)     │ │   (4.3)     │ │   (4.4)     │           │
│  └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘           │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐                           │
│  │  权限与账户  │ │  审批流程    │ │  集成中心    │                           │
│  │   Domain    │ │   Domain    │ │   Domain    │                           │
│  │   (4.5)     │ │   (4.7)     │ │   (4.6)     │                           │
│  └─────────────┘ └─────────────┘ └─────────────┘                           │
└─────────────────────────────────────────────────────────────────────────────┘
                                       │
┌─────────────────────────────────────────────────────────────────────────────┐
│                          基础设施层 (Infrastructure)                         │
│  PostgreSQL 15+  │  Redis  │  RabbitMQ  │  MinIO  │  Elasticsearch         │
└─────────────────────────────────────────────────────────────────────────────┘
```

### 1.2 领域驱动设计（DDD）六大领域

| 领域 | 职责 | 核心聚合根 |
|------|------|-----------|
| **空间与主数据领域** (4.1) | 物理数字孪生底座 | SpaceNode, PropertyBinding |
| **运营调度领域** (4.2) | 工单、巡检、排班、访客 | WorkOrder, InspectionTask |
| **设施设备领域** (4.3) | 资产台账、维保计划 | Equipment, MaintenancePlan |
| **财务计费领域** (4.4) | 账单、支付、退款 | FinancialBill, RefundOrder |
| **权限与账户领域** (4.5) | RBAC、访客凭证、项目隔离 | Account, VisitorCredential |
| **集成中心领域** (4.6) | 外部系统适配、IoT网关 | IntegrationLog, ProtocolAdapter |

---

## 💻 二、技术栈与开发语言

### 2.1 后端技术栈（Java）

| 技术/框架 | 版本 | 用途 |
|-----------|------|------|
| **Java** | 17+ (LTS) | 开发语言 |
| **Spring Boot** | 3.2.x | 基础框架 |
| **Spring Cloud Alibaba** | 2023.x | 微服务治理（Nacos, Sentinel, Seata） |
| **Spring Data JPA** | 3.2.x | ORM框架 |
| **QueryDSL** | 5.x | 类型安全查询 |
| **PostgreSQL Driver** | 42.7.x | 数据库驱动 |
| **PostGIS** | 3.4+ | 空间数据库扩展 |
| **Redis** | 7.x | 缓存 + 分布式锁 |
| **Redisson** | 3.25+ | Redis客户端 |
| **RabbitMQ** | 3.12+ | 消息队列 |
| **MinIO** | 2024.x | 对象存储 |
| **JWT (jjwt)** | 0.12.x | 身份认证 |
| **MapStruct** | 1.5.x | DTO映射 |
| **Lombok** | 1.18.x | 代码简化 |
| **Hibernate Validator** | 8.x | 参数校验 |
| **Swagger/OpenAPI** | 2.3.x | API文档 |

### 2.2 前端技术栈

#### B端PC管理后台
| 技术/框架 | 版本 | 用途 |
|-----------|------|------|
| **Vue** | 3.4.x | 框架 |
| **TypeScript** | 5.3+ | 开发语言 |
| **Vite** | 5.x | 构建工具 |
| **Ant Design Vue** | 4.x | UI组件库 |
| **Vue Router** | 4.x | 路由 |
| **Pinia** | 2.x | 状态管理 |
| **Axios** | 1.6.x | HTTP客户端 |
| **ECharts** | 5.x | 数据可视化 |
| **LogicFlow** | 1.2.x | 流程设计器 |

#### B端PDA移动作业端 / C端小程序
| 技术/框架 | 版本 | 用途 |
|-----------|------|------|
| **Uni-app** | 3.x | 跨端框架 |
| **Vue** | 3.x | 框架 |
| **Ant Design Mobile** | 5.x | 移动端UI |
| **uView UI** | 2.x | Uni-app组件库 |

### 2.3 数据库与中间件

| 组件 | 版本 | 用途 |
|------|------|------|
| **PostgreSQL** | 15+ | 主数据库 |
| **PostGIS** | 3.4+ | 空间数据扩展 |
| **pg_trgm** | - | 模糊搜索 |
| **ltree** | - | 树形结构 |
| **Redis** | 7.x | 缓存/会话/锁 |
| **RabbitMQ** | 3.12+ | 消息队列 |
| **MinIO** | 2024.x | 对象存储 |
| **Elasticsearch** | 8.x | 搜索引擎（可选） |

---

## 📦 三、外部资源与第三方服务

### 3.1 支付与财务

| 服务 | 类型 | 用途 |
|------|------|------|
| **微信支付** | 官方SDK | C端在线缴费 |
| **支付宝** | 官方SDK | C端在线缴费 |
| **税控接口** | 第三方 | 电子发票开具 |
| **集团财务ERP** | 内部对接 | 凭证同步 |

### 3.2 政府监管接口

| 服务 | 类型 | 用途 |
|------|------|------|
| **962121热线平台** | 政府API | 投诉工单同步 |
| **房管局监管系统** | 政府API | 异常处置、信息上报 |
| **市物业中心** | 数据共享协议 | 数据同步 |

### 3.3 IoT与硬件集成

| 服务/设备 | 类型 | 用途 |
|-----------|------|------|
| **停车系统** | 厂商API | 车牌识别、车位管理 |
| **门禁系统** | 硬件SDK | 访客通行、员工打卡 |
| **电梯监控系统** | MQTT/HTTP | 故障报警 |
| **消防IoT传感器** | MQTT | 实时监控 |
| **PDA设备** | Android SDK | 扫码、NFC、红外 |
| **NFC磁卡** | ISO 14443-A | 巡更打卡 |

### 3.4 地图与位置服务

| 服务 | 类型 | 用途 |
|------|------|------|
| **腾讯地图SDK** | 第三方 | 小程序地图展示 |
| **高德地图API** | 第三方 | Web端地图、地理编码 |
| **GPS定位服务** | 系统原生 | 打卡定位校验 |

### 3.5 消息推送与通讯

| 服务 | 类型 | 用途 |
|------|------|------|
| **企业微信API** | 第三方 | 内部通知、审批提醒 |
| **飞书API** | 第三方 | 内部通知（备选） |
| **微信订阅消息** | 官方 | C端消息推送 |
| **短信服务** | 第三方 | 验证码、告警通知 |

### 3.6 文件存储与处理

| 服务 | 类型 | 用途 |
|------|------|------|
| **MinIO** | 自建 | 文件对象存储 |
| **阿里云OSS** | 云厂商 | 备份/CDN（可选） |
| **FFmpeg** | 开源 | 视频压缩处理 |
| **ImageMagick** | 开源 | 图片压缩/水印 |

---

## 🔧 四、核心Maven依赖清单

### 4.1 父POM核心依赖

```xml
<!-- Spring Boot -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.5</version>
</parent>

<!-- Spring Cloud Alibaba -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2023.0.1.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
```

### 4.2 各模块核心依赖

```xml
<!-- === Web & Security === -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

<!-- === Database === -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.7.3</version>
</dependency>
<dependency>
    <groupId>org.hibernate.orm</groupId>
    <artifactId>hibernate-spatial</artifactId>
</dependency>

<!-- === QueryDSL === -->
<dependency>
    <groupId>com.querydsl</groupId>
    <artifactId>querydsl-jpa</artifactId>
    <version>5.1.0</version>
</dependency>
<dependency>
    <groupId>com.querydsl</groupId>
    <artifactId>querydsl-apt</artifactId>
    <version>5.1.0</version>
</dependency>

<!-- === Cache & MQ === -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson-spring-boot-starter</artifactId>
    <version>3.27.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

<!-- === JWT === -->
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-api</artifactId>
    <version>0.12.5</version>
</dependency>
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-impl</artifactId>
    <version>0.12.5</version>
</dependency>

<!-- === MinIO === -->
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.5.9</version>
</dependency>

<!-- === Tools === -->
<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct</artifactId>
    <version>1.5.5.Final</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.32</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.47</version>
</dependency>

<!-- === Testing === -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <scope>test</scope>
</dependency>
```

---

## 📱 五、前端NPM依赖清单

### 5.1 B端PC (Vue3)

```json
{
  "dependencies": {
    "vue": "^3.4.21",
    "vue-router": "^4.3.0",
    "pinia": "^2.1.7",
    "ant-design-vue": "^4.2.0",
    "@ant-design/icons-vue": "^7.0.1",
    "axios": "^1.6.8",
    "echarts": "^5.5.0",
    "vue-echarts": "^6.6.9",
    "@logicflow/core": "^1.2.18",
    "@logicflow/extension": "^1.2.19",
    "dayjs": "^1.11.10",
    "lodash-es": "^4.17.21"
  },
  "devDependencies": {
    "typescript": "^5.4.5",
    "vite": "^5.2.8",
    "vue-tsc": "^2.0.11",
    "eslint": "^8.57.0",
    "prettier": "^3.2.5"
  }
}
```

### 5.2 移动端 (Uni-app)

```json
{
  "dependencies": {
    "vue": "^3.4.21",
    "@dcloudio/uni-app": "3.0.0-alpha-4010520240409001",
    "ant-design-mobile": "^5.35.0",
    "uview-plus": "^3.2.24"
  }
}
```

---

## 🗄️ 六、数据库设计要点

### 6.1 PostgreSQL扩展

```sql
-- 空间数据处理
CREATE EXTENSION IF NOT EXISTS "postgis";
-- 树形结构
CREATE EXTENSION IF NOT EXISTS "ltree";
-- 模糊搜索
CREATE EXTENSION IF NOT EXISTS "pg_trgm";
-- UUID生成
CREATE EXTENSION IF NOT EXISTS "pgcrypto";
```

### 6.2 核心表结构

| 表名 | 领域 | 说明 |
|------|------|------|
| `base_space_node` | 空间主数据 | 空间节点（Ltree路径） |
| `base_room_detail` | 空间主数据 | 房产明细 |
| `base_ownership` | 空间主数据 | 权属关联 |
| `op_work_order` | 运营调度 | 综合工单 |
| `op_inspection_task` | 运营调度 | 巡检任务 |
| `op_shift_plan` | 运营调度 | 排班计划 |
| `op_attendance` | 运营调度 | 考勤记录 |
| `op_visitor_invite` | 运营调度 | 访客预约 |
| `ast_equipment` | 设施设备 | 设备台账 |
| `ast_maintenance_plan` | 设施设备 | 维保计划 |
| `fin_billing_account` | 财务计费 | 财务账户 |
| `fin_bill` | 财务计费 | 账单 |
| `fin_refund_order` | 财务计费 | 退款单 |
| `iam_account` | 权限账户 | 账户体系 |
| `hub_integration_log` | 集成中心 | 集成日志 |

---

## 🚀 七、部署架构

### 7.1 容器化部署

| 组件 | 镜像 | 说明 |
|------|------|------|
| **应用服务** | `ether-core-service:latest` | Spring Boot应用 |
| **集成中心** | `ether-hub-service:latest` | 外部对接服务 |
| **PostgreSQL** | `postgis/postgis:15-3.4` | 主数据库 |
| **Redis** | `redis:7-alpine` | 缓存 |
| **RabbitMQ** | `rabbitmq:3.12-management` | 消息队列 |
| **MinIO** | `minio/minio:latest` | 对象存储 |
| **Nginx** | `nginx:alpine` | 反向代理 |

### 7.2 Docker Compose 示例

```yaml
version: '3.8'
services:
  ether-postgres:
    image: postgis/postgis:15-3.4
    environment:
      POSTGRES_DB: ether_platform
      POSTGRES_USER: ether_user
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
      
  ether-redis:
    image: redis:7-alpine
    command: redis-server --requirepass ${REDIS_PASSWORD}
    ports:
      - "6379:6379"
    
  ether-rabbitmq:
    image: rabbitmq:3.12-management
    environment:
      RABBITMQ_DEFAULT_USER: ether
      RABBITMQ_DEFAULT_PASS: ${MQ_PASSWORD}
    ports:
      - "5672:5672"
      - "15672:15672"
      
  ether-minio:
    image: minio/minio:latest
    command: server /data --console-address ":9001"
    environment:
      MINIO_ROOT_USER: etheradmin
      MINIO_ROOT_PASSWORD: ${MINIO_PASSWORD}
    ports:
      - "9000:9000"
      - "9001:9001"
    volumes:
      - minio_data:/data

volumes:
  postgres_data:
  minio_data:
```

---

## 📚 八、GitHub 参考资源

### 8.1 开源项目参考

| 项目 | 地址 | 参考价值 |
|------|------|----------|
| **pig** | https://github.com/pig-mesh/pig | Spring Cloud微服务脚手架 |
| **ruoyi-vue-pro** | https://github.com/YunaiV/ruoyi-vue-pro | 权限管理、工作流 |
| **jeecg-boot** | https://github.com/jeecgboot/jeecg-boot | 低代码平台、代码生成 |
| **eladmin** | https://github.com/elunez/eladmin | 后台管理系统 |
| **Ant Design Pro Vue** | https://github.com/vueComponent/ant-design-vue-pro | 前端模板 |

### 8.2 技术组件参考

| 组件 | 地址 |
|------|------|
| **Spring Boot** | https://github.com/spring-projects/spring-boot |
| **Spring Cloud Alibaba** | https://github.com/alibaba/spring-cloud-alibaba |
| **MapStruct** | https://github.com/mapstruct/mapstruct |
| **QueryDSL** | https://github.com/querydsl/querydsl |
| **Redisson** | https://github.com/redisson/redisson |
| **MinIO Java SDK** | https://github.com/minio/minio-java |

---

## ✅ 九、开发规范与约束

### 9.1 代码规范
- **JDK版本**: Java 17+
- **编码规范**: Alibaba Java Coding Guidelines
- **单元测试**: JUnit 5 + Mockito，覆盖率要求 > 80%
- **API文档**: OpenAPI 3.0 + Swagger UI

### 9.2 数据库规范
- **主键**: UUID v7 (使用 `gen_random_uuid()`)
- **金额字段**: `numeric(15,4)` 内部计算，`numeric(12,2)` 展示
- **JSON字段**: 使用 PostgreSQL `jsonb` 类型
- **空间字段**: 使用 `geometry(Point, 4326)`

### 9.3 安全规范
- **认证**: JWT Token，有效期2小时
- **鉴权**: RBAC模型，按钮级权限控制
- **签名**: HmacSHA256 接口签名
- **敏感数据**: 加密存储，禁止明文传输

### 9.4 项目上下文约束
- 所有API请求必须携带 `X-Project-ID` Header
- 后端必须执行 `(UserID + X-Project-ID + PermissionID)` 三位一体校验
- 禁止从用户全局Session中直接获取权限列表

---

## 📊 十、项目模块划分

```
Ether/
├── ether-common/                    # 公共模块
│   ├── ether-common-core/           # 核心工具类
│   ├── ether-common-security/       # 安全组件
│   └── ether-common-mybatis/        # 数据访问
├── ether-gateway/                   # 网关服务
├── ether-auth/                      # 认证中心
├── ether-system/                    # 系统管理
├── ether-mdm/                       # 主数据服务 (4.1)
├── ether-ops/                       # 运营调度服务 (4.2)
├── ether-asset/                     # 设施设备服务 (4.3)
├── ether-finance/                   # 财务计费服务 (4.4)
├── ether-iam/                       # 权限账户服务 (4.5)
├── ether-bpm/                       # 审批流程服务 (4.7)
├── ether-hub/                       # 集成中心服务 (4.6)
└── ether-ui/                        # 前端项目
    ├── ether-ui-admin/              # B端PC
    ├── ether-ui-mobile/             # PDA App
    └── ether-ui-mp/                 # C端小程序
```

---

## 📋 十一、核心业务闭环流程

### 11.1 工单闭环 (WorkOrderLoop)
1. 多渠道汇聚 (C端报修/IoT报警/现场发现)
2. 智能调度派单
3. 现场扫码签到
4. 处理过程上报
5. 验收评价
6. 绩效计算

### 11.2 设备故障自愈闭环 (IoT-Ops-AssetLoop)
1. IoT传感器感知异常
2. 设备状态变更为FAULT
3. 自动创建维修工单
4. 工单完成后恢复设备状态
5. 更新资产健康档案

### 11.3 访客通行闭环 (VisitorAccessLoop)
1. 业主发起预约
2. 生成动态二维码凭证
3. 下发至门禁硬件
4. 访客扫码通行
5. 实时提醒业主

### 11.4 财务调账闭环 (BPM-FinanceAdjustmentLoop)
1. 发起调账申请
2. 账单锁定
3. BPM审批流
4. 审批通过后生成审计流水
5. 财务平账

---

## 📝 十二、关键配置项

### 12.1 应用配置 (application.yml)

```yaml
spring:
  application:
    name: ether-platform
  datasource:
    url: jdbc:postgresql://localhost:5432/ether_platform
    username: ${DB_USERNAME}
    password: ${DB_PASSWORD}
  redis:
    host: localhost
    port: 6379
    password: ${REDIS_PASSWORD}
  rabbitmq:
    host: localhost
    port: 5672
    username: ${MQ_USERNAME}
    password: ${MQ_PASSWORD}

ether:
  security:
    jwt:
      secret: ${JWT_SECRET}
      expiration: 7200000  # 2小时
    sign:
      app-key: ${APP_KEY}
      app-secret: ${APP_SECRET}
  storage:
    minio:
      endpoint: http://localhost:9000
      access-key: ${MINIO_ACCESS_KEY}
      secret-key: ${MINIO_SECRET_KEY}
      bucket-name: ether-files
  lbs:
    valid-radius: 50  # 打卡有效半径(米)
```

---

## 🔄 文档更新记录

| 版本 | 日期 | 更新内容 | 作者 |
|------|------|----------|------|
| v1.0 | 2026-02-05 | 初始版本 | - |

---

> **注意**: 本文档基于需求规格说明书、技术规范说明书和领域模型详细设计整理，开发过程中如有需求变更，请及时更新本文档。
