Commit Graph

131 Commits

Author SHA1 Message Date
sky121113
9bfb429392 [FIX] 修復刷卡機交易成功卻不繼續出貨流程
1. 修正 DevNFCPayController.execute():刷卡機(NFC/悠遊卡/手機/信用卡)回傳的 404 byte 電文本身已含 responseCode(成功為 0000),直接以 devNFCPay.read() 解析該段並送出 RESPONSE。
2. 移除先前誤加的「再以 readListen 等待第二段電文」邏輯:刷卡機僅送一段,等不到第二段導致倒數逾時、RESPONSE 從未送達對話框、changeDispatch() 無法觸發,造成「刷卡機顯示成功卻不出貨」。
3. 保留 isShowDialog / isShuttingDown 生命週期防護;此 controller 為所有感應付款共用,一次修復全部感應類付款。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 08:54:19 +08:00
TaiwanStar Developer
317dec1084 feat(ui): 優化取貨碼相關對話框與列表之 UI 排版 2026-06-15 16:43:58 +08:00
TaiwanStar Developer
be3c25bbf5 Merge remote-tracking branch 'origin/feat/general-cart-and-payment' into ui-design 2026-06-15 16:24:58 +08:00
sky121113
ff65559b4c [FEAT] 電子發票改由後台開立:機台只隨 finalize 上報發票輸入
1. TransactionFinalizePayload 新增 InvoicePayload 物件(status/amount/carrier_id/business_tax_id/love_code 等),讓 finalize 一併帶上發票開立輸入。
2. TransactionFinalizeBuilder:有發票需求(invoiceInfo 非空)時,從 InvoiceData 組發票輸入並固定 status=pending 帶進 finalize;機台不再判定開立結果。
3. DispatchDialog:移除機台直連綠界開票,改為進出貨流程僅上報;發票由後台收到 finalize 後建 pending 並去綠界開立(避免機台網路不確定性與等待)。
4. ReportInvoiceInfoStructure:保留 relateNumber 欄位(冪等鍵相關)。
5. 開票邏輯不放在即將淘汰的 HttpAPI(先前暫放 StarCloudAPI 的機台開票方法亦已移除)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 16:18:11 +08:00
TaiwanStar Developer
092c0e9a16 feat(ui): 調整系統設定頁面排版與玉山支付模組設定
- 將「購物方式」資訊移至 Header 區域並移除身份說明文字

- 將機台貨道顯示方式改為 TableLayout 並設為唯讀狀態,隱藏儲存按鈕

- 為大卡片容器增加 app:cardUseCompatPadding=true 並取消父層剪裁,修復卡片陰影遭裁切問題

- 修改玉山支付模組,將台灣Pay子標籤改為「玉山支付模組」,並徹底移除街口支付、LinePay、全支付、PiPay 等子項目及其連動邏輯

- 統一設定項目文字顏色,並新增相關支付圖示資源
2026-06-15 16:07:05 +08:00
sky121113
7875db4c7d [FIX] 升版 v91(OTA 版號遞增,內容同 v90 支付 MQTT finalize 修正)
1. build.gradle verPatch 90 → 91,供實體機台 OTA 升級。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 14:03:17 +08:00
TaiwanStar Developer
b32f76c753 style: 調整結帳對話框交易金額冒號與按鈕顏色
- 將Line Pay、NFC卡片、NFC手機、NFC加值對話框中的交易金額冒號改為全形

- 調整NFC卡片對話框取消按鈕文字色為onWarning,修改支付方式背景色為gray
2026-06-15 13:57:41 +08:00
sky121113
3fd34becb6 [FIX] 支付成功改走 MQTT finalize、修正卡在倒數不出貨;升版 v90
真因:各支付 Dialog 成功後呼叫已停用的 B600(reportFlowInfo),再靠 B600 的 HTTP 回應回呼 REPORT_FLOW 才進 DispatchDialog;B600 已失敗 → 永遠不出貨,卡到倒數 COUNTDOWN_CANCEL(症狀:刷卡機顯示成功但流程不繼續)。

