feat(client): sync digital employee outbox
This commit is contained in:
@@ -412,9 +412,58 @@ crates/agent-electron-client/src/main/services/digitalEmployee/stateService.ts
|
||||
|
||||
下一步:
|
||||
|
||||
- 增加 sync worker:读取 `digital_sync_outbox`,推送管理端,回填 `remote_id` / `sync_status`。
|
||||
- 确认 qiming-backend 的数字员工同步 API 路径和鉴权方式。
|
||||
- 将 Artifact / Approval 从普通 Event 中拆成正式实体。
|
||||
- 数字员工页面展示同步状态:待同步、同步失败、最近同步时间。
|
||||
|
||||
## Phase 7:管理端 outbox 同步 worker(已开始)
|
||||
|
||||
目标:SQLite 继续作为本地事实缓存和离线队列,同时把 Plan / Task / Run / Event 推送到管理端,避免数字员工数据停留在单机。
|
||||
|
||||
当前 qimingclaw 已新增:
|
||||
|
||||
```text
|
||||
crates/agent-electron-client/src/main/services/digitalEmployee/syncService.ts
|
||||
crates/agent-electron-client/src/main/bootstrap/startup.ts
|
||||
crates/agent-electron-client/src/main/ipc/digitalEmployeeHandlers.ts
|
||||
crates/agent-electron-client/src/preload/webviewPerfBridge.ts
|
||||
```
|
||||
|
||||
当前机制:
|
||||
|
||||
- 启动后后台启动 sync worker,默认每 30 秒扫描 `digital_sync_outbox`。
|
||||
- 默认同步地址由 `step1_config.serverHost` 拼接:
|
||||
|
||||
```text
|
||||
/api/digital-employee/sync/outbox
|
||||
```
|
||||
|
||||
- 可通过 settings `digital_employee_sync_config.endpoint` 覆盖同步地址。
|
||||
- 使用 `auth.saved_key` 或域名级 saved key 作为客户端凭证。
|
||||
- 请求同时携带 `Authorization: Bearer <clientKey>` 和 `X-Qiming-Client-Key`,兼容后端后续选择。
|
||||
- 同步成功后回填 outbox 状态,并根据后端 ack 回填实体 `remote_id` / `last_synced_at`。
|
||||
- 同步失败时标记 failed 和错误信息,下轮继续补偿,不影响 `/computer/chat` 和 ACP 执行链路。
|
||||
|
||||
新增 IPC / Bridge:
|
||||
|
||||
```text
|
||||
digitalEmployee:getSyncStatus
|
||||
digitalEmployee:flushSync
|
||||
window.QimingClawBridge.digital.getSyncStatus()
|
||||
window.QimingClawBridge.digital.flushSync()
|
||||
```
|
||||
|
||||
当前边界:
|
||||
|
||||
- 后端接口尚未真正确认,因此客户端先实现可配置 endpoint 和兼容 ack 协议。
|
||||
- worker 只消费 outbox,不直接侵入 Plan / Task / Run / Event 写入链路。
|
||||
- 管理端返回格式建议包含 `acked[]`,每项带 `outbox_id`、`entity_type`、`entity_id`、`remote_id`。
|
||||
|
||||
下一步:
|
||||
|
||||
- 在 qiming-backend 落地 `/api/digital-employee/sync/outbox`。
|
||||
- 数字员工页面读取 `getSyncStatus()`,展示联动状态。
|
||||
- 增加 outbox 重试退避策略,避免接口长期不可用时频繁请求。
|
||||
|
||||
## 管理端联动原则
|
||||
|
||||
|
||||
Reference in New Issue
Block a user