文档

离线数据规则

Room 本地库缓存策略、同步时序、冲突三选一规则与缓存清理技术细节。

App 离线数据与缓存清理规则

本文档说明 DMsysGApp(移动端)「个人中心 → 离线数据与缓存清理」功能的一键清理范围、保留策略、存储路径与实现对照,供测试、运维与二次开发参考。登录页离线访客、用户协议与首次在线认证规则见 App离线登录与用户协议设计.md。

实现入口:

层级路径
UI 入口我的 Tab → 离线数据与缓存清理
管理页面OfflineCacheManagerScreen.kt
清理逻辑OfflineCacheCleaner.kt
ViewModel 封装MainViewModel.loadOfflineCacheStats() / clearAllOfflineData()

一、功能概述

现场运维 App 在无网或弱网环境下会缓存图包、技术资料及查看器临时文件。用户可在个人中心查看各类缓存占用,并通过 「一键清理全部离线缓存」 释放存储空间。

清理前会弹出 确认对话框;清理完成后 Toast 提示 实际释放的字节数,并返回个人中心。AI 对话会清空历史,并自动创建一条系统提示的新会话。


二、清理范围(会删除或重置)

2.1 已下载图包缓存

适用状态: 图包 downloadStatusDOWNLOADEDDOWNLOADING

文件操作:

  • 删除图包目录下所有以 cloud_ 开头的缓存文件。
  • 目录:{filesDir}/blueprint_packs/{packId}/

数据库操作:

  • 各图页 imageUrl 若已指向本地路径,恢复为服务端远程路径(BlueprintDrawingCache.canonicalRemotePath)。
  • 图包状态重置为 NOT_DOWNLOADED(未下载)。

说明: 仅清理云端同步后落盘的缓存文件,不删除图包元数据记录;用户可重新在「图纸中心」下载。

2.2 已缓存技术资料

