Aptli

版本管理

Aptli 的版本管理系统让您可在离线状态下编辑地图和示意图 — 无论是在地铁隧道、偏远站点还是连接不佳的区域 — 并在准备就绪时提交变更。系统会在两名用户编辑同一区域时检测冲突,为每次提交保留永久的版本历史记录,并在外勤编辑上线前为管理员提供审核队列。本页介绍如何使用版本控制及解决冲突。

版本控制界面

版本控制功能直接显示在地图工具栏中 — 在桌面端,它们位于模式选择器和数据传输按钮旁的图标第一行;而在移动端,它们构成底部导航栏的第一行。附图展示的是桌面端布局;若查看地图工具栏,您还会注意到控制项旁边的数据传输按钮(用于导入/导出)。

主要控制功能:

  • 撤销 - 还原当前会话中的最后一次更改
  • 重做 - 重新应用已撤销的更改
  • 重新同步 - 从服务器重新加载数据,丢弃未提交的本地更改
  • 提交 - 将所有未提交的更改推送到服务器

未提交更改徽章:

  • SelectedFeatures 按钮上的橙色徽章显示未提交更改的数量
  • 在创建/编辑/删除要素时实时更新
  • 帮助在提交前追踪待处理工作

版本控制如何运作

(服务器导入:自动数据推送等后台任务会自行创建并提交版本。终端用户无需手动加载 — 任务完成后,导入的要素将自动出现在地图中。)

版本/提交流程

1. 草稿创建          → 变更存在于浏览器存储中
   ↓                   要素带有 _uncommitted 标记

2. 离线编辑          → 修改属性、几何体、关联关系
   ↓                   所有更改均在本地追踪

3. 提交              → 将更改推送至服务器
   ↓                   服务器创建版本记录

4. 冲突检查          → 服务器检测空间/ID 冲突
   ↓                   可选查看他人草稿

5. 合并或回滚        → 接受更改或撤销
   ↓

6. 版本压缩          → 历史状态永久保存
                       变更成为永久记录

三种变更追踪系统

Aptli 根据工作流需求采用不同模式:

1. 版本化模型(地图要素、图层、示意图):

  • 变更存储于浏览器存储中直至提交
  • _uncommitted 标记追踪草稿状态
  • 通过空间分析检测冲突
  • 永久版本历史(永不删除)

2. 实时模型(任务分配、报告、交易):

  • 变更即时保存至服务器
  • 不支持离线起草(执行需确认)
  • 无版本历史(操作数据)

3. 任务(混合模式):

  • 规划阶段采用版本化(离线设计)
  • 执行阶段采用实时处理(任务分配绕过版本)
  • 详情参见工作履行指南

使用版本控制

提交 - 将更改推送至服务器

何时提交:

  • 工作会话结束时(保存进度)
  • 切换项目前(保留更改)
  • 重大编辑后(创建检查点)
  • 完全离线前(同步最新内容)

提交的内容:

  • 所有带 _uncommitted 标记的要素
  • 图层修改
  • 示意图变更
  • 属性更新、几何编辑、新增要素
  • 关联至这些记录的任何文件(照片、文档)

*注意:*服务器端导入任务(如每晚的 GeoJSON 导入)也会自动创建版本;这些版本会显示在 Admin → Versions 页面上,其要素在任务完成后立即对用户可见,与常规提交相同。

工作流:

1. 进行更改(绘制、编辑、导入要素)
2. 监控未提交徽章数量
3. 准备就绪时点击提交
4. 检查冲突(如有)
5. 解决冲突或接受提交

请求提交与管理员审核

对于非管理员用户,"提交"按钮的初始功能是请求审核而非即时发布。当您选择请求提交时,该版本会被标记为 submittedForReview 并保存至服务器;在管理员批准前,不会对其他用户可见。管理员打开新版 Admin → Versions 页面(参见管理指南)查看待处理版本队列;可选择提交版本(使其生效)或删除版本。此工作流确保外勤编辑在应用至共享数据集前经过审核。

文件附件