1. CheckoutNfcCardDialog / CheckoutNfcRechargeDialog:支付成功(0000)不再呼叫 B600,直接 changeDispatch() 進 DispatchDialog,由 MQTT publishTransactionFinalize 統一上報(payload 已含 invoice_info,B600/B650 皆不需要)。
2. CheckoutNfcPhoneDialog:同上,且進 dispatch 前覆寫 payment_type=10(手機支付);刷卡機 NCCC 電文無法區分手機錢包/實體卡,依使用者所選按鈕分類。
3. CheckoutEsunPayDialog / CheckoutLinePayDialog / CheckoutTapPayDialog:交易成功直接 changeDispatch;交易失敗改為提示「交易失敗」並返回購買頁(changeBuy),不再卡住或誤出貨。
4. LinePay 維持 payment_type=70(官方直連),後台另補定義;TapPay 子項 30~34 沿用。
5. 舊 CheckoutCashDialog/CashPayDialog 為 legacy,basic shopping_mode 不使用(現金走 CashPayDialogGeneral),本次未動。
6. build.gradle 版號 verPatch 89 → 90。

注意:後台 star-cloud 需同步新增 payment_type 10(手機支付)/70(LINE Pay 官方) 與翻譯(另一 repo,另行提交)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 13:56:56 +08:00
sky121113
a99f7b0572 [FEAT] 雲端日誌分級(LogLevel)與除錯雜訊清理
1. MyApp 新增 logLevel 欄位(預設 INFO),由雲端 B014 LogLevel 下發並回送,現場除錯硬體可設 DEBUG。
2. Logs.debug()/ignore() 改為僅在 LogLevel=DEBUG 時寫入 debug.txt;logcat 一律照印不受影響。
3. Logs 新增單行寫檔上限 MAX_LINE(1000),超長 JSON/payload dump 截斷並保留原始長度,避免淹沒 debug.txt。
4. 將 HttpAPI/HttpTapPay/DevXinYuan/DevXinYuanController/DevNFCPayController/BuyDialog/DispatchDialog 大量 "AAAA…/bbbb…" 開發雜訊 logs.info 改為 logs.debug 並補上具體訊息。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 13:56:32 +08:00
sky121113
7cb9039a50 [FEAT] 商品詳情頁接 B012 t060v03_i18n 規格多語(純文字含換行原樣呈現)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 11:50:00 +08:00
sky121113
d7bef7b827 [FIX] 修正直接購買(購物車版)未跳購物車品項頁的真因;升版 v89
1. 真因:DialogProductDetail 取 SaleFlowHandler 時用 onCreate 的 getContext(),那是 AlertDialog 包裝過的 ContextThemeWrapper,instanceof FontendActivity 為 false,導致 openCartList 靜默 return(一般版因 requestBuy 有 new BuyDialog 後路才照常開支付頁,故僅購物車版受影響)。
2. 修法:建構子保存原始傳入的 Context(真正的 FontendActivity)為 hostContext,openCartList/requestBuy 改用 hostContext 做 instanceof 與取 SaleFlowHandler。
3. 升版號 verPatch 88 → 89。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 11:24:28 +08:00
sky121113
1c9022cc5e [FIX] 修正商品格線右緣觸控失效與直接購買未跳購物車頁;升版 v88
1. 修正 fragment_vmc.xml 商品格線 recyclerBuy 在 ConstraintLayout 缺水平約束(原 match_parent 僅綁上下)導致右側佈局/觸控異常:改為 0dp + start/end 綁 parent 確保全寬與右緣可點。
2. RecyclerVmcBuyListAdpter 讓整張商品卡片皆可點開詳情頁(原僅圖片可點),避免點到名稱/價格區無反應。
3. 商品詳情頁「直接購買」(購物車版)改為先切換至購物車品項頁、再關閉詳情頁,避免關閉對話框與 fragment 切換時序互相干擾導致未跳頁。
4. 升版號 verPatch 87 → 88。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 11:13:36 +08:00
sky121113
df96f33d5f [FEAT] 商品詳情頁直接購買分流與數量帶入;升版 v87
1. 詳情頁「直接購買」依購物車開關分流:購物車開啟時以詳情頁選定數量加入購物車後前往購物車列表頁(不直接結帳);購物車關閉(一般版)維持單品直購彈 BuyDialog 選付款。
2. 修正數量未帶入問題:加入購物車與直接購買統一走 addSelectedQuantityToCart(),依詳情頁數量逐件加入,點 N 件購物車即為 N 件。
3. 升版號 verPatch 86 → 87。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 10:44:19 +08:00
sky121113
bd23c31ba1 [FEAT] 商品詳情頁接線:點商品開詳情、依購物車開關呈現按鈕
1. 新增 DialogProductDetail:把原本只有佈局的商品詳情頁接活,顯示商品圖、多語名稱、貨道、庫存、數量與金額小計。
2. 依雲端 DevSet.ShoppingCar 呈現按鈕:購物車開啟顯示「數量調整+加入購物車+直接購買」;購物車關閉(一般版)隱藏「數量調整+加入購物車」,只留「直接購買」且數量固定 1。
3. 加入購物車以選定數量逐件加入(沿用 CartViewModel 庫存/8 件上限防呆);直接購買清空 buyList 放入本商品後走既有 BuyDialog 選付款。
4. BasicSaleFlow.handleProductSelected 改為點商品一律先彈出詳情頁。
5. RecyclerVmcBuyListAdpter 商品卡右下角「+」(buttonQuickAdd) 接線:僅購物車開啟時顯示並快速加購一件,關閉時隱藏。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 10:16:29 +08:00
sky121113
0900dc20f9 Merge branch 'feat/general-cart-and-payment' into ui-design 2026-06-15 09:47:41 +08:00
sky121113
35af9fec8f [FEAT] 升版 v85 並打包 S9XYU(多語系 11 語+後台 API 對接+ui-design 合併)
1. verPatch 84 → 85,對應自 v84 以來累積的多語系擴充(法德西)、後台 B014 LangSet/B012 i18n 對接、ui-design UI 改版合併與 10 語系字串對齊等變更,供 OTA 版號對齊。
2. 產出 S9XYU Debug APK:versionName 21_01_85_R、versionCode 210185。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 09:36:57 +08:00
TaiwanStar Developer
eb0b9c8271 feat(ui): 遷移商品詳情對話框佈局並修復編譯資源錯誤
- 加入 dialog_product_detail.xml

