架构设计文档

🏗️ 整体架构

智慧建筑应用采用模块化架构设计,主要分为四个核心模块:

graph TB
    subgraph "智慧建筑应用架构"
        A[App 主应用模块] --> B[BaseCore 基础核心模块]
        A --> C[WaterDrop 水滴效果模块]
        A --> D[ImageSelector 图片选择器模块]
    end
    
    subgraph "App 模块功能"
        A1[UI界面层]
        A2[业务逻辑层]
        A3[数据管理层]
    end
    
    subgraph "BaseCore 模块功能"
        B1[基础Activity/Fragment]
        B2[网络请求封装]
        B3[工具类集合]
        B4[通用UI组件]
    end
    
    A --> A1
    A --> A2
    A --> A3
    B --> B1
    B --> B2
    B --> B3
    B --> B4

📱 应用架构

MVVM 架构模式

graph TD
    subgraph "MVVM 架构模式"
        A[View Layer<br/>Activity/Fragment] --> B[ViewModel<br/>业务逻辑处理]
        B --> C[Repository<br/>数据仓库]
        C --> D[API Service<br/>网络服务]
        C --> E[Local Storage<br/>本地存储]
    end
    
    subgraph "数据流向"
        F[用户操作] --> A
        A --> G[UI更新]
        B --> H[LiveData/StateFlow]
        H --> A
    end
    
    F --> A
    A --> B
    B --> C
    C --> D
    C --> E
    B --> H
    H --> G

核心组件

classDiagram
    class BaseBindingActivity {
        +getRootView()* View
        +initView()*
        +bindDataObserver()
        +requestPermission()
        +transStatusBar()
    }
    
    class MainActivity {
        +initView()
        +bindDataObserver()
        +loadRootPage()
        +showFragment()
        -mPageList: ArrayList~BasePageFragment~
        -viewModel: MainViewModel
    }
    
    class BaseFragment {
        +getRootView()* View
        +initView()*
        +initData()*
    }
    
    class BasePageFragment {
        +onBindObserver()
        -mContext: Context
    }
    
    class BaseContextViewModel {
        +searchFilter()
        +launchOnUI()
    }
    
    class MainViewModel {
        +generateTab()
        +generatePage()
        +tabProvider: TabEventProvider
        -tabObserver: TabObserver
    }
    
    BaseBindingActivity <|-- MainActivity
    BaseBindingActivity <|-- LoginActivity
    BaseBindingActivity <|-- ProjectDetailsActivity
    BaseFragment <|-- BasePageFragment
    BasePageFragment <|-- MainFragment
    BasePageFragment <|-- HomeFragment
    BasePageFragment <|-- MineFragment
    BaseContextViewModel <|-- MainViewModel
    MainActivity --> MainViewModel
    MainActivity --> BasePageFragment

1. BaseBindingActivity

  • 所有Activity的基类
  • 提供ViewBinding支持
  • 统一的生命周期管理
  • 权限请求封装

2. MainActivity

  • 主界面容器
  • 底部导航管理
  • Fragment切换控制
  • 权限初始化

3. 页面模块

  • 首页模块: 功能导航、轮播图
  • 项目管理: 项目详情、设备管理
  • 任务管理: 计划创建、任务分配
  • 签到模块: 员工签到、项目签到
  • 图片模块: 选择、编辑、预览

🔧 模块详解

App 模块

主应用模块,包含所有业务逻辑和UI界面。

graph TD
    subgraph "App 模块包结构"
        A[com.example.smart] --> B[ui/ UI层]
        A --> C[util/ 工具类]
        A --> D[request/ 网络请求]
        A --> E[enumlist/ 枚举定义]
        
        B --> B1[main/ 主界面]
        B --> B2[home/ 首页]
        B --> B3[project/ 项目管理]
        B --> B4[plan/ 计划管理]
        B --> B5[sign/ 签到模块]
        B --> B6[item/ 任务管理]
        B --> B7[options/ 配置选项]
    end

主要包结构:
com.example.smart/ ├── ui/ # UI层 │ ├── main/ # 主界面 │ ├── home/ # 首页 │ ├── project/ # 项目管理 │ ├── plan/ # 计划管理 │ ├── sign/ # 签到模块 │ ├── item/ # 任务管理 │ └── options/ # 配置选项 ├── util/ # 工具类 ├── request/ # 网络请求 └── enumlist/ # 枚举定义

