feat: establish Android project foundation #2

Merged
KremeCN merged 4 commits from feat/project-foundation into main 2026-08-22 22:41:16 +08:00
Owner

Summary

  • add a buildable Kotlin and Compose Android project foundation
  • define provider-scoped domain contracts and deterministic development fakes
  • add the Material 3 design system, Hilt composition root, and navigation shell
  • document module boundaries while leaving uncertain ABSDK behavior unresolved

Verification

gradlew.bat --stop
gradlew.bat clean :domain:test :testing:fakes:test :android:app:lintDebug :android:app:assembleDebug :android:app:assembleRelease

Result: BUILD SUCCESSFUL

Release runtime dependency inspection also confirmed that testing:fakes is not included in the release APK.

## Summary - add a buildable Kotlin and Compose Android project foundation - define provider-scoped domain contracts and deterministic development fakes - add the Material 3 design system, Hilt composition root, and navigation shell - document module boundaries while leaving uncertain ABSDK behavior unresolved ## Verification ```text gradlew.bat --stop gradlew.bat clean :domain:test :testing:fakes:test :android:app:lintDebug :android:app:assembleDebug :android:app:assembleRelease ``` Result: `BUILD SUCCESSFUL` Release runtime dependency inspection also confirmed that `testing:fakes` is not included in the release APK.
KremeCN added 1 commit 2026-08-22 22:09:31 +08:00

PR Reviewer Guide 🔍

(Review updated until commit e45de7fefe)

Here are some key observations to aid the review process:

⏱️ Estimated effort to review: 4 🔵🔵🔵🔵
🧪 PR contains tests
🔒 No security concerns identified
 No major issues detected
## PR Reviewer Guide 🔍 #### (Review updated until commit https://git.kimico.de/Flagship/abox-mgr/commit/e45de7fefe35f9e09214b3a31881003724db2e3b) Here are some key observations to aid the review process: <table> <tr><td>⏱️&nbsp;<strong>Estimated effort to review</strong>: 4 🔵🔵🔵🔵⚪</td></tr> <tr><td>🧪&nbsp;<strong>PR contains tests</strong></td></tr> <tr><td>🔒&nbsp;<strong>No security concerns identified</strong></td></tr> <tr><td>⚡&nbsp;<strong>No major issues detected</strong></td></tr> </table>
KremeCN added 1 commit 2026-08-22 22:15:52 +08:00

Persistent review updated to latest commit cbc2dc7ec5