- 移除本專案未支援的 RoundLinearLayout 與 RoundTextView 等自訂元件與屬性

- 替換缺漏的圖示、文字與顏色資源以維持正常編譯
2026-06-15 09:35:53 +08:00
sky121113
8e02e7adeb [FEAT] 補齊 10 語系合併後缺漏字串,全語系對齊主檔
1. ui-design 合併後主檔 values/strings.xml 新增的 15 個顧客可見字串(員工卡支付、下載/上傳同步狀態、購物車數量上限、商品出貨成功、櫃門取貨、確認取貨倒數、機器巡檢等),補譯進全部語系。
2. 英/簡中/韓/越/泰/印尼/法/德/西 各補 15 條;日文補 12 條(原已有 back/syncing/sync_completed)。
3. 補齊後 10 個語系皆與主檔 0 缺漏,XML 全部 well-formed,這批新 UI 字串不再 fallback 中文。

註:機器翻譯品質,customer-facing 重點詞(員工卡、載具/統編等)建議母語者校對。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 09:30:48 +08:00
sky121113
a80bb4dd85 Merge remote-tracking branch 'origin/ui-design' into feat/general-cart-and-payment
# Conflicts:
#	app/src/main/java/com/unibuy/v2/adapter/CartOperationAdapter.kt
2026-06-15 09:21:49 +08:00
sky121113
92553d96d2 [FEAT] 多語系擴充法德西並對接後台 B014/B012 多語 API
1. 新增法文(values-fr)、德文(values-de)、西班牙文(values-es)三語系資源,各 286 條以 en 為範本,App 支援語系達 11 種;LanguageHelper 的 SUPPORTED_LANGUAGES、getDisplayName、canonicalize 一併補上 fr/de/es。
2. 語言選單改由後台決定:StarCloudAPI.saveSettings 解析 B014 新增的 LangSet(Languages 清單 + Default),FontendActivity 選單改讀 LanguageHelper.getMachineLanguages(),只顯示該機台後台啟用的語系;未取得 B014 時退回全部支援語系。首次(使用者未手動選過)自動套用後台預設語系。
3. 商品名稱改讀 B012 新增的 t060v01_i18n 多語 map:StarCloudAPI.saveProducts 解析並帶入每個商品;ProductStructure.getLocalizedName fallback 鏈改為 i18n map 對應語系 → map 的 zh_TW → 舊 _en/_jp → 中文主值,韓/泰/越等語商品名可正確顯示。
4. 語系代碼雙向轉換:後台底線格式 zh_TW 與 App 標準 zh-TW 互轉(LanguageHelper.toBackendLocale 與 canonicalize)。
5. 零 DB 風險持久化:機台語系(machineLanguages/defaultLanguage)與商品多語 blob 均存於既有 MemoDao(比照 shopping_mode),不動 products 表 schema、不升 DB 版本,避免破壞性 onUpgrade 清除現場機台綁定資料。

