# 架构设计文档
## 🏗️ 整体架构
智慧建筑应用采用模块化架构设计,主要分为四个核心模块:
```mermaid
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 架构模式
```mermaid
graph TD
subgraph "MVVM 架构模式"
A[View Layer
Activity/Fragment] --> B[ViewModel
业务逻辑处理]
B --> C[Repository
数据仓库]
C --> D[API Service
网络服务]
C --> E[Local Storage
本地存储]
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
```
### 核心组件
```mermaid
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界面。
```mermaid
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 模块
基础核心模块,提供通用功能和工具类。
```mermaid
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 服务
```mermaid
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管理
### 数据流向
```mermaid
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
Token管理]
G[LoggingInterceptor
日志记录]
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管理
- **协程支持**: 现代化的异步处理方式