# 车管家 Android 客户端 - 快速开始指南

## 项目概述

这是一个现代化的 Android 应用，为车管家 4S店车辆维保管理系统提供移动端支持。

## 开发前准备

### 1. 安装 Android Studio

下载并安装最新版本的 Android Studio:
https://developer.android.com/studio

### 2. 配置 JDK

确保安装了 JDK 17 或更高版本：
```bash
java -version  # 应该显示 17.x.x 或更高
```

### 3. 启动后端服务

在运行 Android 应用之前，确保后端服务正在运行：

```bash
# 进入后端项目目录
cd car-maintenance-system/backend

# 使用 Maven 启动服务
mvn spring-boot:run

# 或者在 IDEA 中运行 SpringBootAppApplication.java
```

后端默认运行在 `http://localhost:8080`

### 4. 配置 API 地址

根据你的测试环境，修改 `app/build.gradle.kts`：

**使用 Android 模拟器：**
```kotlin
buildConfigField("String", "API_BASE_URL", "\"http://10.0.2.2:8080/api/\"")
```

**使用真机：**
```kotlin
buildConfigField("String", "API_BASE_URL", "\"http://YOUR_PC_IP:8080/api/\"")
// 例如: "http://192.168.1.100:8080/api/"
```

## 运行应用

### 方式一：使用 Android Studio

1. 打开 Android Studio
2. 选择 **File > Open**
3. 选择 `car-maintenance-system/android` 目录
4. 等待 Gradle 同步完成
5. 点击工具栏的 Run 按钮 (绿色三角形)

### 方式二：使用命令行

```bash
cd android

# 查看连接的设备
adb devices

# 安装并运行
./gradlew installDebug
```

## 测试账号

| 角色 | 用户名 | 密码 | 功能 |
|------|--------|------|------|
| 管理员 | admin | 123456 | 系统管理、数据统计 |
| 工作人员 | staff001 | 123456 | 工单处理、预约确认 |
| 客户 | customer001 | 123456 | 查看车辆、预约服务 |

## 项目结构说明

```
android/
├── app/                           # 应用模块
│   ├── src/main/
│   │   ├── java/com/carmaintenance/
│   │   │   ├── data/              # 数据层
│   │   │   │   ├── local/         # 本地存储
│   │   │   │   ├── model/         # 数据模型
│   │   │   │   ├── remote/        # API接口
│   │   │   │   ├── repository/    # 数据仓库
│   │   │   │   └── manager/       # Token管理
│   │   │   ├── di/                # 依赖注入
│   │   │   ├── ui/                # UI层
│   │   │   │   ├── navigation/    # 导航
│   │   │   │   ├── screen/        # 页面
│   │   │   │   ├── theme/         # 主题
│   │   │   │   └── viewmodel/     # 视图模型
│   │   │   ├── CarMaintenanceApplication.kt
│   │   │   └── MainActivity.kt
│   │   └── res/                   # 资源文件
│   ├── build.gradle.kts           # 应用级构建配置
│   └── proguard-rules.pro         # 混淆规则
├── build.gradle.kts               # 项目级构建配置
├── settings.gradle.kts            # Gradle设置
└── gradle.properties              # Gradle属性
```

## 常见问题

### 1. Gradle 同步失败

**问题**: Gradle 同步时出现错误

**解决方案**:
```bash
# 清理项目
./gradlew clean

# 重新构建
./gradlew build

# 如果还是失败，删除 .gradle 目录后重试
rm -rf .gradle
```

### 2. 网络请求失败

**问题**: 应用无法连接到服务器

**解决方案**:
- 确认后端服务正在运行
- 检查 API_BASE_URL 配置
- 确保设备和电脑在同一网络（真机测试）
- 检查防火墙设置

### 3. 登录失败

**问题**: 登录时提示错误

**解决方案**:
- 确认后端数据库中有测试用户
- 检查用户名和密码是否正确
- 查看后端日志确认请求是否到达

### 4. 模拟器无法访问宿主机

**问题**: 模拟器中的 App 无法访问电脑上的后端服务

**解决方案**:
使用 `10.0.2.2` 代替 `localhost`:
```kotlin
// 错误
buildConfigField("String", "API_BASE_URL", "\"http://localhost:8080/api/\"")

// 正确（模拟器）
buildConfigField("String", "API_BASE_URL", "\"http://10.0.2.2:8080/api/\"")
```

### 5. 数据显示为空

**问题**: 登录后车辆、工单等数据显示为空

**解决方案**:
- 确认后端数据库有相关数据
- 使用 Admin 账号登录后台添加测试数据
- 检查客户ID是否正确关联

## 调试技巧

### 查看 API 请求

在 `NetworkModule.kt` 中，日志级别已设置为 `BODY`：
```kotlin
if (BuildConfig.DEBUG) {
    HttpLoggingInterceptor.Level.BODY
}
```

在 Logcat 中过滤 `OkHttp` 即可看到所有网络请求。

### 查看 Token 存储

在 Logcat 中过滤 `TokenManager` 可以看到 Token 相关的日志。

## 下一步开发

### 功能优先级

1. **高优先级**
   - 在线预约表单
   - 车辆详情查看
   - 工单详情查看

2. **中优先级**
   - 管理员完整功能
   - 工作人员功能
   - 推送通知

3. **低优先级**
   - 数据刷新机制
   - 离线缓存
   - 图片上传

### 扩展功能建议

- [ ] 车辆照片上传
- [ ] 电子签名
- [ ] 扫码查看车辆
- [ ] 消息推送（Firebase）
- [ ] 支付集成
- [ ] 数据导出
- [ ] 多语言支持

## 技术支持

如有问题，请查看：
- [Jetpack Compose 官方文档](https://developer.android.com/jetpack/compose)
- [Hilt 官方文档](https://dagger.dev/hilt/)
- [Retrofit 官方文档](https://square.github.io/retrofit/)