BaseCore 模块

基础核心模块,提供通用功能和工具类。

graph LR
    subgraph "BaseCore 模块功能"
        A[基础Activity/Fragment] --> B[网络请求封装]
        B --> C[工具类集合]
        C --> D[通用UI组件]
        D --> E[权限管理]
    end
    
    subgraph "提供能力"
        F[ViewBinding支持]
        G[生命周期管理]
        H[权限请求]
        I[网络拦截器]
        J[工具方法]
    end
    
    A --> F
    A --> G
    A --> H
    B --> I
    C --> J

主要功能:
- 基础Activity/Fragment
- 网络请求封装
- 工具类集合
- 通用UI组件
- 权限管理

WaterDrop 模块

水滴效果模块,提供特殊UI效果。

ImageSelector 模块

图片选择器模块,提供图片选择和管理功能。

🌐 网络架构

API 服务

sequenceDiagram
    participant UI as UI Layer
    participant VM as ViewModel
    participant API as ApiService
    participant Client as RetrofitClient
    participant Server as Server
    
    UI->>VM: 用户操作
    VM->>API: 直接调用API
    API->>Client: Retrofit请求
    Client->>Server: HTTP请求
    Server-->>Client: 响应数据
    Client-->>API: 返回结果
    API-->>VM: 处理数据
    VM-->>UI: 更新UI

网络架构特点:
- 使用 Retrofit + OkHttp
- 统一的请求拦截器 (HeaderInterceptor, LoggingInterceptor)
- 双服务器支持 (主服务器 + OSS服务器)
- 协程支持 (suspend函数)
- 自动Token管理

数据流向

graph LR
    A[UI] --> B[ViewModel]
    B --> C[ApiService]
    C --> D[RetrofitClient]
    D --> E[Server]
    
    E --> D
    D --> C
    C --> B
    B --> A
    
    subgraph "拦截器"
        F[HeaderInterceptor<br/>Token管理]
        G[LoggingInterceptor<br/>日志记录]
    end
    
    D --> F
    D --> G

✅ 架构验证总结

基于代码分析,当前架构图已根据实际代码进行了以下修正:

🔍 验证结果

✅ 正确的架构设计

  1. 模块化架构: 四个核心模块 (App, BaseCore, WaterDrop, ImageSelector) 确实存在
  2. MVVM模式: ViewModel确实存在,但简化了Repository层,直接使用ApiService
  3. 基类继承: BaseBindingActivity → MainActivity 的继承关系正确
  4. Fragment架构: BaseFragment → BasePageFragment 的继承关系正确
  5. 网络架构: Retrofit + OkHttp + 拦截器的设计正确

🔧 架构修正

  1. 简化数据层: 实际代码中没有Repository层,ViewModel直接调用ApiService
  2. 拦截器设计: 添加了HeaderInterceptor和LoggingInterceptor的详细说明
  3. 双服务器支持: 主服务器和OSS服务器的配置正确
  4. 协程支持: 使用suspend函数进行异步处理

📱 实际包结构验证

  • com.example.smart.ui.main - 主界面模块 ✅
  • com.example.smart.ui.home - 首页模块 ✅
  • com.example.smart.ui.project - 项目管理模块 ✅
  • com.example.smart.ui.plan - 计划管理模块 ✅
  • com.example.smart.ui.sign - 签到模块 ✅
  • com.example.smart.ui.item - 任务管理模块 ✅
  • com.example.smart.ui.options - 配置选项模块 ✅

🌐 网络架构验证

  • RetrofitClient: 单例模式,支持双服务器 ✅
  • ApiService: 接口定义完整,使用suspend函数 ✅
  • 拦截器: HeaderInterceptor自动添加Token,LoggingInterceptor记录日志 ✅
  • 协程支持: 所有API调用都使用suspend函数 ✅

📋 架构特点

  • 简化设计: 去除了Repository层,直接使用ApiService
  • 模块化: 清晰的模块划分,便于维护
  • 基类复用: 统一的基类设计,减少重复代码
  • 网络优化: 双服务器支持,自动Token管理
  • 协程支持: 现代化的异步处理方式