docs: 同步 AGENTS.md 文档,反映纯 Android 项目结构

- 更新所有层级 AGENTS.md 中的模块描述(:app / :core)
- 移除 KMP/iOS 相关引用,统一为纯 Android + Jetpack Compose
- 同步构建命令和测试路径

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
xfy 2026-05-20 16:46:17 +08:00
parent e1345cc071
commit 2028897ce3
11 changed files with 92 additions and 89 deletions

View File

@ -3,14 +3,14 @@
# YaYa
## Purpose
YaYa 是一款基于 Kotlin Multiplatform + Compose Multiplatform 构建的日历应用,同时支持 Android 和 iOS 平台。应用功能包括农历显示、节气标注、节假日信息、个人班次排期WORK/OFF 循环)以及月/周/年三种视图切换。
YaYa 是一款基于纯 Android + Jetpack Compose 构建的日历应用。应用功能包括农历显示、节气标注、节假日信息、个人班次排期WORK/OFF 循环)以及月/周/年三种视图切换。
## Key Files
| File | Description |
|------|-------------|
| `build.gradle.kts` | 根项目 Gradle 构建设置 |
| `settings.gradle.kts` | Gradle 项目包含模块声明 |
| `settings.gradle.kts` | Gradle 项目包含模块声明`:app`, `:core` |
| `gradle.properties` | Gradle 构建设置与缓存配置 |
| `gradle/libs.versions.toml` | 版本目录(依赖版本统一管理) |
| `CLAUDE.md` | 项目开发指南与架构文档 |
@ -22,9 +22,8 @@ YaYa 是一款基于 Kotlin Multiplatform + Compose Multiplatform 构建的日
| Directory | Purpose |
|-----------|---------|
| `androidApp/` | Android 应用壳层模块(见 `androidApp/AGENTS.md` |
| `shared/` | KMP 共享模块:所有 UI、ViewModel 和业务逻辑(见 `shared/AGENTS.md` |
| `iosApp/` | iOS Xcode 项目(见 `iosApp/AGENTS.md` |
| `app/` | Android 应用壳层模块(见 `app/AGENTS.md` |
| `core/` | Android Library 核心模块:所有 Compose UI、ViewModel 和业务逻辑(见 `core/AGENTS.md` |
| `gradle/` | Gradle Wrapper 文件 |
## For AI Agents
@ -35,19 +34,20 @@ YaYa 是一款基于 Kotlin Multiplatform + Compose Multiplatform 构建的日
- 构建配置在根 `build.gradle.kts` 和各模块 `build.gradle.kts`
### Testing Requirements
- 共享模块测试:`./gradlew :shared:allTests``:shared:testAndroidHostTest`
- Android 构建:`./gradlew :androidApp:assembleDebug`
- 核心模块测试:`./gradlew :core:test`
- Android 构建:`./gradlew :app:assembleDebug`
- 安装验证:`./gradlew :app:installDebug`
### Common Patterns
- Kotlin 包名统一为 `plus.rua.project`
- UI 组件在 `plus.rua.project.ui` 包下
- 平台相关代码通过 `expect/actual` 机制隔离
- `:app` 模块仅包含入口 Activity所有 UI 和逻辑在 `:core` 模块
## Dependencies
### External
- Kotlin 2.3.21, Compose Multiplatform 1.11.0, Material 3 1.10.0-alpha05
- Kotlin 2.3.21, Jetpack Compose BOM, Material 3
- `kotlinx-datetime` 0.8.0, `tyme4kt`(农历/节气), `sketch` 4.4.0GIF
- AGP 9.2.1, compileSdk/targetSdk 37, minSdk 24
<!-- MANUAL: -->
<!-- MANUAL: -->

View File

@ -1,22 +1,24 @@
<!-- Parent: ../AGENTS.md -->
<!-- Generated: 2026-05-20 | Updated: 2026-05-20 -->
# androidApp
# app
## Purpose
Android 应用壳层模块,仅包含入口 `MainActivity` 和最小化的 Android 平台配置。所有 UI 和业务逻辑均来自 `:shared` 模块。
Android 应用壳层模块,仅包含入口 `MainActivity``AboutActivity``LicensesActivity` 和最小化的 Android 平台配置。所有 UI 和业务逻辑均来自 `:core` 模块。
## Key Files
| File | Description |
|------|-------------|
| `build.gradle.kts` | Android 应用模块构建配置 |
| `src/main/kotlin/plus/rua/project/MainActivity.kt` | Android 入口 Activity设置 `App()` Composable |
| `src/main/AndroidManifest.xml` | Android 清单,声明 MainActivity 和主题 |
| `src/main/kotlin/plus/rua/project/MainActivity.kt` | Android 入口 Activity设置 `CalendarMonthView()` Composable |
| `src/main/kotlin/plus/rua/project/AboutActivity.kt` | 关于页面 Activity |
| `src/main/kotlin/plus/rua/project/LicensesActivity.kt` | 许可证列表 Activity |
| `src/main/AndroidManifest.xml` | Android 清单,声明 Activities 和主题 |
| `src/main/res/values/themes.xml` | 应用主题配置Material 3 |
| `src/main/res/values-night/themes.xml` | 夜间模式主题 |
| `src/main/res/values/strings.xml` | 应用名称字符串 |
| `src/main/assets/app_icon.png` | 应用图标资源 |
| `src/main/res/anim/` | Activity 转场动画slide_in/slide_out |
| `src/main/assets/gifs/` | GIF 动画资源目录 |
## Subdirectories
@ -24,31 +26,32 @@ Android 应用壳层模块,仅包含入口 `MainActivity` 和最小化的 Andr
| Directory | Purpose |
|-----------|---------|
| `src/main/` | 主源码与资源(见 `src/main/AGENTS.md` |
| `src/debug/` | Debug 构建资源(如 debug 图标) |
| `src/debug/` | Debug 构建资源 |
| `src/release/` | Release 构建资源 |
## For AI Agents
### Working In This Directory
- 不要在此模块添加业务逻辑;所有代码应放在 `:shared` 模块
- 仅修改 Android 特有的配置Manifest、主题、权限、应用图标
- `MainActivity.kt` 应保持简洁,仅负责调用 `App()`
- 不要在此模块添加业务逻辑;所有代码应放在 `:core` 模块
- 仅修改 Android 特有的配置Manifest、主题、权限、Activity 声明
- `MainActivity.kt` 应保持简洁,仅负责调用 `CalendarMonthView()`
### Testing Requirements
- 构建验证:`./gradlew :androidApp:assembleDebug`
- 安装验证:`./gradlew :androidApp:installDebug`
- 构建验证:`./gradlew :app:assembleDebug`
- 安装验证:`./gradlew :app:installDebug`
### Common Patterns
- 使用 `enableEdgeToEdge()` 实现全屏边缘到边缘显示
- Activity 转场使用 `overridePendingTransition()` 配合 `res/anim/` 中的 XML 动画
- 主题继承自 `Theme.AppCompat.DayNight.NoActionBar`
## Dependencies
### Internal
- `:shared` 模块 — 提供所有 UI 和逻辑
- `:core` 模块 — 提供所有 UI 和逻辑
### External
- Android Gradle Plugin 9.2.1
- Material 3, Compose runtime
- Material 3, Compose runtime, Compose UI tooling
<!-- MANUAL: -->
<!-- MANUAL: -->

View File

@ -4,25 +4,29 @@
# main
## Purpose
Android 应用主 source set包含入口 Activity、应用清单、主题资源和图标资源。
Android 应用主 source set包含入口 Activities、应用清单、主题资源、转场动画和图标资源。
## Key Files
| File | Description |
|------|-------------|
| `kotlin/plus/rua/project/MainActivity.kt` | Android 入口 Activity |
| `kotlin/plus/rua/project/AboutActivity.kt` | 关于页面 Activity |
| `kotlin/plus/rua/project/LicensesActivity.kt` | 许可证列表 Activity |
| `AndroidManifest.xml` | Android 应用清单 |
| `res/values/themes.xml` | Material 3 主题定义 |
| `res/values-night/themes.xml` | 夜间模式主题 |
| `res/values/strings.xml` | 应用名称等字符串 |
| `assets/app_icon.png` | 应用图标 |
| `res/anim/slide_in_right.xml` | Activity 进入动画(右滑入) |
| `res/anim/slide_out_left.xml` | Activity 退出动画(左滑出) |
| `assets/gifs/` | GIF 动画资源 |
## Subdirectories
| Directory | Purpose |
|-----------|---------|
| `kotlin/plus/rua/project/` | Kotlin 源码(见 `kotlin/plus/rua/project/AGENTS.md` |
| `res/` | Android 资源文件(图标、主题、字符串) |
| `res/` | Android 资源文件(图标、主题、字符串、动画 |
| `assets/` | 原始资产文件GIF 等) |
## For AI Agents
@ -31,10 +35,11 @@ Android 应用主 source set包含入口 Activity、应用清单、主题资
- 仅放置 Android 平台特有的配置和入口代码
- 不要在此添加业务逻辑
- 主题和颜色配置在 `res/values/`
- 新增 Activity 需在 `AndroidManifest.xml` 中声明
## Dependencies
### Internal
- `:shared` 模块 — `MainActivity` 调用 `App()` 入口
- `:core` 模块 — Activities 调用 `:core` 中的 Composable
<!-- MANUAL: -->
<!-- MANUAL: -->

View File

@ -4,13 +4,15 @@
# project
## Purpose
Android 应用入口源码目录,包含 `MainActivity.kt`。
Android 应用入口源码目录,包含 `MainActivity.kt`、`AboutActivity.kt``LicensesActivity.kt`。
## Key Files
| File | Description |
|------|-------------|
| `MainActivity.kt` | Android 入口 Activity继承 `ComponentActivity`,调用 `setContent { App() }` |
| `MainActivity.kt` | Android 入口 Activity继承 `ComponentActivity`,调用 `setContent { CalendarMonthView() }` |
| `AboutActivity.kt` | 关于页面 Activity展示应用信息 |
| `LicensesActivity.kt` | 许可证列表 Activity展示开源依赖许可 |
## Subdirectories
@ -18,12 +20,12 @@ Android 应用入口源码目录,仅包含 `MainActivity.kt`。
## For AI Agents
### Working In This Directory
- `MainActivity.kt` 应保持极简,不要添加额外逻辑
- 所有 UI 和业务逻辑在 `:shared` 模块中
- Activities 应保持极简,不要添加额外业务逻辑
- 所有 UI 和业务逻辑在 `:core` 模块中
## Dependencies
### Internal
- `shared/src/commonMain/kotlin/plus/rua/project/App.kt` — `App()` Composable 入口
- `:core` 模块 — `MainActivity` 调用 `CalendarMonthView()` Composable 入口
<!-- MANUAL: -->
<!-- MANUAL: -->

View File

@ -1,49 +1,48 @@
<!-- Parent: ../AGENTS.md -->
<!-- Generated: 2026-05-20 | Updated: 2026-05-20 -->
# shared
# core
## Purpose
Kotlin Multiplatform 共享模块,包含所有 Compose UI、ViewModel 和业务逻辑。通过 `expect/actual` 机制为 Android 和 iOS 提供平台特定实现。这是项目的核心模块
Android Library 核心模块,包含所有 Jetpack Compose UI、ViewModel 和业务逻辑。作为 `:app` 模块的依赖库提供,是项目的主体代码所在
## Key Files
| File | Description |
|------|-------------|
| `build.gradle.kts` | 共享模块构建配置KMP 插件设置、source sets、依赖) |
| `build.gradle.kts` | 核心模块构建配置Android Library 插件、Compose 编译器、依赖) |
## Subdirectories
| Directory | Purpose |
|-----------|---------|
| `src/androidMain/` | Android 平台特定实现(见 `src/androidMain/AGENTS.md` |
| `src/commonMain/` | 所有 Compose UI、ViewModel 和业务逻辑(见 `src/commonMain/AGENTS.md` |
| `src/commonTest/` | 共享测试套件(见 `src/commonTest/AGENTS.md` |
| `src/iosMain/` | iOS 平台特定实现(见 `src/iosMain/AGENTS.md` |
| `src/main/` | 所有 Compose UI、ViewModel 和业务逻辑(见 `src/main/AGENTS.md` |
| `src/test/` | 单元测试套件(见 `src/test/AGENTS.md` |
## For AI Agents
### Working In This Directory
- 所有功能代码应放在 `commonMain` 中以跨平台复用
- 仅在 `androidMain` / `iosMain` 中放置平台特有实现
- 修改 `commonMain` 后需运行 `:shared:allTests` 验证
- 所有功能代码应放在 `src/main/` 中
- 包名:`plus.rua.project`(逻辑层)、`plus.rua.project.ui`UI 层)
- 修改核心逻辑后需运行 `:core:test` 验证
### Testing Requirements
- 全部测试:`./gradlew :shared:allTests`
- Android 主机测试:`./gradlew :shared:testAndroidHostTest`
- 单类测试:`./gradlew :shared:testAndroidHostTest --tests "ClassName"`
- 全部测试:`./gradlew :core:test`
- 单类测试:`./gradlew :core:test --tests "ClassName"`
### Common Patterns
- `expect` 声明在 `commonMain``actual` 实现在平台 source set
- Compose 资源放在 `commonMain/composeResources/`
- 包名:`plus.rua.project`(逻辑层)、`plus.rua.project.ui`UI 层)
- 公共 `@Composable` 函数需要 KDoc`COMMENTS.md`
- `Modifier` 参数始终放在签名最后
- 回调参数使用 `on` 前缀(`onDateClick``onMonthChanged`
- UI 文本使用中文
## Dependencies
### External
- Compose Multiplatform 1.11.0, Material 3 1.10.0-alpha05
- `kotlinx-datetime` 0.8.0, `kotlinx-coroutines`
- `tyme4kt`(农历/节气), `sketch` 4.4.0GIF 显示)
- `molecule`(测试用)
- Jetpack Compose BOM, Material 3
- `kotlinx-datetime`, `kotlinx-coroutines`
- `tyme4kt`(农历/节气/节日)
- `sketch`GIF 显示)
- `androidx-lifecycle-viewmodel-compose`
<!-- MANUAL: -->
<!-- MANUAL: -->

View File

@ -1,40 +1,37 @@
<!-- Parent: ../../AGENTS.md -->
<!-- Generated: 2026-05-20 | Updated: 2026-05-20 -->
# commonMain
# main
## Purpose
KMP 共享核心模块,包含所有 Compose UI、ViewModel 状态管理、业务逻辑和跨平台接口声明。这是 YaYa 应用的主体代码所在。
核心库主 source set包含所有 Compose UI、ViewModel 状态管理、业务逻辑和工具类。这是 YaYa 应用的主体代码所在。
## Key Files
| File | Description |
|------|-------------|
| `kotlin/plus/rua/project/App.kt` | 应用根 Composable提供 Material 主题和导航入口 |
| `kotlin/plus/rua/project/AppInfo.kt` | 应用元数据(名称、版本、作者等) |
| `kotlin/plus/rua/project/CalendarViewModel.kt` | 日历状态管理(选中日期、展开/折叠、月/周/年视图) |
| `kotlin/plus/rua/project/ComposeTrace.kt` | `expect` 声明的 Trace 标记 API |
| `kotlin/plus/rua/project/Platform.kt` | `expect` 声明的平台接口 |
| `kotlin/plus/rua/project/ComposeTrace.kt` | Trace 标记 APIAndroid 实现用 Systrace |
| `kotlin/plus/rua/project/Platform.kt` | 平台接口声明 |
| `kotlin/plus/rua/project/ShiftPattern.kt` | 个人班次排期模型WORK/OFF 循环) |
## Subdirectories
| Directory | Purpose |
|-----------|---------|
| `kotlin/plus/rua/project/` | 业务逻辑和根 Composable(见 `kotlin/plus/rua/project/AGENTS.md` |
| `kotlin/plus/rua/project/` | 业务逻辑和 ViewModel(见 `kotlin/plus/rua/project/AGENTS.md` |
| `kotlin/plus/rua/project/ui/` | UI 组件层(见 `kotlin/plus/rua/project/ui/AGENTS.md` |
| `composeResources/` | Compose 多平台资源(图片、文件)(见 `composeResources/AGENTS.md` |
| `assets/` | 原始资产文件GIF 等 |
## For AI Agents
### Working In This Directory
- 所有新功能代码优先放在 `commonMain` 以保持跨平台兼容
- 仅在需要平台 API 时使用 `expect/actual` 模式
- 所有新功能代码优先放在 `src/main/kotlin/`
- `CalendarViewModel.kt` 是核心状态枢纽,修改需谨慎
### Testing Requirements
- 修改后运行 `./gradlew :shared:allTests`
- 状态逻辑测试在 `commonTest`
- 修改后运行 `./gradlew :core:test`
### Common Patterns
- `@Suppress("DEPRECATION")` 用于 `monthNumber` 访问时需加解释注释
@ -46,7 +43,7 @@ KMP 共享核心模块,包含所有 Compose UI、ViewModel 状态管理、业
## Dependencies
### External
- Compose Multiplatform, Material 3
- Jetpack Compose, Material 3
- `kotlinx-datetime`, `kotlinx-coroutines`
- `tyme4kt`(农历/节气/节日)
- `sketch`GIF 显示)

View File

@ -4,17 +4,16 @@
# project
## Purpose
共享模块的业务逻辑层,包含根 Composable、ViewModel、平台接口和班次模型。
核心库的业务逻辑层,包含根 Composable、ViewModel、平台接口和班次模型。
## Key Files
| File | Description |
|------|-------------|
| `App.kt` | 应用根 Composable设置 Material 3 主题,管理月/年视图切换和关于页面导航 |
| `AppInfo.kt` | 应用信息常量:名称、版本号、构建日期、作者、仓库地址、许可证 |
| `CalendarViewModel.kt` | 日历核心状态管理:选中日期、折叠状态、月/周/年模式、ISO 周数计算 |
| `ComposeTrace.kt` | `expect` 声明的 Trace 标记 APIAndroid 实现用 SystraceiOS no-op |
| `Platform.kt` | `expect` 声明的平台接口 |
| `ComposeTrace.kt` | Trace 标记 APIAndroid 实现用 Systrace |
| `Platform.kt` | 平台接口声明 |
| `ShiftPattern.kt` | 个人班次排期模型:基于锚定日期和周期长度的 WORK/OFF 状态计算 |
## Subdirectories
@ -28,7 +27,7 @@
### Working In This Directory
- `CalendarViewModel.kt` 是核心状态枢纽,包含 `selectedDate``isCollapsed``isYearView` 等 StateFlow
- `ShiftPattern` 使用模运算:`(date - anchorDate) mod cycle.size`
- 修改状态逻辑后务必运行 `commonTest` 中的测试
- 修改状态逻辑后务必运行 `src/test/` 中的测试
### Testing Requirements
- `ShiftPatternTest` — 班次计算验证

View File

@ -4,7 +4,7 @@
# ui
## Purpose
日历应用的所有 UI 组件层,基于 Compose Multiplatform + Material 3 构建。包含月视图、周视图、年视图、底部卡片、日期单元格、顶部标题栏以及关于/许可证页面。
日历应用的所有 UI 组件层,基于 Jetpack Compose + Material 3 构建。包含月视图、周视图、年视图、底部卡片、日期单元格、顶部标题栏以及关于/许可证页面。
## Key Files
@ -49,11 +49,11 @@
## Dependencies
### Internal
- `shared/src/commonMain/kotlin/plus/rua/project/CalendarViewModel.kt` — 状态源
- `shared/src/commonMain/kotlin/plus/rua/project/ShiftPattern.kt` — 班次数据
- `core/src/main/kotlin/plus/rua/project/CalendarViewModel.kt` — 状态源
- `core/src/main/kotlin/plus/rua/project/ShiftPattern.kt` — 班次数据
### External
- Compose Multiplatform, Material 3
- Jetpack Compose, Material 3
- `kotlinx-datetime`
- `tyme4kt`(农历、节气、节日)
- `sketch`GIF

View File

@ -1,10 +1,10 @@
<!-- Parent: ../../AGENTS.md -->
<!-- Generated: 2026-05-20 | Updated: 2026-05-20 -->
# commonTest
# test
## Purpose
共享模块的单元测试 source set包含 ViewModel、班次模型和日历工具函数的测试。
核心模块的单元测试 source set包含 ViewModel、班次模型和日历工具函数的测试。
## Key Files
@ -20,15 +20,14 @@
## For AI Agents
### Working In This Directory
- 测试使用 `kotlin.test`moleculeTurbine进行状态流断言
- 新增测试后运行 `./gradlew :shared:allTests`
- 测试使用 `kotlin.test``kotlinx-coroutines-test`
- 新增测试后运行 `./gradlew :core:test`
- 测试类名遵循 `*Test.kt` 约定
## Dependencies
### Dependencies
### External
- `kotlin-test`
#### External
- `kotlin-test-junit`
- `kotlinx-coroutines-test`
- `molecule`Turbine 风格的状态流测试)
<!-- MANUAL: -->

View File

@ -24,12 +24,11 @@
### Working In This Directory
- 修改 `CalendarViewModel``ShiftPattern` 后应更新对应测试
- 测试使用 molecule 进行状态流断言
## Dependencies
### Internal
- `shared/src/commonMain/kotlin/plus/rua/project/ShiftPattern.kt`
- `shared/src/commonMain/kotlin/plus/rua/project/CalendarViewModel.kt`
- `core/src/main/kotlin/plus/rua/project/ShiftPattern.kt`
- `core/src/main/kotlin/plus/rua/project/CalendarViewModel.kt`
<!-- MANUAL: -->

View File

@ -25,6 +25,6 @@ UI 工具函数测试,覆盖日历工具类 `CalendarUtils` 的日期转换算
## Dependencies
### Internal
- `shared/src/commonMain/kotlin/plus/rua/project/ui/CalendarUtils.kt`
- `core/src/main/kotlin/plus/rua/project/ui/CalendarUtils.kt`
<!-- MANUAL: -->