# ai-menu **Repository Path**: gitc_1_0/ai-menu ## Basic Information - **Project Name**: ai-menu - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-03 - **Last Updated**: 2026-04-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ai-memo 一个基于 Jetpack Compose 的本地日程/备忘录应用:把自然语言(聊天记录、会议安排、短信内容等)解析为结构化日程草稿,支持预览微调后保存到本地数据库;可编辑/删除,并可一键跳转到系统日历创建提醒。 如果未配置 AI Key,会自动降级为离线启发式解析,保证主流程可用。 ## 功能与作用(按用户视角) - 自然语言解析 → 日程草稿:输入一段文字,点击“解析”,生成 1-N 条日程草稿(标题/时间/地点/优先级)。 - 预览并微调:解析后不会直接落库,而是在底部面板里逐条修改字段、删除不需要的事项,确认无误再保存。 - 我的日程列表:保存后的日程在首页列表展示,按最近更新时间排序;重要事项会更醒目。 - 新增/编辑/删除:通过“新增”页面手动创建;点击列表项进入编辑页,支持保存修改或删除。 - 系统日历提醒:在列表卡片点击“提醒”,跳转系统日历的新增事件界面并自动填入标题/地点/描述。 - 从其他 App 分享文字:在其他 App 中“分享文本”到 ai-memo,会自动打开新增页面并预填文字内容。 - UI 样式切换/对比:顶部栏可切换“现代/经典”样式,并提供对比页用于查看组件差异。 ## 代码结构与模块职责(按工程视角) > 目录:`app/src/main/java/com/aimemo/` - `MainActivity.kt`:应用入口;处理外部分享 `ACTION_SEND` 的文本并传入导航层。 - `AiMemoApp.kt`:Application;组装依赖(Room、AI Parser、Repository),并根据是否配置 `AI_API_KEY` 决定使用在线 AI 解析或离线解析。 - `ui/`:Compose UI 与导航 - `AppNav.kt`:Navigation Compose 路由与页面切换;底部导航(首页/新增);接入 sharedText 跳转到新增页。 - `screens/`:页面(Home / Edit / UI 对比) - `viewmodel/`:状态管理与业务编排(解析→预览→保存;加载→编辑→保存/删除) - `design/`、`theme/`:设计组件与主题 - `data/`:数据层 - `ai/`:解析策略 - `OpenAiCompatibleParser.kt`:调用 OpenAI Compatible 的 `v1/chat/completions`,将返回 JSON 解析为草稿列表 - `HeuristicParser.kt`:离线启发式解析(时间/地点/优先级的简单抽取) - `db/`:Room 数据库(`AiMemoDatabase` / `MemoEventDao` / `MemoEventEntity`) - `repo/`:Repository(统一数据入口;对外提供 Flow 观察、解析、保存草稿、增删改) ## 技术栈 - 语言与构建:Kotlin 1.9.x、Gradle Kotlin DSL、Android Gradle Plugin 8.5.x、JDK 17 - UI:Jetpack Compose、Material 3、Navigation Compose - 架构:ViewModel + StateFlow、轻量分层(UI / ViewModel / Repository / DataSource) - 异步:Kotlin Coroutines - 本地存储:Room(SQLite) - 网络与序列化:Retrofit、OkHttp、Moshi - 测试:JUnit4、Compose UI Test、AndroidX Test、MockWebServer、Coroutines Test ## 部署与运行(本地开发) ### 1) 环境要求 - Android Studio(建议使用内置 JDK 17) - Android SDK:compileSdk/targetSdk 34,minSdk 26 ### 2) 配置 AI(可选) 默认不需要配置即可运行(会自动使用离线解析)。 如需启用在线 AI 解析,需要在 Gradle 属性里提供: - `AI_API_KEY`:API Key(留空则使用离线解析) - `AI_BASE_URL`:OpenAI Compatible Base URL,默认 `https://api.openai.com/`(注意必须以 `/` 结尾) - `AI_MODEL`:模型名,默认 `gpt-4o-mini` 推荐写在用户级 Gradle 配置(避免误提交到仓库): - Windows:`%USERPROFILE%\.gradle\gradle.properties` - macOS/Linux:`~/.gradle/gradle.properties` 示例: ```properties AI_API_KEY=sk-xxxxxxxx AI_BASE_URL=https://api.openai.com/ AI_MODEL=gpt-4o-mini ``` 也可以在命令行临时传入(注意命令历史可能泄露 Key): ```bash ./gradlew assembleDebug -PAI_API_KEY=sk-xxx -PAI_BASE_URL=https://api.openai.com/ -PAI_MODEL=gpt-4o-mini ``` ### 3) 构建、安装与运行 - 使用 Android Studio:直接点击 Run 运行到真机/模拟器 - 命令行构建(Windows): ```powershell .\gradlew.bat assembleDebug ``` - 安装到设备(需已安装 adb 且设备已连接): ```powershell adb install -r app\build\outputs\apk\debug\app-debug.apk ``` ## 测试与静态检查 - 单元测试(JVM): ```powershell .\gradlew.bat testDebugUnitTest ``` - UI 测试(需连接设备或启动模拟器): ```powershell .\gradlew.bat connectedDebugAndroidTest ``` - Android Lint: ```powershell .\gradlew.bat lintDebug ``` ## 更多文档 - 技术设计与测试说明:`TECHNICAL.md` - 使用说明(用户视角):`USER_GUIDE.md`