您附加到记录的任何文件(照片、文档等)都会作为当前版本的一部分在本地暂存。版本提交时,这些文件会自动上传并包含在提交过程中;若您撤销或丢弃更改,暂存的文件将被移除。有关文件暂存的技术细节,请参阅开发文档。

结果:

  • 更改对所有用户可见
  • 服务器上创建版本记录
  • 移除 _uncommitted 标记
  • 徽章计数重置为 0

撤销 - 还原上次更改

功能说明:

  • 逆向遍历变更历史
  • 作用于未提交的本地更改
  • 维护重做堆栈(撤销后可重做)

限制:

  • 仅影响当前会话的更改
  • 无法撤销已提交的更改(请改用重新同步)
  • 页面重新加载时历史记录将被清除

使用场景:

  • "哎呀,删错了要素"
  • "需要尝试不同方案"
  • "不小心移动了要素"

重做 - 重新应用已撤销的更改

功能说明:

  • 逐步前进遍历变更历史
  • 仅在撤销操作后可用
  • 执行新变更时清空

工作流:

1. 撤销删除更改
2. 重做恢复该更改
3. 根据需要继续撤销/重做
4. 执行新更改 → 清空重做堆栈

冲突解决

当两名用户同时编辑同一要素/版本时,地图顶部将显示冲突警告。

点击查看冲突详情可打开比较视图,您可在其中接受或拒绝单个修改。历史记录面板会突出显示每个修改的来源版本。

离线队列查看器

离线工作时,更改会暂存在本地队列中;离线队列查看器可显示待处理操作、同步状态,并支持手动重试。

(网络指示器截图:离线和在线)

重新同步 - 从服务器重新加载

使用场景:

  • 丢弃所有未提交的更改
  • 从服务器重新加载最新内容(他人工作)
  • "全部撤销"核选项
  • 修复损坏的本地状态

⚠️ 警告:

  • 所有未提交的更改将丢失
  • 无法撤销
  • 执行前会确认

安全替代方案:

  • 先提交以保留工作成果
  • 随后重新同步以获取最新内容

并行工作流:直接操作与暂存

Aptli 支持两种要素处理工作流:

直接操作(简单编辑)

最适合:

  • 移动单个要素
  • 快速更新属性
  • 删除要素
  • 简单几何调整

操作流程:

1. 在地图或表格中选择要素
2. 直接编辑(拖拽、属性表单)
3. 自动追踪变更
4. 准备就绪时提交

优势:

  • 快速,无需中间步骤
  • 熟悉的模式(就地编辑)
  • 最小化用户界面开销

绘图暂存(复杂操作)

最佳适用场景:

  • 导入外部数据(GeoJSON、ESRI 文件)
  • 复杂几何编辑(重塑多边形)
  • 批量操作(创建大量要素)
  • 提交前审核

操作流程:

1. 将要素加载至绘图(导入,点击"加载至绘图"按钮)
2. 在绘图模式下编辑(重塑、拆分、合并)
3. 选择目标图层
4. 提交至要素(追踪为未提交)
5. 准备就绪后提交

优势:

  • 用于审查的暂存区
  • 高级几何工具
  • 将导入与实际要素分离
  • 绘图层级撤销(提交前)

颜色标识:

  • 蓝色 - 您选中的要素已加载至绘图
  • 橙色 - 其他用户的冲突(只读)
  • 默认 - 导入要素及手动绘制的要素

冲突解决

冲突如何产生

空间冲突:

  • 两名用户在同一位置添加要素
  • 基础设施布局重叠
  • 相互竞争的网络设计

ID 冲突:

  • 多名用户编辑同一要素
  • 不同的属性变更
  • 几何修改

查看冲突

加载冲突按钮(DrawToolbar):

  • 获取其他用户未提交的更改
  • 在绘图中以橙色要素显示
  • 只读 - 无法提交他人草稿
  • 协助提交前的协调

工作流:

1. 在 DrawToolbar 中点击"加载冲突"
2. 橙色要素出现(他人草稿)
3. 检查空间重叠情况
4. 如有必要调整您的要素
5. 提交您的更改(冲突已标记)

解决冲突

