房地产专家评估系统 - 系统架构说明文档

1. 概述

1.1 文档目的

本文档详细描述了房地产专家评估系统的整体架构设计,包括技术架构、模块架构、部署架构等,为系统的开发、维护和扩展提供指导。

1.2 系统简介

房地产专家评估系统是一个基于Spring Boot的建筑工程安全风险评估平台,采用微服务架构设计,支持综合体系评估和设备体系评估两种评估模式。

1.3 技术栈

  • 后端框架: Spring Boot 2.7.18
  • 数据库: MySQL 8.0.36
  • ORM框架: JPA/Hibernate + mybatisPlus
  • 构建工具: Maven 3.6+
  • Java版本: OpenJDK 17

2. 整体架构

2.1 架构模式

系统采用分层架构模式,结合领域驱动设计(DDD)思想,确保代码的可维护性和可扩展性。

graph TB
    subgraph "表现层 (Presentation Layer)"
        A[Controller Layer]
        B[API Gateway]
        C[Web Security]
    end
    
    subgraph "业务层 (Business Layer)"
        D[Service Layer]
        E[Domain Logic]
        F[Business Rules]
    end
    
    subgraph "数据层 (Data Layer)"
        G[Repository Layer]
        H[Entity Layer]
        I[Database Layer]
    end
    
    A --> D
    B --> D
    C --> D
    D --> G
    E --> G
    F --> G
    G --> H
    H --> I

2.2 模块划分

2.2.1 核心模块

graph TD
    A[estate-expert-backend] --> B[common-lib]
    A --> C[admin-server]
    
    subgraph "common-lib - 公共库模块"
        B1[auth - 认证授权]
        B2[config - 配置管理]
        B3[context - 上下文管理]
        B4[domain - 领域对象]
        B5[enums - 枚举定义]
    end
    
    subgraph "admin-server - 管理服务模块"
        C1[component - 组件层]
        C2[config - 配置类]
        C3[controller - 控制器层]
        C4[domain - 领域模型]
        C5[service - 服务层]
        C6[MainApplication.java - 启动类]
    end
    
    B --> B1
    B --> B2
    B --> B3
    B --> B4
    B --> B5
    
    C --> C1
    C --> C2
    C --> C3
    C --> C4
    C --> C5
    C --> C6

2.2.2 业务模块

graph TD
    A[admin-server] --> B[domain - 领域模型]
    A --> C[service - 服务层]
    A --> D[controller - 控制器层]
    
    subgraph "domain - 领域模型"
        B1[business - 业务实体]
        B2[exam - 考试评估]
        B3[plan - 计划管理]
        B4[project - 项目管理]
        B5[standard - 标准体系]
        B6[user - 用户管理]
    end
    
    subgraph "business - 业务实体"
        B11[client - 委托方]
        B12[device - 设备管理]
        B13[car - 车辆管理]
        B14[sign - 签名记录]
    end
    
    subgraph "exam - 考试评估"
        B21[eval - 评估结果]
        B22[record - 记录管理]
        B23[task - 任务管理]
    end
    
    subgraph "standard - 标准体系"
        B51[expert - 专家管理]
        B52[hierarchy - 层级管理]
        B53[model - 模型管理]
        B54[problem - 问题管理]
    end
    
    subgraph "service - 服务层"
        C1[eval - 评估服务]
        C2[expert - 专家服务]
        C3[impl - 服务实现]
    end
    
    subgraph "controller - 控制器层"
        D1[admin - 管理接口]
        D2[api - API接口]
    end
    
    B --> B1
    B --> B2
    B --> B3
    B --> B4
    B --> B5
    B --> B6
    
    B1 --> B11
    B1 --> B12
    B1 --> B13
    B1 --> B14
    
    B2 --> B21
    B2 --> B22
    B2 --> B23
    
    B5 --> B51
    B5 --> B52
    B5 --> B53
    B5 --> B54
    
    C --> C1
    C --> C2
    C --> C3
    
    D --> D1
    D --> D2

3. 技术架构

3.1 技术栈架构

graph TB
    subgraph "前端层"
        A[Web Browser]
        B[Vue.js/React]
    end
    
    subgraph "网关层"
        C[Nginx]
        D[Load Balancer]
    end
    
    subgraph "应用层"
        E[Spring Boot]
        F[Tomcat Embedded]
    end
    
    subgraph "业务层"
        G[Service Layer]
        H[Domain Layer]
        I[Repository Layer]
    end
    
    subgraph "数据层"
        J[MySQL 8.0]
        K[JPA/Hibernate]
    end
    
    subgraph "外部服务"
        L[高德地图API]
        M[模糊评估API]
    end
    
    A --> C
    B --> C
    C --> D
    D --> E
    E --> F
    F --> G
    G --> H
    H --> I
    I --> K
    K --> J
    G --> L
    G --> M

3.2 数据流架构

sequenceDiagram
    participant U as 用户
    participant N as Nginx
    participant A as Spring Boot
    participant S as Service
    participant R as Repository
    participant D as Database
    participant E as 外部API
    
    U->>N: HTTP请求
    N->>A: 转发请求
    A->>S: 业务处理
    S->>R: 数据访问
    R->>D: SQL查询
    D-->>R: 返回数据
    R-->>S: 实体对象
    S->>E: 调用外部API
    E-->>S: API响应
    S-->>A: 业务结果
    A-->>N: JSON响应
    N-->>U: HTTP响应

3.3 部署架构

graph TB
    subgraph "负载均衡层"
        LB[Load Balancer]
    end
    
    subgraph "Web服务器层"
        N1[Nginx Server 1]
        N2[Nginx Server 2]
    end
    
    subgraph "应用服务器层"
        A1[Spring Boot App 1<br/>Port: 8181]
        A2[Spring Boot App 2<br/>Port: 8182]
    end
    
    subgraph "数据库层"
        DB[(MySQL 8.0<br/>Port: 3306)]
    end
    
    subgraph "外部服务"
        MAP[高德地图API]
        FUZZY[模糊评估API<br/>Port: 5000]
    end
    
    LB --> N1
    LB --> N2
    N1 --> A1
    N2 --> A2
    A1 --> DB
    A2 --> DB
    A1 --> MAP
    A1 --> FUZZY
    A2 --> MAP
    A2 --> FUZZY

4. 安全架构

4.1 认证授权流程

sequenceDiagram
    participant C as 客户端
    participant G as Gateway
    participant A as Auth Service
    participant U as User Service
    participant D as Database
    
    C->>G: 登录请求
    G->>A: 验证用户
    A->>U: 查询用户信息
    U->>D: 用户数据查询
    D-->>U: 用户信息
    U-->>A: 用户详情
    A->>A: 生成JWT Token
    A-->>G: 返回Token
    G-->>C: 登录成功
    
    Note over C,D: 后续请求携带Token
    
    C->>G: API请求 + Token
    G->>A: 验证Token
    A-->>G: Token有效
    G->>G: 转发请求
    G-->>C: API响应

4.2 License验证架构

graph TD
    A[系统启动] --> B[读取License配置]
    B --> C[解密License]
    C --> D[验证签名]
    D --> E{签名有效?}
    E -->|否| F[系统停止]
    E -->|是| G[检查过期时间]
    G --> H{是否过期?}
    H -->|是| I[系统停止]
    H -->|否| J[系统正常运行]
    J --> K[定期检查License]
    K --> G