AquaLog
價錢 條款 私隱 退款 English

版本 1 · 生效日期 2026-11-12

匯出格式:使用者可以帶走的兩種檔案

本文件是 AquaLog 資料可攜(#1505)的技術說明:App 能交出哪些檔案、檔案裡是什麼、其他軟體怎樣讀。它寫給兩種讀者——想把資料搬到別處的使用者(或幫他搬的人),以及想確認「可攜」不是一句空話的監理機構。

為什麼可攜由 App 完成、而不是由營運方交出,見退款、稅務與資料可攜第三節。

一、完整備份:ZIP

設定 → 備份、還原與資料管理 →「建立完整備份」。 不需連網,不經伺服器;檔案在裝置上產生,經系統分享面板或下載交給使用者。

aqualog-backup-YYYYMMDD-HHmm.zip
├── manifest.json   說明檔:格式、版本、每個檔案的大小與 SHA-256
├── data.json       全部結構化紀錄(UTF-8 JSON)
└── photos/         全部相片與收據原檔
    └── <media-id>.<副檔名>

1.1 manifest.json

欄位內容
format固定為 aqualog-backup
formatVersion備份格式版本,目前為 1
createdAt建立時間,ISO 8601(UTC)
timezone建立時裝置的 IANA 時區,例如 Asia/Hong_Kong
appVersion建立備份的 App 版本
schemaVersion資料庫結構版本;同一個 formatVersion 下,表格只增不減
dataFile{ path: "data.json", byteSize, sha256 }
photos每張相片一項:mediaId、path、mimeType、extension、byteSize、width、height、sha256
counts每個表格的紀錄數
totals{ fileCount, uncompressedBytes }

SHA-256 以小寫十六進位表示。任何軟體都可以用它核對檔案在搬運途中沒有損壞。

1.2 data.json

欄位內容
format固定為 aqualog-data
formatVersion與 manifest 相同
schemaVersion與 manifest 相同
exportedAt匯出時間,ISO 8601(UTC)
tables物件;每個鍵是一個表格名稱,值是該表格全部紀錄組成的陣列
  • 每筆紀錄都有字串 id(UUID);跨表的關聯以 …Id 欄位指向另一筆紀錄的 id,例如 purchaseItems[].purchaseId。
  • 日期與時間是 ISO 8601 字串;金額是數字。
  • 表格清單隨 App 功能增加(schemaVersion 遞增),舊表格不會被移除或改名。完整清單以 counts 的鍵為準,不在本文件重抄——抄一份就會分叉。
  • 相片的中繼資料在 tables.media,與 photos/ 內的檔案以 id/mediaId 對應;紀錄與相片的連結在 tables.mediaLinks。

1.3 相片

photos/<media-id>.<副檔名> 是原始檔,未經重新壓縮。副檔名由 MIME 決定(jpg、png、webp、heic 等)。

1.4 讀取方式

任何能解 ZIP、能讀 JSON 的工具都能打開:試算表軟體、Python(zipfile + json)、或直接解壓縮後用文字編輯器看。AquaLog 本身可以從這個檔案完整還原(架構文件§15.3)。

二、表格匯出:CSV

設定 → 備份、還原與資料管理 →「分類 CSV 匯出」。 給試算表用的分類匯出,不含相片。

  • 檔名:AquaLog-<類別>-<日期>.csv
  • 編碼:UTF-8,開頭帶 BOM(讓 Excel 正確辨認中文),行尾 CRLF
  • 欄位名稱與是/否值以「中文 / English」雙語書寫
  • 以 =、+、-、@ 開頭的值前面加一個單引號,避免試算表把它當公式執行

類別:

類別內容
fish魚隻
plants水草
invertebrates蝦、螺等無脊椎
decorations造景與裝飾
purchases購買紀錄
feeding餵食紀錄
water_changes換水紀錄
water_quality水質測試
maintenance保養紀錄

三、哪一份是「我的全部資料」

ZIP 備份是。 CSV 是方便用的子集。伺服器上的同步副本是密文,營運方打不開,也就交不出它的內容;它不是可攜的來源,見退款、稅務與資料可攜。

本文件的欄位清單由 src/features/backup/exportFormat.doc.test.ts 對照程式碼:manifest 或 data.json 多了、少了一個欄位,或 CSV 多了一個類別,那條測試會先失敗。

AquaLog 不在這個網站上載入任何第三方或分析腳本。