CHAPTER 27 · PRACTICE WORKSPACE

TODO B:Mock 同步、失敗復原與 GAS 延伸

完成可操作的 mock 同步原型;真實 GAS 串接列為有完整步驟的延伸

03 Checkpoint 2 2/3
  1. 01Starter讀懂作品骨架
  2. 02Checkpoint 1加入第一項能力
  3. 03Checkpoint 2累積第二項能力
  4. 04Solution核對完整結果

TASK STATUS

三項任務目前狀態

TASK-01已完成

將本機變更加入 mock 同步佇列

修改檔案:script.js

完成後看見:每筆變更顯示不同短 id,待同步數量增加且重整後仍保留

TASK-02已完成

驗證離線全批保留與線上全批移除

修改檔案:script.js

完成後看見:離線同步時全批保留,回到線上同步後全批移除

TASK-03本階段處理

提供重試與部署前檢核

修改檔案:script.js

完成後看見:離線重整不丟件;恢復模擬網路後成功移除並顯示 GAS 邊界

WORKSPACE

本階段實作區

已完成 TASK-02;先核對可見結果,再前往 TASK-03。

FOCUS TASK · TASK-03

現在只處理:提供重試與部署前檢核

修改:script.js

完成後:離線重整不丟件;恢復模擬網路後成功移除並顯示 GAS 邊界

講解時展開:2 個小型比較

retry vs preflight|重試與部署檢核

比較:retry 處理暫時失敗,preflight 檢查部署邊界;兩者都是送出前不同層次的保障。

現在做:在 Solution 清除 course-sync-queue,點 #change 兩次、切離線、按 #sync,確認 queue=2;重新整理後確認 #status 為「線上|待同步 2 筆」,再按 #retry,確認 queue=0 且 #preflight 同時寫出「Mock 預檢通過」與「尚未驗證 GAS」。

看預期與證據

預期:reload 只重設記憶體中的 online=true,不丟失持久 queue;retry 先同步,再以 queue 為零與線上狀態顯示 mock 預檢,不能宣稱 GAS 成功。

證據:留下離線後 queue 長度、reload 後線上 status、retry 後 queue/storage 空值、preflight 完整文案四項證據。

離線重整|資料不能丟件

比較:離線時重新整理仍應保留佇列,恢復連線後才執行移除與結果驗收。

現在做:在 Solution 清除 course-sync-queue,點 #change 一次、切離線、按 #sync;確認 reload 前後 #queue li 都有 1 筆,再確認 reload 後 #status 回到線上且 #preflight 仍是尚未執行,最後按 #retry 完成復原。

看預期與證據

預期:離線失敗不會刪 queue;重新整理只讓模擬網路回到預設線上,仍需明確按 retry 才能清空並產生預檢結果。

證據:留下離線 status、reload 前後 queue 長度、reload 後 online 狀態、retry 前後 preflight 與 storage 五項證據。

需要排錯時查看:任務循環(觀察 → 預測 → 實作 → 故障 → 驗收)
  1. A|觀察:在 Checkpoint 2 先完成一次離線全留、線上全清,再建立新變更並切離線,讓 queue 處於可重試狀態。
  2. B|預測:切換離線並同步,確認全批保留;重新整理後確認只有 queue 被持久保留,模擬網路回到預設線上;按「重試並預檢」,確認佇列清空且文案明列未驗證 GAS。
  3. C|實作:在 script.js 的 retryAndPreflight() 完成「提供重試與部署前檢核」,一次只處理本任務責任。
  4. D|故障:若結果不一致,先依原操作重現,再檢查 retryAndPreflight() 與 script.js,最後重跑原操作。
  5. E|驗收:重整後 queue 保留、模擬網路為線上,retry 後佇列清空並顯示 mock 預檢邊界

完成條件:DONE-03:離線重整不丟件;恢復模擬網路後成功移除並顯示 GAS 邊界;重整後 queue 保留、模擬網路為線上,retry 後佇列清空並顯示 mock 預檢邊界

MOCK SYNC

待辦事項 Mock 同步中心

待同步 0 筆

    尚未執行部署預檢

    CONTINUE

    繼續完成 TASK-03

    前往 Solution,依要求完成「提供重試與部署前檢核」。

    前往 Solution:完成 TASK-03

    CHAPTER HANDOFF

    第 26 章 → 第 27 章 → 第 28 章

    接收:第 26 章只提供本機 CRUD 的操作與保存證據;本章使用獨立的 course-sync-queue,不讀取或共用第 26 章的 course-todos runtime。

    交付:本章交給下一章的是 queue item id、離線失敗保留、線上 retry 與 mock preflight 證據;queue 歸零不等於 GAS 或 Sheet 已寫入。

    下一章:第 28 章另行驗證 Production URL、格式預檢與人工展示證據,不把本章 mock 結果當成正式部署證明。

    回到第 27 章成果證據