THROWAWAY TECHNICAL-RISK PROTOTYPE

iPhone PWA 本機資料風險實驗台

問題:在指定 iPhone 與 iOS 上,安裝自 HTTPS 的 Home Screen Web App,能否安全承載 200 筆衣物紀錄、400 張應用程式自有圖片、約 500 MiB 的本機資料,並可靠完成離線使用、原子寫入、完整備份、全量取代還原與 schema migration?這不是產品 UI,也不做尺寸推薦。

目前可見狀態

實機環境與儲存

Standalone:;Build:risk-v1;App schema:1

確定性容量 fixture

預設正好產生 400 張、500 MiB 圖片資料。產生期間若失敗,舊 generation 維持可見。

CRUD、搜尋與比較

尚未執行

Photos 匯入副本

選取圖片後,harness 會以 Canvas 產生最長邊 1600 px、JPEG 0.82 的應用程式自有 Blob,再寫入 IndexedDB;不保存原始 File 參照。

iCloud-only 且離線的項目必須另做人工測試;只有成功取得並轉換 Blob 後才會開始寫入。

完整備份與全量取代還原

隱私警告:備份未做應用層密碼加密,包含所有私人圖片。只儲存在你信任的位置。

失敗與 migration

中斷測試會在同一 transaction 寫入紀錄與第一張圖片後主動 abort;migration 只在完整複製、驗證後切換 active generation。

證據

啟動中…

引導式 walkthrough

先用網路載入一次、建立小型資料,接著在飛航模式強制關閉並重開。觀察 CRUD、搜尋、圖片與比較是否仍可用。

  1. 產生 fixture(測試時可先改小)
  2. 深度驗證
  3. 開啟飛航模式並強制關閉
  4. 重開後新增、更新、搜尋、建立比較並計算

匯出會把結構資料與所有 Blob 放入單一自我描述檔;還原前先逐張驗證 SHA-256,驗證失敗時完全不碰 active generation。

  1. 產生完整 500 MiB fixture
  2. 準備備份後再點「分享到 iOS Files」
  3. 記錄檔案大小與時間
  4. 清空網站資料後重開並從檔案還原

驗證原子邊界:abort 的 transaction 不得留下半筆紀錄;migration 或 restore 只有完成才切換 active generation。

  1. 記下目前 counts
  2. 執行 transaction 中斷
  3. 重新整理狀態,counts 必須不變
  4. 執行 migration,schema 僅能一次由舊版切到新版