方案 1:团队协作

  • 查看编辑人员(冲突显示用户邮箱)
  • 通过聊天/电话讨论
  • 决定谁先提交

方案 2:顺序提交

  • 一名用户提交
  • 另一名用户重新同步
  • 第二名用户调整并提交

方案 3:手动合并

  • 加载冲突以查看两个版本
  • 手动创建合并后的要素
  • 双方用户重新同步并接受合并

未提交更改追踪

您已创建、编辑或导入但尚未提交的要素被追踪为未提交状态。SelectedFeatures 按钮上的橙色徽章显示当前会话中未提交更改的数量。

徽章实时更新:

  • 从绘图暂存区提交要素时递增
  • 提交时重置为零
  • 重新同步时重置为零(丢弃所有未提交更改)

将徽章计数作为定期提交的提醒。数量过高意味着若浏览器在提交前关闭,可能会丢失大量工作。

最佳实践

何时提交

推荐时机:

  • 每次工作会话结束时
  • 完成逻辑工作单元后
  • 切换项目前
  • 徽章数量感觉"过高"时
  • 离线前(作为检查点保存)

避免:

  • 提交不完整的工作(会混淆团队)
  • 从不提交(存在数据丢失风险)
  • 频繁提交(会产生版本干扰)

离线编辑策略

1. 离线前同步:

1. 重新同步以获取最新数据
2. 进行离线更改
3. 恢复在线后提交

2. 检查冲突:

1. 在重大编辑前加载冲突
2. 与可见用户协调
3. 优先提交不重叠的工作

3. 定期检查点:

1. 每 30-60 分钟提交一次
2. 创建恢复点
3. 与团队共享进度

版本历史回顾

查看修改记录:

  • 版本记录显示用户、时间戳、操作
  • 压缩版本仍可还原
  • 审计轨迹确保合规性

回滚流程:

1. 识别问题版本
2. 重新同步至问题提交之前
3. 正确重做更改
4. 提交新版本

加载至绘图功能

目的

支持超越简单拖放的复杂几何图形操作:

  • 重塑多边形边界
  • 将线段分割为多段
  • 合并相邻区域
  • 高级几何操作

使用方法

从 SelectedFeatures 表:

1. 在表中选择行(复选框)
2. 点击"加载至绘图"按钮(铅笔图标)
3. 要素出现在绘图中(蓝色)
4. 使用绘图工具编辑
5. 选择目标图层
6. 点击提交按钮
7. 要素获得 _uncommitted 标记
8. 准备就绪时提交

样式设置:

  • 用户选定:蓝色(#3b82f6)
  • 冲突项:橙色(#f97316,只读)
  • 导入项:默认绘图颜色

高级操作

重塑多边形:

  1. 将多边形加载至绘图
  2. 点击顶点进行移动
  3. 添加/移除点位
  4. 提交回要素

分割要素:

  1. 将线/多边形加载至绘图
  2. 使用绘图工具创建分割
  3. 提交为独立要素

合并区域:

  1. 将多个多边形加载至绘图
  2. 删除它们之间的边界
  3. 创建单个合并的多边形
  4. 提交结果

故障排除

"更改未保存"

检查:

  • 未提交徽章数量是否在增加?
  • 提交按钮是否可用?
  • 浏览器控制台是否有错误?

解决方案:

  • 验证网络连接
  • 检查浏览器存储空间是否已满
  • 提交以保存更改

"重新加载后丢失了更改"

原因:

  • 未提交的更改存储于浏览器存储
  • 重新同步清除了本地更改
  • 浏览器存储被清空

预防措施:

  • 关闭浏览器前提交
  • 定期设置提交检查点
  • 不要依赖浏览器缓存

"冲突无法解决"

步骤:

  1. 加载冲突以查看另一版本
  2. 联系其他用户
  3. 一名用户重新同步
  4. 修改并再次提交
  5. 第二名用户重新同步并继续

"撤销/重做功能失效"

限制:

  • 仅支持会话内更改
  • 页面重新加载后清除
  • 无法撤销已提交的更改

解决方法:

  • 重新同步至问题提交之前的版本
  • 正确重做更改
  • 提交新版本

相关指南