註:商品規格 spec 後台已送 t060v03_i18n 但 App 尚無顯示 UI 故未接;舊 HttpAPI 解析路徑未加 i18n,會 graceful fallback 至 _en/_jp。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 09:15:53 +08:00
TaiwanStar Developer
c7134fe712 feat(ui): 更新發票選擇對話框 UI 佈局為垂直排列
- 將發票選擇對話框 (InvoiceTypeDialog) 根佈局改為 ConstraintLayout,並加入半透明深色背景。
- 將發票選項(手機條碼、捐贈發票、公司統編)改為垂直排列,並移除副標題文字。
- 新增 invoice_button_height 定義發票選項卡片的高度。
- 調整返回按鈕位置,並優化倒數計時文字顯示邏輯。
2026-06-15 09:03:37 +08:00
TaiwanStar Developer
a10a51ec10 UI: 優化商品卡片結構與樣式
- 新增快速新增按鈕
- 卡片版面區分為上下區塊,統一由最外層控制邊距
- 調整商品圖片為 1:1,並帶有 padding 白框效果
- 貨道與庫存資訊移至左上角垂直排列,分別套用圓角背景色
- 修正金額為 0 時不顯示的問題
- 售罄遮罩覆蓋全卡片,文字改為白色「售完」
2026-06-12 17:27:12 +08:00
TaiwanStar Developer
0a19e965a8 feat(cart): 優化購物車品項數量調整邏輯與介面顯示
- 新增單一品項與總數量的調整限制邏輯,達上限時按鈕切換為 disabled 狀態

- 移除數量調整按鈕的陰影跳動與裁切問題

- 新增增加、減少、刪除按鈕的水波紋點擊反饋

- 在品項金額後方新增「庫存xx件」資訊,並統一樣式

- 購物車達數量上限時,顯示「已達數量上限」警告文字
2026-06-12 13:35:39 +08:00
TaiwanStar Developer
e331e399bc feat(ui): 統一來店禮與通行碼的對話框樣式與輸入模式切換
- 參照取貨碼對話框 (dialog_pickup_code_fontend) 重新設計 dialog_free_gift_code.xml 與 dialog_access_code.xml
- 於 CheckoutFreeGiftCodeDialog 與 CheckoutAccessCodeDialog 加入鍵盤輸入與掃描條碼之模式切換邏輯 (btnModeKeypad / btnModeScan)
2026-06-12 12:16:08 +08:00
sky121113
5b8a0d7cf6 [FEAT] 新增遠端 update_settings MQTT 指令並收斂系統設定為唯讀;升版 v84
1. MqttService 新增 update_settings 指令分支:收到後重抓系統設定(B014),
   不串接商品/廣告同步,僅更新設定本身。
2. 忙碌防呆:交易/購物車/對話框進行中(getBusyReason 非空)時拒收並回 failed
   ACK,後台 RemoteCommand 約 1 分鐘 timeout 後可重發。
3. 重連時序修正:先發成功 ACK,再延遲 1.5 秒重連 MQTT,避免重連把送指令的
   連線斷掉導致 ACK 發不出去(涵蓋 token 輪換情境)。
4. StarCloudAPI.downloadSetting 新增可選 reconnectMqtt 參數(saveSettings 同步),
   綁定 UI 流程維持 true、update_settings 路徑傳 false 由呼叫端控制重連時機;
   無參數多載維持原行為,向下相容。
5. SystemSetActivity 收斂:機台端系統設定全面唯讀,唯一可編輯項為硬體貨道
   (彈簧/履帶,僅系統方);移除現金總開關連動,回寫雲端只送 is_spring_slot_*。
6. app/build.gradle verPatch 升至 84。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 12:01:50 +08:00
TaiwanStar Developer
2e70c16aa3 UI: 更新取貨碼視窗樣式與佈局
- 將「請輸入取貨碼」標題與副標調整為單一標題
- 調整視窗上方 padding 與標題間距
- 實作「鍵盤輸入」與「掃描條碼」的分段控制按鈕,包含背景、文字顏色變化與陰影效果
- 按鈕群組移除外框並增加陰影
- 返回按鈕置中並修改文字為「取消xx秒」
- 「輸入完成」按鈕修改為「確認」
- 掃描條碼圖片等比例填滿容器
2026-06-12 11:49:14 +08:00
sky121113
318bfde1fb [FEAT] 多語系擴充至 8 語並改用語言選單;升版 v83
1. 新增 5 個語系資源:簡體中文(values-zh-rCN)、韓文(values-ko)、越南文(values-vi)、泰文(values-th)、印尼文(values-in,採 Android 舊代碼 in),各 285 條以 en 已翻譯集合為範本,缺漏字串自動 fallback 回預設繁中。
2. LanguageHelper 重寫支援 8 語完整 locale:SUPPORTED_LANGUAGES 清單、canonicalize() 相容舊碼(tw/jp)並帶 region、buildLocale() 處理 zh-TW/zh-CN 與印尼資源代碼、getDisplayName() 以各語自身文字顯示。
3. 商品名稱多語以 toProductLang() 收斂:僅 en/ja 取對應翻譯,其餘語言(簡中/韓/越/泰/印尼)一律 fallback 中文主值(後台目前僅中/英/日)。
4. FontendActivity 語言入口由 3 顆內聯鈕改為單一 🌐 鈕開啟 AlertDialog 單選選單(showLanguagePicker),隱藏 En/Ja 舊鈕;切換後重綁定入口。
5. 新增字串 select_language 並補齊全 8 語系翻譯。
6. 升版號 verPatch 82 → 83。

