- biz-* 4 个、integration-* 8 个、dev-android/ios/pda、publish、ai-proj-cicd-release、ai-proj-macos-release - 均加 metadata.invocation: user-invoked + disable-model-invocation: true(DSH 实测生效) - catalog: promoted/model-invoked 40、promoted/user-invoked 18、beta 3
53 lines
1.2 KiB
Markdown
53 lines
1.2 KiB
Markdown
---
|
||
name: dev-pda
|
||
description: PDA 应用开发插件。Android 原生 + 扫码枪集成 + 离线优先。当涉及 PDA/手持终端开发时按需加载。
|
||
metadata:
|
||
invocation: user-invoked
|
||
disable-model-invocation: true
|
||
---
|
||
|
||
# PDA 应用开发插件 (dev-pda)
|
||
|
||
## 特点
|
||
|
||
- Android 原生开发(Kotlin)
|
||
- 扫码枪硬件集成
|
||
- 离线优先(本地 Room DB + 同步队列)
|
||
- 简洁 UI(大按钮、大字体、适配小屏幕)
|
||
|
||
## 扫码集成
|
||
|
||
```kotlin
|
||
class ScanReceiver : BroadcastReceiver() {
|
||
override fun onReceive(context: Context, intent: Intent) {
|
||
val barcode = intent.getStringExtra("SCAN_BARCODE")
|
||
// 处理扫码结果
|
||
}
|
||
}
|
||
```
|
||
|
||
## 离线存储
|
||
|
||
```kotlin
|
||
@Entity(tableName = "inventory")
|
||
data class Inventory(
|
||
@PrimaryKey val id: Long,
|
||
val barcode: String,
|
||
val quantity: Int,
|
||
@ColumnInfo(name = "sync_status")
|
||
val syncStatus: SyncStatus = SyncStatus.PENDING
|
||
)
|
||
|
||
enum class SyncStatus { PENDING, SYNCED, FAILED }
|
||
```
|
||
|
||
## 离线同步策略
|
||
|
||
```
|
||
操作 → 写入本地 DB (PENDING)
|
||
↓
|
||
网络可用 → 批量上传 → 成功 → 标记 SYNCED
|
||
↓ 失败
|
||
标记 FAILED → 下次重试
|
||
```
|