# 车管家 4S店车辆维保管理系统 - Android 客户端

基于 **Kotlin + Jetpack Compose** 开发的现代化 Android 应用。

## 技术栈

- **UI 框架**: Jetpack Compose (Material 3)
- **架构**: MVVM + Clean Architecture
- **依赖注入**: Hilt
- **网络请求**: Retrofit + OkHttp
- **异步处理**: Coroutines + Flow
- **本地存储**: DataStore (用于存储Token和用户信息)
- **导航**: Navigation Compose

## 项目结构

```
app/
├── data/                      # 数据层
│   ├── local/                 # 本地数据
│   ├── model/                 # 数据模型
│   ├── remote/                # 远程数据源
│   │   ├── ApiService.kt      # API接口定义
│   │   └── ApiResponse.kt     # API响应封装
│   ├── repository/            # 仓库层
│   └── manager/               # 数据管理器
├── di/                        # 依赖注入模块
│   └── NetworkModule.kt       # 网络模块配置
├── ui/                        # UI层
│   ├── navigation/            # 导航配置
│   ├── screen/                # 页面
│   │   ├── customer/          # 客户模块
│   │   └── admin/             # 管理员模块
│   ├── theme/                 # 主题配置
│   └── viewmodel/             # ViewModel
└── MainActivity.kt            # 主Activity
```

## 功能模块

### 已实现功能
- ✅ 用户登录/登出
- ✅ 角色权限管理（管理员、工作人员、客户）
- ✅ 客户仪表板
  - 查看我的车辆
  - 查看维保记录
  - 查看预约记录
- ✅ 管理员仪表板（基础版）
- ✅ 数据持久化（Token存储）

### 待完善功能
- ⏳ 在线预约表单
- ⏳ 管理员完整功能
- ⏳ 工作人员功能
- ⏳ 推送通知
- ⏳ 车辆详情查看
- ⏳ 工单详情查看

## 开发环境要求

- Android Studio Hedgehog (2023.1.1) 或更高版本
- JDK 17
- Android SDK 34
- Gradle 8.2

## 配置说明

### API 地址配置

在 `app/build.gradle.kts` 中修改 API_BASE_URL：

```kotlin
// 模拟器测试（访问宿主机localhost）
buildConfigField("String", "API_BASE_URL", "\"http://10.0.2.2:8080/api/\"")

// 真机测试（改为实际IP）
buildConfigField("String", "API_BASE_URL", "\"http://192.168.1.100:8080/api/\"")
```

### 测试账号

- **管理员**: admin / 123456
- **工作人员**: staff001 / 123456
- **客户**: customer001 / 123456

## 构建和运行

### 使用 Android Studio

1. 打开 Android Studio
2. 选择 `File > Open`，选择 `android` 目录
3. 等待 Gradle 同步完成
4. 连接 Android 模拟器或真机
5. 点击 Run 按钮（或按 Shift+F10）

### 使用命令行

```bash
# 进入项目目录
cd android

# 构建 Debug 版本
./gradlew assembleDebug

# 安装到设备
./gradlew installDebug

# 或者直接运行
./gradlew installDebug
```

## 主要依赖

```kotlin
// Compose BOM
implementation(platform("androidx.compose:compose-bom:2023.10.01"))

// Hilt
implementation("com.google.dagger:hilt-android:2.48")

// Retrofit
implementation("com.squareup.retrofit2:retrofit:2.9.0")

// OkHttp
implementation("com.squareup.okhttp3:okhttp:4.12.0")

// DataStore
implementation("androidx.datastore:datastore-preferences:1.0.0")
```

## 开发注意事项

### 网络权限
已在 `AndroidManifest.xml` 中配置：
- `INTERNET` - 访问网络
- `ACCESS_NETWORK_STATE` - 检查网络状态
- `usesCleartextTraffic="true"` - 允许HTTP请求（仅用于开发）

### ProGuard 配置
已添加 Retrofit、OkHttp、Gson、Hilt 的混淆规则。

## 架构设计

### 分层架构
```
Presentation Layer (UI)
    ↓
Domain Layer (ViewModel)
    ↓
Data Layer (Repository)
    ↓
Remote Data Source (API)
```

### 数据流
```
UI Screen
    ↓ (用户操作)
ViewModel
    ↓ (调用方法)
Repository
    ↓ (网络请求)
API Service
    ↓ (返回数据)
Repository (处理数据)
    ↓ (StateFlow)
ViewModel (状态更新)
    ↓ (collectAsState)
UI Screen (自动更新)
```

## 贡献指南

1. Fork 项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request

## 许可证

本项目采用 MIT 许可证