註:泰文需於真機驗證系統字型支援;5 種新翻譯為機器品質,customer-facing 字串建議母語者校對。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 10:30:22 +08:00
sky121113
fdf02189fb [FEAT] 解除 App 多語系隱藏並收斂商品名稱多語邏輯;升版 v82
1. FontendActivity 重新顯示中/En/日語言切換鈕(移除 visibility=gone),點擊監聽改傳統一代碼 zh/en/ja。
2. LanguageHelper 新增 normalizeCode()/normalizedLang(),將歷史 tw、Locale zh、日文 jp 全部收斂為 zh/en/ja 一套,changeLanguage 一律儲存正規化代碼。
3. ProductStructure 新增 getLocalizedName(),依目前語言取商品名稱,英/日未翻譯時自動 fallback 回中文主值,作為商品名稱顯示的單一來源。
4. 各 adapter 改用 getLocalizedName():RecyclerVmcBuyListAdpter、CartOperationAdapter、RecyclerDialogBuyListAdpter(原被註解)、RecyclerProductListAdpter 與 RecyclerProductSearchAdpter(原永遠顯示中文),刪除各自重複的語言 switch。
5. applySavedLanguage() 集中至 base class AppCompatActivityAbstract.onCreate(),所有 Activity 於 inflate 前統一套用語言設定。
6. 升版號 verPatch 81 → 82。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 09:59:47 +08:00
sky121113
73dee29485 [FIX] 修復購物車倒數返回 VMC 時的 onSaveInstanceState 崩潰
1. FontendActivity.switchFragment:commit 前檢查 Activity 是否已達 STARTED,非前景則跳過並記 log;並將 .commit() 改為 .commitAllowingStateLoss(),作為背景切換的最終防線(切換僅為 Fragment hide/show,資料在 ViewModel,state loss 無實害)。
2. FontendActivity.openFragment:同步加上 lifecycle 防呆,避免背景狀態下 commitNow() 丟出 IllegalStateException。
3. ShoppingCartFragment.onFinish:原以 isAdded() 判斷無法擋住 onSaveInstanceState 後的 commit,改以 lifecycle 是否達 STARTED 為準,避免 180 秒倒數於背景觸發 backToVmc 導致崩潰。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 09:35:20 +08:00
sky121113
a33c0c97bd Merge remote-tracking branch 'origin/ui-design' into feat/general-cart-and-payment 2026-06-12 08:47:50 +08:00
sky121113
39245a0608 [FIX] TapPay 圖示檔名改小寫修正 aapt2 命名違規;升版 v81
- ui-design 合併帶進的 TapPay30~34.png 用大寫檔名,違反 Android
  resource「只能 a-z/0-9/底線」規則,導致 mergeResources 失敗。
  改名為 tappay30~34.png(git mv 保留歷史)。圖示目前未被引用,
  改名不影響功能,保留供日後接線。
- verPatch 80→81

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 08:47:43 +08:00
TaiwanStar Developer
f6028ffb80 UI: 優化購物車頁面排版與樣式
1. 商品列表滿版顯示,品項數量移至最上方並縮小字級。
2. 小記與總額樣式調整:小記字級縮小且改為黑色,總額改為主題色,並對齊底部。
3. 底部操作區重新排版:左右比例改為 4:6,對齊底部水平線。
4. 按鈕樣式更新:
   - 「繼續選購」:改為 outline button。
   - 「清空購物車」:改為 warning 顏色的 outline button,移除計時括號並縮小字級。
   - 「前往結帳」:寬度填滿容器的按鈕。
