Skip to content

fix(ratewise): 強化 SW 離線 JS/CSS 三層回退並收斂回退 SSOT#452

Merged
s123104 merged 1 commit into
mainfrom
converge/domA-pwa
Jun 26, 2026
Merged

fix(ratewise): 強化 SW 離線 JS/CSS 三層回退並收斂回退 SSOT#452
s123104 merged 1 commit into
mainfrom
converge/domA-pwa

Conversation

@s123104

@s123104 s123104 commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

摘要

網路失敗時,Service Worker 對 JS/CSS 資源原本只做單層 caches.match(req) 比對,cache 驅逐後易出現「Load failed」。本 PR 補回文檔化的三層回退(exact → ignoreSearch → matchPrecache),並把離線回退邏輯收斂為單一來源。

背景 / 證據

變更

  • sw.ts:JS/CSS catch handler 改用 resolveOfflineStaticResourceFallback(三層);文件回退 matcher 抽為 OFFLINE_DOCUMENT_FALLBACK_MATCHERS 單一來源;移除過時/重複註解。
  • pwaOfflineFallback.ts:新增 resolveOfflineStaticResourceFallback() + getPrecacheLookupKeys() SSOT。
  • storage-keys.ts / converterStore.ts:persist key 改引用 CONVERTER_STORE_KEY 常數,去除硬編碼 'ratewise-converter'

影響範圍 / 注意

  • 行為變更僅限「網路失敗 + cache 驅逐」離線分支,恢復文檔化設計;正常線上路徑不變。
  • ⚠️ sw.tschore/ratewise-production-governance-v2 既有 SW 工作可能重疊,merge 前請確認不衝突。

驗收

  • pnpm --filter @app/ratewise typecheck
  • vitest:sw / pwa-offline / swUtils 等共 205 測試通過 ✅

🤖 Generated with Claude Code

- setCatchHandler 的 JS/CSS 回退補回 exact→ignoreSearch→matchPrecache 三層

- 抽出 resolveOfflineStaticResourceFallback 與文件回退 matcher 為單一來源

- converterStore persist 與 storage-keys 改引用 CONVERTER_STORE_KEY 常數

- 清理過時與重複註解,未更動既有對外契約

測試:ratewise typecheck 通過、SW 與 PWA 相關 205 測試通過
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Deprecation Warning: The deny-licenses option is deprecated for possible removal in the next major release. For more information, see issue 997.

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@github-actions

Copy link
Copy Markdown
Contributor

✅ SEO 審計通過!所有 2026 標準驗證項目都符合要求。

  • ✅ Sitemap 2026 標準
  • ✅ Breadcrumb Schema
  • ✅ JSON-LD 結構化數據
  • ✅ 內部連結結構

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant