EatLater 是一款专注于即时干预冲动性饮食行为的安卓应用。通过负面视觉刺激和暂停语义,帮助用户在产生强烈进食欲望但尚未完成下单或进食前的关键时刻,延迟或打断冲动决策。
- 开发语言: Kotlin
- 架构模式: MVVM (Model-View-ViewModel)
- UI 框架: Android Views + Data Binding
- 测试框架: JUnit, Espresso, Kotest (属性测试)
- 最低 Android 版本: API 24 (Android 7.0)
- 目标 Android 版本: API 34 (Android 14)
EatLater/
├── app/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/eatlater/app/
│ │ │ │ ├── data/
│ │ │ │ │ ├── model/ # 数据模型
│ │ │ │ │ │ ├── FoodInput.kt
│ │ │ │ │ │ └── InterventionContent.kt
│ │ │ │ │ └── repository/ # 数据仓库接口
│ │ │ │ │ ├── ImageLibrary.kt
│ │ │ │ │ ├── TextLibrary.kt
│ │ │ │ │ └── InterventionRepository.kt
│ │ │ │ └── ui/
│ │ │ │ ├── state/ # UI 状态管理
│ │ │ │ │ └── InterventionState.kt
│ │ │ │ ├── view/ # 视图接口
│ │ │ │ │ ├── InterventionView.kt
│ │ │ │ │ └── FoodInputView.kt
│ │ │ │ └── viewmodel/ # ViewModel 层
│ │ │ │ └── InterventionViewModel.kt
│ │ │ ├── res/ # Android 资源文件
│ │ │ │ ├── values/
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ └── themes.xml
│ │ │ │ └── xml/
│ │ │ │ ├── data_extraction_rules.xml
│ │ │ │ └── backup_rules.xml
│ │ │ └── AndroidManifest.xml
│ │ └── test/
│ │ └── java/com/eatlater/app/
│ │ ├── TestConfig.kt # 测试配置
│ │ └── data/model/ # 单元测试
│ │ ├── FoodInputTest.kt
│ │ └── InterventionContentTest.kt
│ ├── build.gradle.kts # 应用构建配置
│ └── proguard-rules.pro # 代码混淆规则
├── gradle/wrapper/ # Gradle Wrapper
├── build.gradle.kts # 项目构建配置
├── settings.gradle.kts # 项目设置
├── gradle.properties # Gradle 属性
└── gradlew.bat # Gradle Wrapper (Windows)
- FoodInput: 食物输入数据类,包含验证逻辑
- InterventionContent: 干预内容数据类,包含图片和文案
- ImageLibrary: 图片库接口,管理反差视觉图片
- TextLibrary: 文案库接口,管理暂停引导文案
- InterventionRepository: 数据仓库接口,协调各数据源
- InterventionState: 应用状态管理,使用密封类定义各种状态
- InterventionView: 主界面视图接口
- FoodInputView: 食物输入组件接口
- InterventionViewModel: MVVM 架构的 ViewModel,管理业务逻辑
- JUnit: 单元测试框架
- Espresso: Android UI 测试框架
- Kotest: Kotlin 属性测试框架,用于验证正确性属性
- Android Studio Arctic Fox 或更高版本
- JDK 8 或更高版本
- Android SDK API 24-34
# Windows
gradlew.bat build # 构建项目
gradlew.bat test # 运行单元测试
gradlew.bat connectedAndroidTest # 运行 Android 测试
# Linux/Mac
./gradlew build # 构建项目
./gradlew test # 运行单元测试
./gradlew connectedAndroidTest # 运行 Android 测试✅ 任务 1: 设置项目结构和核心接口 - 已完成
- 创建了完整的 Android 项目目录结构
- 定义了核心数据类和接口
- 配置了测试框架 (JUnit, Espresso, Kotest)
- 建立了 MVVM 架构基础
🔄 后续任务: 参见 .kiro/specs/impulse-eating-intervention/tasks.md
详细的需求和设计文档位于:
- 需求文档:
.kiro/specs/impulse-eating-intervention/requirements.md - 设计文档:
.kiro/specs/impulse-eating-intervention/design.md - 任务列表:
.kiro/specs/impulse-eating-intervention/tasks.md