5. 背景與陰影調整:底部操作區增加陰影並移除外框;商品區背景色調整。
6. 購物車單品操作按鈕(增減、刪除)增加 elevation 陰影效果。
2026-06-11 17:20:30 +08:00
sky121113
79e1f69325 Merge remote-tracking branch 'origin/ui-design' into feat/general-cart-and-payment 2026-06-11 16:58:21 +08:00
sky121113
8d2adee5ab [FEAT] 支付方式「母&&子」集中判斷 + 入口防呆;對話框期間隱藏銷售平台浮層
- DevSetStructure 新增 canCreditCard/canCardPay/canMobilePay/canEsunPay/
  canTapPay/canLinePay/canCash,集中「母開關 && 子項」真相
- BuyDialog 購物車/單品/例外三分支改用上述便利方法,並在 changeCheckout
  入口以 isPaymentFlowAllowed 再次防呆,擋下被繞過的已停用支付
- 浮層連動:HIDDEN/SHOW_MULTILANGUAGE_BUTTON 改為 HIDE/SHOW_SALE_OVERLAY,
  對話框與購物車 Fragment 期間統一隱藏取貨碼/購物車浮鈕與上下系統列
- 無操作逾時 3 分鐘調整為 5 分鐘;verPatch 79→80

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 16:58:14 +08:00
TaiwanStar Developer
b0f7381832 新增 TapPay 相關圖示資源 2026-06-11 16:21:49 +08:00
TaiwanStar Developer
5af9a94a0c 優化購物車品項排版與按鈕樣式
1. 新增按鈕背景與 Icon 向量資源
- 新增 bg_quantity_outline_button.xml:為加減按鈕設計的背景,底色為頁面背景,帶有 1.5dp 黑色圓角外框。
- 新增 bg_waste_outline_button.xml:為移除按鈕設計的背景,底色為頁面背景,帶有 1.5dp 警告色圓角外框。
- 新增 add_24.xml、remove_24.xml、close_24.xml:將原本填充式圖示改寫為純線段,設定黑色線條且加粗 (strokeWidth="3")。
- 新增 close_warning_24.xml:移除按鈕專用的叉叉圖示,線條同樣加粗,顏色改為警告色。

2. 優化購物車清單排版 (recycler_cart_operation.xml)
- 圖片縮小:將商品圖片寬高從 120dp 縮減為 80dp。
- 文字調整:將商品名稱字級放大至 24sp,並將字重調整為 normal。
- 將單一品項金額設為隱藏,並將小計金額從最右側移至商品名稱下方。
- 加減按鈕:尺寸調整為 44dp 並加上 10dp padding,套用新的黑色外框背景與加粗 Icon。
- 移除按鈕:尺寸同樣調整為 44dp,改用 Warning 樣式外框與 Icon,並加大左側邊距 (marginStart=32dp) 以拉開間隔。

3. 其他連帶變更
- 包含 fragment_shopping_cart.xml 與多語系 strings.xml 的相關微小變動。
2026-06-11 16:21:49 +08:00
TaiwanStar Developer
ee732e03a3 UI: 更新購物車與取貨碼懸浮按鈕樣式及動態角標
- 將購物車與取貨碼改為統一的帶圓角 CardView 容器設計,使用 surface 背景與黑色圖示文字。
- 修正陰影裁切問題,移除外層容器的 clipChildren 限制。
- 購物車新增右上角紅色 Badge 顯示當前選取的商品總數,並與 CartViewModel 動態綁定。
- 調整懸浮按鈕位置,使其與底部機台資訊列保持 24dp 的合適間距。
- 新增 Google Material Icons: package_24 與 shopping_cart_24。
- 同步更新相關的 Agent 發版規則文件,移除廢棄的多維度 flavor 定義。
2026-06-11 15:18:38 +08:00
sky121113
fc21186a53 [FEAT] 來店禮串接 B690 + 掃碼即時回饋與空窗修正、通行碼購物車模式封堵
1. 來店禮改串新端點 B690(取代舊 HttpAPI.freeGiftCode):
   - StarCloudAPI 新增 verifyWelcomeGift(),POST machine/welcome-gift/verify/B690(Bearer 機台 token,body {code})。
   - CheckoutFreeGiftCodeDialog 手動輸入與掃碼皆改走 B690;折扣映射 amount→mode1(折抵金額)、percentage→mode2(折扣趴數換算總價乘數,八折20→0.8)。
   - 加 isWelcomeGift API 防護;非 amount/percentage 型別擋下提示。
   - 注意:B690 無舊「免費商品」型,純折扣。