**[Persistent review](http://gitea:3000/Flagship/abox-mgr/pulls/2#issuecomment-13)** updated to latest commit https://git.kimico.de/Flagship/abox-mgr/commit/cbc2dc7ec5b3095017ab9757336b94dbe52f52aa
Author
Owner

已处理该安全意见:

  • Password.toString() 现在固定返回脱敏文本,不会输出底层明文值;
  • 新增测试,验证 PasswordLoginCredentials 的字符串表示都不包含真实密码;
  • 已重新运行领域/Fake 测试、Android lint、debug 和 release 构建,结果均为 BUILD SUCCESSFUL

修复提交:cbc2dc7 fix: redact passwords from credential strings

已处理该安全意见: - `Password.toString()` 现在固定返回脱敏文本,不会输出底层明文值; - 新增测试,验证 `Password` 与 `LoginCredentials` 的字符串表示都不包含真实密码; - 已重新运行领域/Fake 测试、Android lint、debug 和 release 构建,结果均为 `BUILD SUCCESSFUL`。 修复提交:`cbc2dc7 fix: redact passwords from credential strings`
KremeCN added 1 commit 2026-08-22 22:22:23 +08:00
Author
Owner

已处理提供方混用意见:

  • InfraredCode 移除重复的 profileId
  • downloadCodes(profileId, codes) 的参数现在是唯一提供方作用域,不再允许构造互相矛盾的标识;
  • Fake 改为记录包含 profileId 和码列表的 InfraredDownloadCall,测试同步覆盖作用域信息;
  • 已重新运行领域/Fake 测试、Android lint、debug 和 release 构建,结果均为 BUILD SUCCESSFUL

修复提交:ca0703a fix: make infrared downloads provider scoped

已处理提供方混用意见: - 从 `InfraredCode` 移除重复的 `profileId`; - `downloadCodes(profileId, codes)` 的参数现在是唯一提供方作用域,不再允许构造互相矛盾的标识; - Fake 改为记录包含 `profileId` 和码列表的 `InfraredDownloadCall`,测试同步覆盖作用域信息; - 已重新运行领域/Fake 测试、Android lint、debug 和 release 构建,结果均为 `BUILD SUCCESSFUL`。 修复提交:`ca0703a fix: make infrared downloads provider scoped`

Persistent review updated to latest commit ca0703a9a3

**[Persistent review](http://gitea:3000/Flagship/abox-mgr/pulls/2#issuecomment-13)** updated to latest commit https://git.kimico.de/Flagship/abox-mgr/commit/ca0703a9a3dfc04455c525f65fa03af3732b037d
KremeCN added 1 commit 2026-08-22 22:29:35 +08:00

Persistent review updated to latest commit e45de7fefe

**[Persistent review](http://gitea:3000/Flagship/abox-mgr/pulls/2#issuecomment-13)** updated to latest commit https://git.kimico.de/Flagship/abox-mgr/commit/e45de7fefe35f9e09214b3a31881003724db2e3b
Author
Owner

已处理设备误操作意见,并保留与 ABSDK 0630 的真实接口边界:

  • DeviceId 明确作为 App 本地设备目录的稳定记录标识;
  • SDK 设备操作继续使用供应商 API 实际接受的 DeviceName,避免错误假定 SDK 能接受本地 ID;
  • 领域契约和架构文档现在明确:同一 ProviderProfileIdDeviceType 内,DeviceName 必须唯一;设备目录在添加、编辑和导入时负责强制该约束;
  • 已重新运行领域/Fake 测试、Android lint、debug 和 release 构建,结果均为 BUILD SUCCESSFUL

更新提交:e45de7f docs: define ABSDK device name identity

已处理设备误操作意见,并保留与 ABSDK 0630 的真实接口边界: - `DeviceId` 明确作为 App 本地设备目录的稳定记录标识; - SDK 设备操作继续使用供应商 API 实际接受的 `DeviceName`,避免错误假定 SDK 能接受本地 ID; - 领域契约和架构文档现在明确:同一 `ProviderProfileId` 与 `DeviceType` 内,`DeviceName` 必须唯一;设备目录在添加、编辑和导入时负责强制该约束; - 已重新运行领域/Fake 测试、Android lint、debug 和 release 构建,结果均为 `BUILD SUCCESSFUL`。 更新提交:`e45de7f docs: define ABSDK device name identity`
Author
Owner

该条最新意见无需代码修改:其描述与当前代码及其附带代码片段矛盾。

当前 InfraredGateway.downloadCodes 已明确接收 profileId: ProviderProfileId

suspend fun downloadCodes(
    profileId: ProviderProfileId,
    codes: List<InfraredCode>,
): DomainResult<List<InfraredCodeDownloadResult>>

Fake 实现也通过 InfraredDownloadCall(profileId, codes) 保留并测试提供方作用域。因此下载操作能够确定使用哪个提供方会话,不存在意见所述的“未接收 ProviderProfileId”。为避免制造无意义提交,本条不再改动代码。

该条最新意见无需代码修改:其描述与当前代码及其附带代码片段矛盾。 当前 `InfraredGateway.downloadCodes` 已明确接收 `profileId: ProviderProfileId`: ```kotlin suspend fun downloadCodes( profileId: ProviderProfileId, codes: List<InfraredCode>, ): DomainResult<List<InfraredCodeDownloadResult>> ``` Fake 实现也通过 `InfraredDownloadCall(profileId, codes)` 保留并测试提供方作用域。因此下载操作能够确定使用哪个提供方会话,不存在意见所述的“未接收 ProviderProfileId”。为避免制造无意义提交,本条不再改动代码。
Author
Owner

/review

/review

Persistent review updated to latest commit e45de7fefe

**[Persistent review](http://gitea:3000/Flagship/abox-mgr/pulls/2#issuecomment-13)** updated to latest commit https://git.kimico.de/Flagship/abox-mgr/commit/e45de7fefe35f9e09214b3a31881003724db2e3b
KremeCN merged commit 1e10d2ab00 into main 2026-08-22 22:41:16 +08:00
KremeCN deleted branch feat/project-foundation 2026-08-22 22:41:22 +08:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Flagship/abox-mgr#2