判定条件: 资料目录 documents/{docId}/ 下存在有效本地文件,且满足以下任一情况:

  • filePath 为远程 URL(/api/doc-files//files/http(s)://);或
  • filePath 为指向该资料目录的本地绝对路径。

文件操作:

  • 递归删除 documents/{docId}/ 目录。

数据库操作:

  • filePath 恢复为 DocumentPathResolver.canonicalRemotePath 定义的远程鉴权路径。

说明: 清理的是「已拉取到本机的副本」,资料树节点与收藏状态保留;有网时可重新打开并自动缓存。

2.3 图纸查看器临时缓存

清空以下 WebView 查看器为 DXF / STEP / GLB 准备的内部副本目录(删除后自动重建空目录):

缓存对象目录名(相对 filesDir用途
DXF 查看器dxf_webUTF-8 DXF 副本,供 WebView 加载
STEP 查看器cad3d_webSTEP 二进制副本
GLB 预览cad3d_glb_webGLB 预览副本

2.4 应用临时缓存

  • 清空 Android context.cacheDir 下全部内容。
  • 典型包括:AI 对话拍照/选图产生的临时 JPEG(chat_capture_*.jpg)等。

2.5 AI 对话历史

数据库操作:

  • 删除 ai_chat_sessions 表全部会话(关联 chat_messages 级联删除)。

  • 新建标题为「新对话」的会话,并插入一条模型角色提示消息:

    已经一键清理所有离线数据与缓存,系统已经重置为干净出厂状态。


三、保留范围(不删除)

以下数据 不在 一键清理范围内:

类别说明
运维工单work_orders 表及未同步待办草稿
自建图包downloadStatus = LOCAL 的图包及其目录内 用户导入原件(文件名不以 cloud_ 开头;与云端下载缓存区分)
图页标注dxf_markup/ 下按图页 ID 或路径存储的标注 JSON
用户头像filesDir/avatars/ 下本地头像文件
账户与登录态Token、离线访客标记等
在线认证完成标记has_completed_online_auth(登出后保留,清应用数据后重置)
设备树 / 标签 / 同步元数据Room 中除 AI 会话外的业务主数据
未下载图包状态为 NOT_DOWNLOADED 的图包记录(无 cloud_* 文件可删)

四、占用统计规则

进入「离线数据与缓存」页面时,调用 OfflineCacheCleaner.scan() 实时扫描,展示四大类占用及合计:

统计项计算方式
已缓存图包状态为 DOWNLOADED / DOWNLOADING 的图包目录中,cloud_* 文件大小之和
已缓存技术资料符合「有本地缓存文件」判定条件的 documents/{docId}/ 目录大小之和
图纸查看器缓存dxf_web + cad3d_web + cad3d_glb_web 目录大小之和
应用临时缓存cacheDir 目录大小之和

额外展示:AI 对话会话数量(仅计数,会话内容不计入文件占用)。

释放空间 = 清理前 totalBytes − 清理后 totalBytes(不小于 0)。


五、用户操作流程

  1. 打开 App 底部 「我的」 Tab(顶部标题为 「个人中心」)。
  2. 点击 「离线数据与缓存清理」
  3. 查看占用概览(加载中显示进度指示)。
  4. 点击 「一键清理全部离线缓存」
  5. 在确认对话框中阅读说明,点击 「确认清理」「取消」
  6. 清理完成后:
    • Toast:清理完成,已释放 {大小}
    • 自动返回个人中心
    • 占用概览可再次进入页面刷新查看

六、存储路径速查

根路径均为应用私有目录 context.filesDir(一般为 /data/data/{包名}/files/)。

files/
├── blueprint_packs/{packId}/
│   ├── cloud_{drawingId}_{name}.{ext}   ← 云端图页缓存(可清理)
│   └── {用户文件名}.dxf / .pdf / …      ← LOCAL 自建图包导入原件(保留,非 cloud_ 前缀)
├── documents/{docId}/                   ← 技术资料本地副本(可清理)
├── dxf_web/                             ← DXF 查看器缓存(可清理)
├── cad3d_web/                           ← STEP 查看器缓存(可清理)
├── cad3d_glb_web/                       ← GLB 预览缓存(可清理)
├── dxf_markup/                          ← 图页标注(保留)
└── avatars/                             ← 用户头像(保留)

cache/                                   ← 应用临时缓存(可清理)

七、与图包「单独删除/清理」的区别

图纸中心 对单个图包执行删除/清理时(MainViewModel.removeBlueprintPackInternal):

  • 自建图包(LOCAL): 整包删除(含数据库记录与目录)。
  • 已缓存图包(DOWNLOADED): 仅将状态改为未下载(历史实现可能未删磁盘 cloud_* 文件,与一键清理逻辑独立)。

一键离线清理 针对所有已下载/下载中的云端图包批量执行缓存文件删除与路径回滚,且 不会删除自建图包


八、测试检查清单

序号场景预期结果
1已下载图包后执行清理cloud_* 文件消失,图包显示未下载,元数据仍在
2自建图包存在时执行清理自建图包及文件完整保留
3已打开并缓存的技术资料documents/{id}/ 清空,filePath 恢复远程路径
4打开过 DXF/STEP/GLB 图纸对应 *_web 目录被清空
5AI 有多条历史会话全部删除,仅保留带提示语的新会话
6存在未同步工单工单数据不受影响
7已设置本地头像头像文件与展示不受影响
8清理前后对比占用Toast 释放空间与统计页合计大致一致

九、相关代码索引

文件职责
DMsysGApp/.../mine/OfflineCacheCleaner.kt扫描、清理核心逻辑
DMsysGApp/.../mine/OfflineCacheManagerScreen.kt占用展示、确认对话框、触发清理
DMsysGApp/.../mine/ProfileMineHubScreen.kt个人中心菜单入口
DMsysGApp/.../viewmodel/MainViewModel.ktloadOfflineCacheStats / clearAllOfflineData
DMsysGApp/.../blueprint/BlueprintStorageHelper.kt图包目录、cloud_* 与用户导入文件
DMsysGApp/.../blueprint/BlueprintDrawingCache.kt打开图页、用户导入识别(isUserImportedDrawing
DMsysGApp/.../documents/DocumentStorageHelper.kt资料目录 documents/{docId}/

延伸阅读: 自建图包打开、联网同步与云端缓存的完整设计见 App图纸中心本地与云端图页设计.md。


文档版本与 App 实现同步;若清理逻辑变更,请同步更新本文档与 OfflineCacheCleaner.kt

需要 PDF 打印版或单车间试点?

以上文档已在线发布。如需 PDF 打印版、私有化部署支持或行业 Demo 数据,欢迎邮件或微信联系我们。

立即下载

扫码下载 DMsys 智能运维终端 App,获取行业设备台账模板、单车间免费试点方案,以及完整产品说明书与操作手册。

DMsys 智能运维终端

Android 现场端 · 扫码下载安装包

微信扫码后请点击右上角 ··· → 在浏览器中打开

如需企业部署、试点方案或技术支持,欢迎联系我们

微信客服二维码

微信客服

上海聚拉 · 客服

扫码添加客服微信