2. 掃碼 UX 空窗修正(取貨碼/通行碼/來店禮三個對話框):
   - 掃描器啟動延遲 5 秒→0,對話框一彈出即監聽,解決「剛彈出馬上掃會整個丟失、時好時壞、無回饋」。
   - 讀取窗口 7→9 次(約 45 秒),覆蓋 40 秒對話框存活時間。
   - 新增 SET_SCAN_INPUT:掃到的碼即時顯示在輸入框;送出前顯示「驗證中…」。
3. 通行碼購物車模式封堵:
   - BuyDialog 購物車模式的付款清單中,通行碼(buttonAccessCode)從未 gating;改在 onCreate 加權威判斷,需 isPickupModule && isPassCode 才顯示,涵蓋購物車/單品所有模式。
4. 版號 verPatch 76→79。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 15:09:42 +08:00
sky121113
2683b850a2 Merge remote-tracking branch 'origin/ui-design' into ui-design 2026-06-11 14:12:22 +08:00
sky121113
e8b3185b8a [FIX] 取貨碼/通行碼:封堵付款備援漏出、API 防護、掃碼即時回饋
通行碼漏洞封堵
- BuyDialog 單品模式 NFC 不支援時會強制顯示通行碼(buttonAccessCode)當備援,
  未判斷 isPassCode;改為從屬取貨模組(isPickupModule && isPassCode)才顯示

API 防護(defense-in-depth,UI 漏出入口也擋下)
- submitPassCode/submitPickupCode 開頭加守門:功能關閉即不呼叫 B670/B660,狀態列提示「功能未開放」

掃碼 UX 回饋
- 新增 SET_SCAN_INPUT 事件:掃碼後即時把掃到的碼顯示在輸入框
- 送出驗證前顯示「驗證中…」狀態,取代原本易忽略的遮罩 Toast,避免使用者誤以為沒掃到
- 版號 verPatch 75→76

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 14:11:06 +08:00
sky121113
018da036b1 [FEAT] B014 系統設定全面接入:取貨模組/來店禮 gating、購物車單品直購、購物方式顯示與設定權限分流
雲端 B014 設定解析與持久化(StarCloudAPI / MyApp / DevSetStructure)
- FunctionSet 改接 PickupModule/WelcomeGift/MemberSystem/AmbientTemp(原僅 PickupCode/PassCode)
- DevSet 補接刷卡機/掃碼支付細項;新增 HardwareSet 貨道型式(彈簧/履帶)解析
- B000 登入解析 identity/loginToken,供系統設定唯讀身分判斷與 B016 回寫
- 新增 bootstrap 預設(devset_defaults)、initialSystemSet/saveSystemSet DB 持久化

前台流程 gating
- 取貨碼、通行碼從屬「取貨模組」(PickupModule):模組關閉時連動隱藏(畫面與流程都不出現)
- 來店禮獨立判斷(WelcomeGift):原按鈕恆亮,改為依雲端開關顯示
- BasicSaleFlow:購物車(ShoppingCar)關閉時點商品改單品直購,清空後僅放本品並直接開 BuyDialog

系統設定頁(SystemSetActivity / activity_system_set / styles)
- 新增「購物方式」唯讀顯示(基礎版/員工卡/取貨單);僅 basic 展開其下可設定項
- 權限分流:商業政策項(購物車/發票/各支付方式/取貨模組/來店禮/會員)恆唯讀,
  機台實體項(刷卡機/掃碼/現金總開關、面額、環溫、硬體貨道)系統方可改並寫回雲端

其他
- DispatchDialog 成功結案清空 v2 購物車;ShoppingCartFragment 調整數量續命倒數
- 版號 verPatch 72→75

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 12:33:57 +08:00
TaiwanStar Developer
3b1764b75c feat: 新增商品出貨成功與機器巡檢中 UI 彈跳視窗 2026-06-11 10:24:04 +08:00
sky121113
b56c539549 [CHORE] 新增 .editorconfig 防止 XML 檔頭 UTF-8 BOM(aapt2 打包防呆)
供 UIUX 設計師直接在本 repo 改 UI 時,編輯器不再寫入 BOM 導致 aapt2 失敗。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 17:09:23 +08:00
sky121113
42947dce0c [FIX] DispatchDialog 關閉未結案補送 MQTT Finalize,修正多品項部分出貨不上報
1. 問題:出貨流程若走 dialogCancel() 收場(倒數結束 / dispatchIndex 越界 /
   中途中止),整筆交易完全不上報。批次 MQTT Finalize 僅在「成功完成」與
   「ERROR_PROCESS_GOODS 失敗」兩條路送出,dialogCancel 這條共通關閉路徑漏掉。
   此缺口於 main 既存,因通用版原無多品項出貨、Cmuh 失敗都走 ERROR_PROCESS_GOODS
   而未被觸發;多品項 basic 出貨為首次暴露。

