Làm việc offline & Đồng bộ
Đây là năng lực đặc trưng nhất của app mobile, và không có tính năng tương đương trên web. Mọi thứ bạn làm tại hiện trường — tạo, bình luận, thao tác — đều được lưu bền vững trên máy và tự động gửi đi khi có kết nối trở lại. Không mất gì nếu bạn đóng app, và không có gì chặn bạn khi mất sóng.
Tạo issue khi offline — ghi nhận lỗi ngay trên DMap
Vì mọi issue đều bắt đầu từ DMap, việc mất sóng không thay đổi gì trong cách bạn ghi nhận một lỗi: mở bản vẽ, bấm vào vị trí, điền form đúng như bình thường.
Phía sau, hệ thống làm những việc sau:
- Một điểm ghim nháp (draft pin) được đặt ngay lên bản vẽ, để bạn thấy vị trí đó lập tức.
- Issue được lưu vào hàng đợi gửi, tệp đính kèm lưu trên máy.
- Issue chỉ hoàn tất sau khi các tệp tải lên xong lúc bạn có mạng trở lại.
- Trong lúc chờ, app dùng một định danh nội bộ tạm thời; số
#chính thức được hệ thống trả về lúc đồng bộ. - Nếu bạn xóa bản nháp, điểm ghim nháp trên bản vẽ cũng bị xóa theo — không để lại điểm ghim mồ côi.
Thao tác khi offline
Thao tác được đưa vào hàng đợi, chưa áp dụng. Thao tác không làm đổi trạng thái của issue trên máy bạn ngay lập tức — thay vào đó bạn thấy:
- Một dòng chỉ đọc trên dòng thời gian kèm nhãn Queued.
- Một banner trạng thái ở đầu màn hình chi tiết.
Thao tác trong hàng đợi đi qua các trạng thái: pending → sending → chờ phụ thuộc → thất bại / xung đột / đã đồng bộ.
| Banner | Hình thức | Bạn làm được gì |
|---|---|---|
| Đang đồng bộ | Mờ, không có nút | Chờ — thao tác đang được gửi |
| Thất bại (mạng) | Đỏ | Retry hoặc Discard |
| Xung đột (issue đã thay đổi trong lúc thao tác của bạn nằm chờ) | Đỏ | Chỉ Discard — thử lại vẫn xung đột; hãy làm mới issue và thực hiện lại thao tác |

Banner nêu rõ thao tác nào thất bại — ví dụ "'Complete' couldn't apply — the issue changed. Refresh, then try again." — và mục trên dòng thời gian mang nhãn Conflict cạnh thao tác đang chờ của bạn.
:::caution Mỗi lần một thao tác Khi một thao tác đang chờ đồng bộ cho một issue, menu ⋯ được thay bằng thông báo "đang chờ đồng bộ". Điều này ngăn bạn chồng thêm thao tác thứ hai lên trạng thái mà hệ thống chưa xác nhận. Sau khi gửi xong, lần làm mới kế tiếp sẽ hiển thị bản ghi hoạt động chính thức của hệ thống và menu quay trở lại. :::
Bình luận khi offline
Bình luận xuất hiện ngay lập tức kèm nhãn Queued. Các thao tác thêm, sửa, xóa bình luận đều được lưu cục bộ và hòa vào dòng thời gian của hệ thống khi đồng bộ. Bình luận gửi thất bại sẽ hiển thị nút thử lại.
Bạn trả lời được cả bình luận chưa đồng bộ — chuỗi hội thoại vẫn được giữ đúng.
Hủy một thao tác đang chờ
Hủy không đồng nghĩa với mất những gì bạn đã nhập. Hộp xác nhận cho ba lựa chọn:

| Lựa chọn | Điều gì xảy ra |
|---|---|
| Cancel | Giữ nguyên thao tác đang chờ |
| Save as draft | Bỏ thao tác khỏi hàng đợi nhưng giữ lại nội dung bạn đã nhập — lần sau bắt đầu thao tác đó, nội dung sẽ được điền sẵn |
| Delete permanently | Xóa hẳn thao tác cùng nội dung của nó |
Sau khi gặp xung đột, Save as draft thường là lựa chọn đúng: làm mới issue, đọc xem đã thay đổi gì, rồi bắt đầu lại thao tác với ghi chú và tệp đính kèm còn nguyên.
Xem khi offline
Danh sách issue, màn hình chi tiết và dòng thời gian đều được lưu cache trên máy để xem và lọc khi không có kết nối. Chân trang hiển thị "Showing cached data — offline" để bạn luôn biết mình đang xem một bản chụp dữ liệu.

Xem Lọc & Tìm kiếm để biết phạm vi tìm kiếm và lọc offline.
Việc làm mới cache không bao giờ đè lên nội dung đang có công việc chưa đồng bộ — các mục trong hàng đợi của bạn an toàn trước một lần làm mới ở nền.
Issue chưa từng được cache
Bạn chỉ đọc được những gì thiết bị đã tải về. Mở một issue chưa có trong cache lúc offline sẽ hiện "Failed to load issue — No internet connection" kèm nút Retry; issue sẽ tải được khi bạn có mạng trở lại.

Bảo vệ khỏi việc ghi đè thay đổi của người khác
Khi thao tác của bạn được gửi đi, hệ thống kiểm tra xem issue có bị người khác thay đổi kể từ lúc bạn mở nó hay không. Nếu có, thao tác được báo là xung đột và không thử lại được — hãy làm mới issue, đọc xem đã thay đổi gì, rồi thực hiện lại.
:::note Hạn chế đã biết Dữ liệu chi tiết issue hiện chưa trả về mốc thời gian chỉnh sửa gần nhất. Cho tới khi bổ sung, cơ chế chống ghi đè cho các thao tác bắt đầu khi offline yếu hơn so với thao tác online. Đây là khoảng trống đã biết và được chấp nhận tạm thời, nằm trong kế hoạch.
Xung đột được xử lý bằng cách hủy và làm lại — không có hợp nhất tự động. Nhưng nội dung bạn đã nhập không nhất thiết mất đi: khi hủy, bạn có thể lưu thao tác thành bản nháp (xem phần trên). :::
Màn hình tự điều chỉnh
Màn hình chi tiết theo dõi hàng đợi cục bộ và tự làm mới dòng thời gian. Khi các mục được gửi đi, nhãn Queued, dòng pending action và danh sách thao tác khả dụng tự cập nhật — bạn không cần tải lại gì cả.
Tự chủ động bật chế độ offline
Bạn không cần chờ mất sóng. App có công tắc Offline Mode thủ công, kèm một bộ màn hình để theo dõi và điều khiển hàng đợi — xem Offline Mode & Quản lý đồng bộ.
Những gì nằm lại trên máy
Được lưu cục bộ, theo từng thiết bị và dự án, và không bao giờ đồng bộ lên hệ thống hay sang web:
- Bản nháp của form tạo chưa gửi, kèm bản sao tệp đính kèm.
- Bộ lọc đã lưu.
- Gợi ý điền sẵn — các giá trị phân loại và phân công từ issue bạn tạo gần nhất.