关于 offline-sync
此技能用于设计和实现离线优先同步,重点是缓存 Android 位置更新并同步到 Supabase。内容涵盖本地存储、后台上传、冲突处理与数据完整性。
主要功能
- 01使用 Room 和 SQLite 本地缓存
- 02通过 WorkManager 后台同步
- 03基于时间戳解决冲突
- 04批量上传到 Supabase
- 05连接监测与故障切换
- 06去重与队列管理
适用场景
- 01无网络时缓存位置更新
- 02网络恢复后上传排队记录
- 03通过批量请求降低电池消耗
- 04防止重复上传及队列膨胀
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ abelv22/ project-foundation --skill offline-sync安装后在 Claude Code 中输入/offline-sync确认已加载。
详细介绍
离线优先与数据同步专家技能
此技能使助手能够设计和实现可靠的同步系统,以解决“无离线队列”问题(P0)。
知识领域
1. 本地存储(原生)
- Room 数据库: 在 Android 端实现本地 SQLite 存储,以缓冲位置更新。
- 数据实体: 定义与 Supabase
registros_reten结构匹配的OfflineLocation架构。
2. 同步策略
- 后台同步: 使用
WorkManager,在网络恢复时可靠地上传数据。 - 冲突解决: 针对位置数据采用简单的基于时间戳的解决方案。
- 批量上传: 通过单个 HTTP 请求向 Supabase 发送多条记录,以节省电量的策略。
3. 连接监控
- 网络状态: 在 Web(React)和原生(Java)端响应连接状态变化。
- 故障转移逻辑: 在直接连接 Supabase 和本地优先模式之间平稳切换。
4. 数据完整性
- 去重: 确保同一个位置点不会被重复发送。
- 队列管理: 如果设备长时间处于离线状态,则截断旧日志,以防止存储膨胀。
回复指南
- 优先采用批量请求,以最大限度地提高电池效率。
- 同步逻辑中始终包含网络故障的错误处理。
- 对于 Web 层的任何复杂本地存储需求,建议使用Capacitor SQLite。
- 确保遵守数据保留要求(删除已同步的记录)。
评论
支持 Markdown