專案

一般

配置概況

動作

Support #1435

進行中

[2026-CR] 學員的基本資料填寫介面移除部份欄位

是由 陳國瑋 於 約 2 個月 前加入. 於 約 1 個月 前更新.

狀態:
In Progress
優先權:
Normal
被分派者:
開始日期:
2026-08-12
完成日期:
完成百分比:

0%

預估工時:

概述

學員的基本資料填寫介面移除以下欄位:

  1. 是否有慢性疾病或其他疾病
  2. 目前使用藥物
  3. 曾經使用的減重方式及成效
  4. 想減肥的原因
  5. 職業
  6. 教育程度
  7. 工作時間
  8. 工作時間補充說明
  9. 方便連絡的時間
  10. 連絡Email
    僅在UI上移除,model欄位不移除,db欄位不移除,後台介面上的欄位也不移除。

是由 陳國瑋 於 約 2 個月 前更新

  • 主旨 從 [2026-CR] 變更為 [2026-CR] 學員的基本資料填寫介面移除部份欄位
  • 概述 已更新 (差異)

是由 陳國瑋 於 約 1 個月 前更新

是由 陳國瑋 於 約 1 個月 前更新

  • 被分派者 從 陳國瑋 變更為 鍾正剛

Backend 已確認,本需求不需調整 API、DTO、entity 或 DB schema,後續請由 FE 處理。

【FE 實作範圍】
學員前台基本資料填寫/編輯介面移除以下 10 個輸入欄位:

  1. 是否有慢性疾病或其他疾病(chronic)
  2. 目前使用藥物(usingMedicine)
  3. 曾經使用的減重方式及成效(slimExperience)
  4. 想減肥的原因(motivation)
  5. 職業(job)
  6. 教育程度(eduLevel)
  7. 工作時間(workTime)
  8. 工作時間補充說明(workTimeDesc)
  9. 方便連絡的時間(contactTime)
  10. 連絡 Email(email)

【重要資料保留規則】

  • 僅移除 UI 控制項,不可移除上述欄位的 form model/API payload。
  • 編輯既有會員資料時,需保留 GET /api/user/{lineid} 回傳的原值,並於 POST /api/user/save 時原樣帶回。
  • 現行 Backend save API 採整份資料覆寫;若 payload 省略上述欄位,會被反序列化為 null,造成既有資料被清除。
  • 不調整 Backend model、DB 欄位與後台基本資料介面。

【驗收條件】

  1. 學員前台不再顯示上述 10 個欄位。
  2. 新會員及既有會員皆可正常儲存基本資料。
  3. 既有會員儲存其他欄位後,上述隱藏欄位的原資料不可被清除或改動。
  4. 後台仍可正常顯示及編輯上述欄位。

是由 陳國瑋 於 約 1 個月 前更新

  • 狀態 從 New 變更為 In Progress

是由 鍾正剛 於 約 1 個月 前更新

【開發完成】

branch: feature/issue-1435-remove-profile-form-fields(base: develop,尚未合併)

一、實作內容

  1. 學員前台「基本資料」介面已移除指定的 10 個欄位控制項(chronic、usingMedicine、slimExperience、motivation、job、eduLevel、workTime、workTimeDesc、contactTime、email)。保留:真實姓名、聯絡手機、出生年月日、性別、身高、體重、連絡電話。
  2. 依【重要資料保留規則】,送出時不依賴 react-hook-form 對已卸載欄位的隱性保留,改為在 onSubmit 明確地把 GET /api/user/{lineid} 回傳的原值原樣併回 POST /api/user/save 的 payload。
  3. null 值原樣送 null,不轉為空字串;僅在 API 未回傳該 key(新會員無資料)時才補空字串,維持與欄位仍在畫面上時相同的 payload 形狀。eduLevel/workTime 仍以 { id: value } 形式送出,空值維持 { id: "" },與變更前一致。
  4. 未更動 Backend model、DB 欄位、後台介面,亦未更動任何 API 呼叫路徑(驗收條件 4 不受影響)。

二、與實作方針的差異
無。範疇僅限 react/web 兩個檔案:

  • src/app/member/components/profile-form.js
  • src/app/member/profile/edit-profile.js

三、後續事項

  1. 建議實機(LINE APP)驗證:既有會員只改體重後儲存,回後台確認 10 個欄位原資料未被清除或改動;新會員可正常完成首次填寫。此為 LIFF 環境相依行為,無法在一般瀏覽器完整驗證。
  2. 本專案無自動化測試,僅執行 yarn lint(通過,改動檔案無新增警告)。
  3. 既有弱點提醒(非本次變更造成,未處理):若 GET /api/user/{lineid} 失敗,表單仍會渲染,此時送出會將這 10 個欄位寫成空值。欄位移除前使用者至少能從畫面上看出資料是空的,移除後則無法察覺。是否要加上「使用者資料載入失敗即不允許送出」的保護,請指示,我再另行處理。

是由 鍾正剛 於 約 1 個月 前更新

【補充:一處文案異動,請確認】

commit: 20848fd(同 branch feature/issue-1435-remove-profile-form-fields)

「方便連絡的時間(contactTime)」欄位移除後,該區塊原本的說明文案:

請告訴我們方便的時間,會有專人主動與您聯繫。

前半句要求的資訊已經沒有欄位可填,該段下方只剩「連絡電話」一欄,因此調整為:

請留下方便聯繫的電話,會有專人主動與您聯繫。

保留「會有專人主動與您聯繫」的期待設定,只把索取的資訊對齊實際還在的欄位。此為超出本票字面範疇的文案異動,若希望改為整段移除、或改用其他措辭,請告知,我再調整。

是由 鍾正剛 於 約 1 個月 前更新

【補充:新增載入失敗保護,超出本票原範疇】

commit: 644b7e4(同 branch feature/issue-1435-remove-profile-form-fields)

原先回報的既有弱點已一併處理:隱藏欄位的原值全靠 GET /api/user/{lineid} 帶回,該請求失敗時送出會把 10 個欄位寫成空值,且欄位已從畫面移除,使用者無從察覺。

處理方式:

  1. 判定為載入失敗時,跳出提示「目前無法取得您已填寫的資料,為避免覆蓋原本的內容,請稍後再重新開啟本頁面。」並停用「儲存送出」按鈕,onSubmit 另有一道防護。
  2. 重要例外:查無此會員時後端拋 ObjectNotFoundException,經 ExceptionHandlingController 對應為 HTTP 404。這是新會員第一次填寫的正常情況,明確排除在「載入失敗」之外,不會擋住首次建檔(驗收條件 2 不受影響)。

備註:目前新會員進入本頁時,因該 404 仍會先跳出既有的錯誤提示(useGetUser 的 onError),此為本次變更前就有的行為,未一併調整。若希望新會員不要看到這個提示,請告知,我可另開處理。

此保護超出本票字面範疇,若不需要可直接回覆,我再移除該 commit。

動作

匯出至 Atom PDF