2. 修正:在 dialogCancel() 開頭、buyList.clear() 之前加安全網——
   若出貨已開始(dispatchList 非空)且尚未結案(!isFinalizing),
   補呼叫既有 finalizeFailedDispatch() 送出一筆含全部明細的部分/未完成結案。

3. 守門:以 isFinalizing 擋住正常成功(:946)/錯誤(:1062)路徑,零重複上報;
   通行碼 flowType=5 仍由 publishFinalizeUnlessPassCode 自動略過,
   對晟崴/中國醫現行行為零影響。

雙硬體編譯綠。實機驗證待硬體(多品項第2件失敗→後台收到一筆部分出貨)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 16:47:10 +08:00
sky121113
1d4c4ab071 [FEAT] Phase3 購物車:移植 ShoppingCart 商品列外觀(表面移植,沿用現有 v2 購物車)
- recycler_cart_operation 改用 ShoppingCart 設計(120dp 圖、QuickCart 字樣、primary 色、56dp 加減鈕)
- 保留 buttonWaste 刪除鈕與 totalPriceTextView 小計(現有 CartOperationAdapter/ShoppingCartFragment 沿用)
- 新增 TextAppearance.App.QuickCart.Medium / .Small 樣式
- 不動 FontendActivity 架構與抽屜(DialogXManager/FlowerFragment 不在表面移植範圍)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 16:36:00 +08:00
sky121113
998b3ae89f [FEAT] Phase2 支付:dialog_buy 支付選單改用 Travis 版(沿用現有 BuyDialog 邏輯)
- dialog_buy 換成 Travis 付款選擇版面(gridPaymentIcons + ConstraintLayout Flow)
- binding 契約相符(layoutNfcPay 在現有 BuyDialog 已停用、逐顆控制),無需改 Java

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 16:19:49 +08:00
sky121113
33d79076a6 [FEAT] Phase2 發票:完整移植 Travis 發票設定新流程
- 新增 InvoiceTypeDialog(統一類型入口:載具/捐贈/統編)
- 新增 InvoiceDonationDialog + RecyclerDonationListAdpter(捐贈機構 RecyclerView)
- 新增 dialog_invoice_type / dialog_donation 版面 + bg_selected_item
- BuyDialog 發票入口改走 InvoiceTypeDialog(取代直接進 InvoiceBarcodeDialog)
- InvoiceBarcodeDialog:捐贈鈕改導向新 InvoiceDonationDialog,移除舊 inline
  showDonationDialog(其引用的舊 dialog_donation id 已不存在)
- 沿用現有 main 發票資料流(getInvoiceData/setLoveCode、ReportFlowInfoData)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 16:18:21 +08:00
sky121113
73e2b55c53 [FEAT] Phase2 發票:移植 Travis 統編/載具對話框外觀(沿用現有 Java)
- dialog_customer_identifier / dialog_invoice_barcode 換 Travis 版面
- 新增 bg_keypad_button / bg_step_active / bg_step_inactive 與 color/outlineVariant
- binding 契約相符,無需改 Java

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 16:07:39 +08:00
sky121113
696e6cb952 [FEAT] Phase2 通行碼/取貨碼:移植 Travis 對話框外觀(沿用現有 B660/B670 邏輯)
- dialog_access_code / dialog_pickup_code_fontend 換 Travis 版面
- binding 契約相符,無需改 Java(保留現有通行碼/取貨碼邏輯)
- 新增 color/transparent

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 16:05:21 +08:00
sky121113
d4fe3c6cf4 [FEAT] Phase2 支付流程:移植 Travis 現金/玉山結帳對話框外觀
分區授權:checkout 對話框採 Travis 設計,邏輯沿用現有 main。
- dialog_checkout_cash_pay / dialog_checkout_esun_pay 換 Travis 版面
- 補回 buttonRetryEscrow(CashPayDialogGeneral 退鈔重試邏輯沿用),以新 Material 樣式呈現
- 新增 pay_* 付款圖檔、icon_network_poor/temperature、img_reload
- 新增 colors infoContainer / surface

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 16:03:43 +08:00