專案

一般

配置概況

動作

Bug #182

進行中
SC SC

複製病歷、ICD10 按鈕失效

Bug #182: 複製病歷、ICD10 按鈕失效

是由 Sashiba Chou4 個月 前加入. 於 約 2 個月 前更新.

狀態:
New
優先權:
Normal
被分派者:
開始日期:
2026-03-24
完成日期:
2026-06-13 (逾期 49 天)
完成比例:

100%

預估工時:
0:30 小時
耗用工時:

SC 是由 Sashiba Chou4 個月 前更新 動作 #1

  • 主旨複製病歷按鈕失效 變更為 複製病歷、ICD10 按鈕失效

SC 是由 Sashiba Chou約 2 個月 前更新 動作 #2

  • 完成日期2026-03-27 變更為 2026-06-13
  • 完成比例0 變更為 100

環境

問題描述

在本機(localhost)按下「複製病歷」按鈕功能正常,但在部署環境
http://10.101.13.120:3000)按下複製按鈕完全沒有反應,也無錯誤訊息。

根因

navigator.clipboard API 僅在 secure context(HTTPS 或 localhost/127.0.0.1)
下可用。部署環境走 HTTP + 區網 IP,navigator.clipboard 為 undefined,
舊程式 navigator.clipboard.writeText() 直接拋 TypeError,且發生在 async
handler 中被吞掉,導致按鈕無反應、無提示。

解法

新增 copyToClipboard() 工具函式(frontend/src/lib/utils.ts):

  • secure context:維持使用原生 navigator.clipboard.writeText()
  • 非 secure context:fallback 改用隱藏 textarea + document.execCommand("copy")
    HTTP 下亦可運作
    全部複製進入點(病歷複製、ICD-10 代碼複製)統一改呼叫此函式。

影響範圍 / 變更檔案

  • frontend/src/lib/utils.ts # 新增 copyToClipboard()
  • frontend/src/components/ReviewTab.tsx # 病歷複製、ICD 代碼複製改用新函式
  • frontend/src/components/SkeletalTab.tsx # ICD 代碼複製改用新函式
  • frontend/src/components/SoftTissueTab.tsx# ICD 代碼複製改用新函式

(附帶)ICD-10 擷取結果狀態自 ReviewTab 提升至 TraumaAssessmentForm,
切換頁籤時不再遺失:

  • frontend/src/components/TraumaAssessment.tsx
  • frontend/src/components/ReviewTab.tsx

驗收條件

  • 部署環境(HTTP)按「複製病歷」可成功複製,貼上驗證內容正確
  • 部署環境按 ICD-10 代碼複製鈕可成功複製
  • 本機(localhost)複製功能維持正常(走原生 API)
  • 切換頁籤後 ICD-10 擷取結果仍保留

備註

根治方案為導入 HTTPS(見 https_todo.md 方案 A/B);上 HTTPS 後會走回原生
clipboard API,fallback 作為永久安全網保留。

動作

匯出至 PDF Atom