Commit Graph

84 Commits

Author SHA1 Message Date
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
sky121113
c24f409674 [FIX] 移除 origin/ui 帶入的 UTF-8 BOM(aapt2 無法解析導致打包失敗)
設計師端編輯器在 3 個 XML 開頭寫入 UTF-8 BOM,aapt2 報
「Cannot read field elmName because root is null」。移除 BOM 後 S12XYU/S9XYU
Debug 皆可正常打包。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 15:40:36 +08:00
sky121113
3d798eb94d [FEAT] 整合 UIUX origin/ui 改版(後台/貨道/商品卡/員工卡/出貨/StarCloud 圖示)
合併 origin/ui 設計師改版:前台商品卡、後台首頁/主控、貨道卡片式 Grid(停售遮罩、
一鍵補貨配色)、商品搜尋、員工卡取貨、出貨清單與進度對話框、各 checkout 對話框版面、
StarCloud App 圖示與名稱、付款管道/接受付款圖檔、switch 色票 selector。

衝突處理:
- 3 個 Cmuh res/layout 覆寫檔(activity_fontend、dialog_pickup_code_buy、
  dialog_pickup_code_fontend)已於 ab3b53d 收斂進 main,保留刪除,由 main 對應佈局承載。
- origin/ui 移除了 colors.xml 的 @color/red,但重構後移入 main 的 fragment_shopping_cart
  仍沿用,補回 red 定義避免 aapt 連結失敗。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 15:37:14 +08:00
sky121113
ab3b53da99 [REFACTOR] 收斂 project 維度為執行期 shopping_mode + B014 雲端設定唯讀同步
1. B014 雲端設定下發 → App 解析寫入 DevSet 並持久化:
   - StarCloudAPI.saveSettings() 解析 DevSet(14 開關)/CashSet(7 面額)/
     FunctionSet(取貨碼 PickupCode、通行碼 PassCode)/ShoppingMode;
     缺漏粒度區分(整個物件缺→不動本地防誤關;物件內 key 缺→視為 false)。
   - MyApp 修 TapPay30~34 持久化 bug(saveSystemSet 補序列化、initialSystemSet
     改 optBoolean 防舊紀錄 crash),並新增 PickupCode/PassCode/ShoppingMode 持久化。
   - DevSetStructure 新增 isPickupCode/isPassCode 欄位。
   - SystemSetActivity 全部 21 個 checkbox 鎖唯讀、返回鈕只 finish() 不回寫。
   - 取貨碼浮鈕(FontendActivity)改吃 DevSet.isPickupCode()、通行碼入口(BuyDialog)
     改吃 DevSet.isPassCode(),取代舊 flavor 資源/寫死。

2. 收掉 project flavor 維度,三種購買流程改由雲端 shopping_mode 執行期切換:
   - SaleFlowHandler 改為 main 抽象基底 + create() factory,依 shopping_mode 回傳
     BasicSaleFlow(basic/原 General)、EmployeeCardSaleFlow(employee_card/原 Chengwai)、
     PickupSheetSaleFlow(pickup_sheet/原 Cmuh) 三策略。
   - 三 flavor 的 dialog/adapter/Kotlin 購物車/Cmuh 醫令類別全併入 main;重複類別去重。
   - FontendPickupCodeDialog 內部依 shopping_mode 分支(basic/employee 走 B660、
     pickup_sheet 走舊 memberVerification 並跳過取貨口檢查)。
   - fragment_vmc 合併掃描單據按鈕,VmcFragment 依 shopping_mode toggle 可見性。
   - General strings(zh/en/ja)、drawable、購物車 layout 併入 main;
     devset_defaults 併為 basic-mode bootstrap 預設。

3. 取代 BuildConfig.FLAVOR_project 編譯期分支:
   - AppEntry.isCmuh() 改判 shopping_mode == pickup_sheet。
   - DispatchDialog 6 處 Cmuh 分支改用 AppEntry.isCmuh()。
   - ComPort.getFilepath() 改認硬體維度 BuildConfig.FLAVOR(S12XYU→ttyS7/S6、
     S9XYU→ttyS1/S2),與購買流程正交;對現役機台行為不變。

4. build.gradle 移除 project 維度,flavorDimensions 只留 hardware;輸出檔名去掉
   project 段(app-S_12_XY_U-<ver>-debug.apk)。刪除 app/src/{General,Chengwai,Cmuh}/。

5. compiler-apk / release-apk(workflow + .claude/commands)改以硬體規格 S9/S12 為
   打包對象,OTA keyin 改依硬體分版並提示 shopping_mode 部署鐵律。

6. verPatch 69→70(供 OTA 遠端更新)。

雙硬體 clean 編譯回歸 S12XYU/S9XYU 全綠。實機三流程驗證待硬體。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 15:28:59 +08:00
sky121113
2c3255cb64 [RELEASE] 升級修補版號 verPatch 68→69(供 General 下位機修正 OTA 更新)
ComPort 修正後需遞增版號讓現場機台可觸發 OTA 覆蓋更新。
General S9XYU → versionCode 210169 / versionName 21_01_69_R。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 12:14:48 +08:00
sky121113
275d6d1fa9 [FIX] 通用版下位機 COM port 改為與中國醫相同
General 的下位機硬體與中國醫(Cmuh)相同(晟崴為最新硬體),故 COM port
應接 ttyS1/ttyS2 而非原本的 ttyS7/ttyS6。

ComPort.getFilepath() 改為:只有晟崴(Chengwai) 用最新的 ttyS7/ttyS6,
其餘(General + Cmuh)用 ttyS1/ttyS2。晟崴/中國醫接線不變,僅 General 調整。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 11:58:23 +08:00
sky121113
588da4a2eb [CHORE] APK workflow 強殺防呆 + 新增 Claude Code slash command
- .agents/workflows/{compiler,release}-apk.md:Gradle Daemon 終止改防呆——
  先優雅 ./gradlew --stop,僅在仍殘留時才升級終止(先 TERM 再 KILL),
  避免無差別 pkill -9 撞鎖導致 clean 編譯隨機失敗。
- .claude/commands/{compiler,release}-apk.md:新增對應 slash command(薄包裝,
  指向 .agents/workflows 單一真相來源,處理參數注入與 Java 17 環境)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 10:25:48 +08:00
sky121113
53ea3dafa9 [FEAT] 取貨碼金額歸零 + 通行碼不上報交易
- 取貨碼(FontendPickupCodeDialog):setTotalPrice(0),因屬已預付來取貨/
  付款未出貨補出貨,本機交易付款金額為 0。
- 通行碼(payment_type=5):工程師/內部硬體測試用,DispatchDialog 照常出貨
  測試硬體,但略過 MQTT 交易結案上報(避免污染銷售/營收、不扣雲端庫存;
  B670 驗證已於後台記 log)。集中於 publishFinalizeUnlessPassCode(),
  成功/失敗兩路徑共用。

三 flavor 編譯/打包通過。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 10:01:51 +08:00
sky121113
1720d2007e [FEAT] 取貨碼/通行碼改走 StarCloudAPI B660/B670(比照員工卡 B680)
舊的 httpAPI(memberVerification / checkAccessCode B024)改為新 StarCloudAPI:
- StarCloudAPI 新增 verifyPickupCode(B660,回 code_id+slot_no)、
  verifyPassCode(B670,回 code_id),及 PickupVerificationCallback。
- 通行碼 CheckoutAccessCodeDialog:手動+掃碼兩入口改走 verifyPassCode,
  成功設 flowType=5、保存 accessCodeId 供 MQTT finalize(payment_type=5)。
- 取貨碼 FontendPickupCodeDialog:兩入口改走 verifyPickupCode,依回傳 slot_no
  建立 BuyList、設 flowType=6、保存 accessCodeId(payment_type=6),
  進入 BuyPickupCodeDialog 確認 → DispatchDialog;文案修正為「取貨碼」。

finalize 的 code_id 取自 ReportAccessCodeStructure.accessCodeId、payment_type
取自 flowType,App 端 TransactionFinalizeBuilder 既有支援。三 flavor 編譯/打包通過。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 09:52:20 +08:00
sky121113
f10f6f5879 [FEAT] General 接通取貨碼入口(供實機測試)
- General SaleFlowHandler.onPickupRequested() 開啟 FontendPickupCodeDialog
  (原為空,導致取貨碼點不到)
- 前台取貨碼浮鈕改由 flavor 資源 show_pickup_code_button 控制顯示:
  General=true 顯示,main/晟崴/中國醫=false 維持原本隱藏行為

至此 General 取貨碼與通行碼皆可實機測試。三 flavor 編譯/打包通過。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 09:42:30 +08:00
sky121113
e8856d0a8b [FIX] 通行碼 Dialog 防呆強化(Part 2-3)
CheckoutAccessCodeDialog.changeOk()(自 Luzui 移植防呆):
- 加 3 秒防連點,避免重複送出驗證
- 輸入加 .trim() 與 isEmpty 過濾
- 修正誤植文案「統一編號長度不能少於 8 碼」→「通行碼長度不能少於 8 碼」

三 flavor 完整 APK 打包成功(General/Chengwai/Cmuh)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 09:07:56 +08:00
sky121113
2315a32f56 [FEAT] General 現金強化版合併(Part 2-2)
移植 Luzui 現金 Dialog 的硬體容錯邏輯(卡鈔偵測+退鈔重試、零錢不足拒收+
退款保障、暫存區兩階段入帳、找零失敗自癒、百元鈔庫存輪詢、3分鐘閒置逾時),
上報層改接 TaiwanStar 新 MQTT(移除 B600/B650,改 DispatchDialog 統一 Finalize)。

採「獨立類別 + flavor 路由」避免 duplicate class、不污染已上線 flavor:
- 新增 src/General CashPayDialogGeneral(Luzui 強化版改名,只 General 編譯)
  + General layout override dialog_checkout_cash_pay.xml 補 buttonRetryEscrow
  - showDispatchDialog 改 MQTT 路徑、移除 callB600AndProceed/httpAPI
  - onCreate(Context) 移除 throws(對齊 TaiwanStar DialogAbstract 簽名)
- DialogAbstract.cashDialogClass() 經 SaleFlowHandler 解析各 flavor 現金 Dialog
- 三個 SaleFlowHandler 加 cashDialogClass():General→CashPayDialogGeneral、
  晟崴/中國醫→標準 CashPayDialog
- 3 個呼叫點(BuyDialog/InvoiceBarcodeDialog/InvoiceCustomerIdentifierDialog)
  case 9 改 changeDialog(cashDialogClass())

三 flavor 編譯通過、General APK 打包成功。現金硬體容錯需實機驗證(階段 7)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 09:05:59 +08:00
sky121113
402490ee58 [FEAT] General 付款選單啟用 + BuyDialog NFC 顯示控制(Part 2-1)
- DevSet 初始預設值改由 res/values/devset_defaults.xml 提供,各 flavor 可覆寫;
  main 維持原值(Chengwai/Cmuh 行為不變),General override 為購物車 + 現金/
  刷卡/玉山/LINE Pay/發票全開,裝上即可用。
- BuyDialog 購物車分支:NFC 卡/儲值/手機改逐顆依 isDevNFCPay 控制顯示
  (TaiwanStar 無 layoutNfcPay 容器,修正原本指向不存在 view 而被註解的問題)。

三 flavor 編譯通過、General APK 打包成功。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 08:48:07 +08:00
sky121113
cfc802dbb5 [FEAT] General flavor 多品項購物車(Part 1)
移植 Luzui v2 Kotlin MVVM 購物車到 General flavor,接 TaiwanStar 既有
結帳鏈(BuyDialog → 付款 → DispatchDialog → MQTT 結案)、沿用 VMC 出貨。

- build:啟用 Kotlin/lifecycle/BaseRecyclerViewAdapterHelper(全域 classpath,
  cart .kt 僅在 src/General 編譯,不影響 Chengwai/Cmuh 行為)
- 移植至 src/General:CartViewModel/CartOperationAdapter/CartOperationResult/
  SafeCountdownUtil/UnibuyHelper/ShoppingCartFragment + layout/drawable/三語 strings
  - 移除 Luzui 的 updateLocalGoods(FLOWER/DAO)、DialogXManager、HttpAPI、格子機依賴
  - 結帳改 convertToBuyStructure() + SaleFlowHandler.onBuyRequested()
- 共用檔最小改動(對 Chengwai/Cmuh 零行為影響):
  - SlotStructure 加 cartSelectedCount
  - FontendActivity 加 openFragment()/backToVmc()、購物車浮鈕改走 onShoppingCartRequested()
  - RecyclerVmcBuyListAdpter 點商品改走 flavor hook handleProductSelected()
  - 三個 SaleFlowHandler 加 onShoppingCartRequested()/handleProductSelected()
    (General:加入購物車;Chengwai/Cmuh:維持原行為)

三 flavor 編譯通過、General APK 打包成功。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 08:45:11 +08:00
TaiwanStar Developer
404ba69fba chore: 修改 APP 圖示與顯示名稱為 StarCloud 2026-06-09 16:58:11 +08:00
TaiwanStar Developer
8e4a0993c7 style: 優化首頁購物按鈕樣式與文字,並新增 logo 資源
- 優化首頁 (activity_home.xml) 的購物按鈕 (startButton) 樣式:
  1. 寬度由 0dp 改為固定寬度 400dp。
  2. 按鈕文字由「購物去」調整為「開始購物」。
  3. 背景與文字顏色改為套用主題色系 (@color/primary 與 @color/onPrimary)。
- 新增星雲 LOGO 圓形圖示資源 (starcloud_logo_circle.png)。
2026-06-09 16:46:11 +08:00
TaiwanStar Developer
4d7717edc3 style: 優化後台貨道清單介面佈局與狀態顯示
- 狀態辨識度提升:
  1. 貨道編號新增「貨道」前綴字樣。
  2. 販售與停售狀態加入顏色識別,文字與 Switch 顏色會根據狀態動態切換(成功色/警告色)。
- 佈局與操作體驗優化:
  1. 重新排列操作區塊,將「清空貨道」按鈕移至卡片最下方。
  2. 放大庫存加減按鈕的觸控範圍(高度調整為 60dp)與字體大小,提升機台觸控體驗。
  3. 「清空貨道」按鈕改用 warning 警示色系。
- 視覺微調:移除卡片外框線,使列表視覺更為乾淨。
2026-06-09 16:14:36 +08:00
sky121113
5f480d6cb6 [FIX] 修正非中國醫專案的物料代碼一致性驗證邏輯並升級修補版號
1. 於 VmcSlotListActivity 限制 validateMaterialCodeConsistency 僅在中國醫 (CMUH) 專案下執行,其他專案直接跳過。
2. 調整 app/build.gradle 的修補版號 (verPatch) 變數值,由 67 遞增至 68。
2026-06-09 16:00:58 +08:00
TaiwanStar Developer
b1732987ce feat: 優化商品搜尋介面並修復後台貨道編輯 Bug
- 商品搜尋介面大改版:
  1. 搜尋列表從單欄改為 3 欄網格排列,並導入 MaterialCardView 重新設計商品卡片。
  2. 搜尋框體驗優化:隱藏原生圖示,新增清空按鈕;支援點擊列表或候選字時自動收起鍵盤。
  3. 點擊候選字邏輯修改為直接套用完整字詞。
  4. 擴大點擊範圍,改為點擊整張商品卡片即可選取。
- 貨道編輯清單修復:
  1. 將 textCount 隱藏狀態改為 INVISIBLE 解決 GONE 導致輸入框寬度壓縮為 0 的問題。
  2. 輸入數量時改用 numberPassword 並移除密碼遮罩,以喚起乾淨的純數字鍵盤。
- 資源與樣式:
  1. 新增 button_outline_black.xml 黑框按鈕樣式。
  2. 修正圖片檔名大小寫 (eTicket -> eticket)。
2026-06-09 15:59:36 +08:00
TaiwanStar Developer
d917f6445c style(ui): 將出貨頁面標題改為灰色背景與黑色文字 2026-06-08 15:33:34 +08:00
TaiwanStar Developer
d1bf7d18ce style: 調整出貨清單 UI 的文字顏色與出貨中狀態格式
- 將商品名稱、順序(槽位號)與已出貨數量資訊的文字顏色改為黑色(@color/black)

- 將出貨中狀態的格式「出貨中(1)」改為「出貨中(1件)」
2026-06-08 14:34:26 +08:00
TaiwanStar Developer
f2ed393686 style(ui): 優化出貨進度對話框結構、版面自適應與配色調整
- 頁面標題改為「出貨進度」,背景調整為主色 (primary)
- 新增並更新多國語言字串 (processing, dispatch_progress)
- 重構底部的當前出貨進度區塊結構,移除冗餘嵌套,將區塊背景設為 cardSurface
- 取消按鈕樣式改為 warning/onWarning 配色,扁平化結構並去除冗餘 FrameLayout
- 清單區域高度改為 weight=1 自適應剩餘空間,移除 Space 元件,背景改為 background 色
2026-06-08 13:59:32 +08:00
TaiwanStar Developer
907d5095d5 style: 重構員工卡支付對話框佈局並更新身分證/員工卡相關圖檔資源 2026-06-08 11:54:15 +08:00
TaiwanStar Developer
28a3d623f0 feat: 新增支付管道與接受付款類型相關圖片資源 2026-06-08 09:53:40 +08:00
TaiwanStar Developer
2e71cc29b8 feat: 修改 VMC 貨道清單之未配置商品圖示、卡片背景色與一鍵補貨按鈕配色 2026-06-05 17:24:37 +08:00
TaiwanStar Developer
8f6b5217d6 feat(ui): 貨道停售中狀態時在商品圖片上方顯示透明黑色遮罩 2026-06-05 16:19:51 +08:00
TaiwanStar Developer
5d9c5ba5cf style(ui): 調整貨道管理儲存與一鍵補貨按鈕配色,並將 Switch 選中狀態設為 primary 色 2026-06-05 16:18:26 +08:00
TaiwanStar Developer
a933bb22f6 feat(ui): 改造貨道管理列表為卡片式 Grid 佈局與 Adapter 邏輯對接 2026-06-05 16:16:27 +08:00
TaiwanStar Developer
aed8d9bc1f style(ui): 依據參考介面調整貨道管理版面
調整項目:
1. 頂部區域:保留「貨道管理」標題,省略機櫃選擇與命名的部分。
2. 列表區域:將 recyclerSlotList 改為 Grid 網格排版,設定 spanCount 為 3。
3. 底部區域:省略批量匯出、批量匯入按鈕。將「返回」與「清空」按鈕設為隱藏以維持程式碼 ViewBinding 相容性。
4. 儲存按鈕:原「上傳後台並返回」按鈕文字修改為「儲存」,並維持原有點擊與同步邏輯。
2026-06-05 15:40:36 +08:00
sky121113
abe3ac14c1 Merge branch 'dev' into main for release v21.1.67 2026-06-04 16:29:04 +08:00
TaiwanStar Developer
54e0c9ffa5 style(ui): 調整廣告區域容器比例至 21:9 與等比例縮放
1. 將廣告區域容器比例從 16:9 調整為 21:9

2. 設定影片播放器屬性為 app:resize_mode=zoom

3. 設定廣告圖片屬性為 android:scaleType=centerCrop
2026-06-04 16:28:34 +08:00
sky121113
0637f71e34 [FIX] 優化機台鎖定防護流程與遞增版本號
1. 遞增修補版號 verPatch 至 67 以落實機台 OTA 更新規範。
2. 於 FontendActivity 的 onCreate 流程新增機台鎖定狀態檢查,若鎖定則強制跳轉至 MaintenanceActivity 並清除 Activity 棧。
3. 修正 MqttService 的鎖定命令跳轉旗標,改用 Intent.FLAG_ACTIVITY_CLEAR_TASK 確保舊 Activity 棧被完整清理。
4. 移除 AppUtils 中未使用的 MqttManager 引用。
2026-06-04 16:07:31 +08:00
TaiwanStar Developer
02ae6623d9 style(ui): 調整前端首頁資訊排版與背景色
1. 將版本號與 TC/VC 移至最底部釘選

2. 頂部資訊順序改為「時間 | 溫度 | 網路」,文字改為 @color/gray

3. 上下區塊背景改為 @color/light_gray,文字改為 @color/gray

4. 頁面背景及商品卡片區域背景改為 @color/background
2026-06-04 15:41:56 +08:00
TaiwanStar Developer
12e61d2a10 feat(ui): 替換 VMC 購買清單為新版佈局並調適 Adapter
1. 替換 recycler_vmc_buy_list.xml 為新版 CardView 結構,微調定位使 textPrice 相容舊版價格邏輯
2. 將貨道 textSlot 移至左上角,大小設為 18sp,顏色改用 primary/onPrimary 語意色
3. 將庫存 textStock 獨立定位於右下角,大小設為 18sp,顏色改用 gray/black 資源
4. 修改 RecyclerVmcBuyListAdpter 綁定庫存數量,並將貨道文字調整為「貨道value」無補零格式
2026-06-04 15:24:22 +08:00
TaiwanStar Developer
c7d75a8522 fix(layout): 移除佈局 XML 檔案的 UTF-8 BOM 檔頭
修復 DataBinding 元件在 Gradle 建置過程中因 XML 檔案包含 BOM (Byte Order Mark) 檔頭而解析失敗的問題。

原因:XML 檔頭的前導字元 EF BB BF 導致 LayoutFileParser 在解析 root 節點時發生 NullPointerException。

調整項目:- 批次移除 layout 目錄下所有 XML 佈局檔案的 UTF-8 BOM 檔頭。
2026-06-04 14:22:32 +08:00
TaiwanStar Developer
c7b8372dfc style(ui): 簡化色彩系統設定與對齊佈局配置 2026-06-04 13:57:06 +08:00
sky121113
bfc2915403 [FIX] 修復中國醫多貨道庫存分配異常與遞增發版版號
1. 修復 SaleFlowHandler.java:重構中國醫客製領藥流程中的多商品貨道分配演算法,引進動態多貨道輪替分配機制,徹底解決一筆單多商品(如 3 個同商品)時貨道重複分配為 3, 4, 4 的 Bug。
2. 更新 build.gradle:配合生產發版,將修補版號 verPatch 遞增至 66,並在背景成功編譯產出正式 Release APK (CmuhS9XYURelease)。
2026-06-02 17:49:40 +08:00
sky121113
0967f8445e Merge branch 'dev' into main for release 65 2026-06-02 16:01:05 +08:00
sky121113
a5add7d8ae RELEASE: 修正多商品取貨 UI 倒數閃跳與 3 分鐘閒置崩潰問題,發佈版本 65 2026-06-02 16:00:58 +08:00
sky121113
31a073475e [PROMOTE] 晉升開發分支 dev 至生產分支 main
包含以下主要功能與修復:
1. [FIX] 修正 OTA 連線超時與首頁執行緒併發競態導致 UI 異常問題 (808b9c4)
2. [FEAT] 優化 OTA 靜默安裝邏輯,支援降版本覆蓋安裝 (8768e95)
3. [STYLE] 優化 CMUH 專屬佈局元件比例與樣式排版 (2ea55b9)
4. [FEAT] 新增 CMUH 客製初始畫面跳轉與多處頁面重啟邏輯優化 (7b9b96c)
5. [FIX] 修正中國醫 (CMUH) 領藥異常處理與銷貨流水號關聯 (4c9fb5e)
6. [FIX] 實作半途出貨失敗的 MQTT Finalize 結案回報機制 (b2b6776)
7. [REFACTOR] 優化中國醫(Cmuh)售貨與領藥流程,並重構 API 連線模組 (71a0591)
8. [FEAT] 主控台 UI 全面翻新 (Console UI Overhaul) (984bbe7)
9. [REFACTOR] 重構銷售流程至雙維度 Flavor 架構與版本計算規範 (3409f93)
10. [FEAT] 新增遠端 MQTT 應用程式 OTA 更新功能與雙版號動態計算機制 (e15d020)
2026-06-02 10:52:50 +08:00
sky121113
808b9c40d9 [FIX] 修正 OTA 連線超時與首頁執行緒併發競態導致 UI 異常問題
1. OtaManager.java: 將下載的連線逾時從 15 秒調高至 30 秒,讀取逾時調高至 120 秒,提升 OTA 下載穩定性。
2. FontendActivity.java: 修正多執行緒更新 UI 時,共用 logs 緩衝區所引發的競態條件 (Race Condition) 導致欄位變空的問題,改採區域變數更新;並安全封裝重構 reportOnScheduler 的生命週期管理方法;調整閒置逾時為 5 分鐘。
3. build.gradle: 依據實體機台 OTA 版號自動化規範,安全遞增 verPatch 修補版號至 56。
4. compiler-apk.md: 優化編譯工作流中的後台更新說明提示欄位。
2026-06-01 17:48:32 +08:00
sky121113
8768e95178 [FEAT] 優化 OTA 靜默安裝邏輯,支援降版本覆蓋安裝
1. 於 OtaManager.java 中執行 pm install 時新增 -d 參數,允許降級 (downgrade) 安裝,以因應測試與緊急回滾情境。
2. 遞增 app/build.gradle 中的修補版號 verPatch 至 38。
2026-05-29 17:20:41 +08:00
sky121113
2ea55b9fbb [STYLE] 優化 CMUH 專屬佈局元件比例與樣式排版
1. 調整 Cmuh 專屬之 activity_fontend.xml 佈局,優化影片播放器比例與首頁容器 Constraint 限制。
2. 調整 fragment_vmc.xml 中掃描按鈕之 LinearLayout 屬性順序與排版樣式。
3. 遞增 app/build.gradle 的修補版號 verPatch 至 37 以配合發版需求。
2026-05-29 16:45:31 +08:00
sky121113
7b9b96ce66 [FEAT] 新增 CMUH 客製初始畫面跳轉與多處頁面重啟邏輯優化
1. 新增 AppEntry 工具類別,集中管理 Cmuh 專案判斷與動態初始 Activity 的獲取邏輯。
2. 於 HomeActivity 中新增 Cmuh 專案判斷,若為 CMUH 則直接導向至 FontendActivity 以跳過一般首頁。
3. 將 MainActivity、MqttService 與 FontendActivity 中的硬編碼 HomeActivity 導向重構為呼叫 AppEntry.initialActivity()。
4. 新增 Cmuh 專屬之 activity_fontend.xml 佈局檔案。
5. 遞增 app/build.gradle 中的修補版號 verPatch 至 35。
2026-05-29 15:15:24 +08:00
sky121113
f3867dcb4b [DOCS] 修正 release-apk 工作流中寫死 S12XYU 的問題
1. release-apk.md: 調整為依據專案 Flavor (Cmuh) 動態判斷硬體變體 (S9XYU) 與對應的螢幕尺寸與路徑。
2026-05-29 14:42:11 +08:00
sky121113
6d1733dfa9 [RELEASE] 升級修補版號以準備中國醫發版
1. build.gradle: verPatch 33 -> 34
2026-05-29 14:37:27 +08:00
sky121113
4c9fb5e000 [FIX] 修正中國醫 (CMUH) 領藥異常處理與銷貨流水號關聯
1. build.gradle: 升級修補版號 verPatch 31 -> 33。
2. TransactionFinalizeBuilder.java: 新增 orderNo 欄位並提供 setter。預設 orderNo 同 flowId,若呼叫 setOrderNo 則於組建 OrderPayload 時覆寫 order_no。
3. DispatchDialog.java (CMUH):
   - 中國醫 (Cmuh) 取物單 SN 序號改為覆寫 order_no,不再覆寫 flow_id、OrderId 與 ReportFlowId,避免機台底層流程因 ID 重複而拋錯。
   - 修正領藥失敗的 Memo 寫入邏輯:機台未回應重試逾時,移除 insertDrgnoToMemo()。
   - 整單出貨失敗結案時,檢查是否有任何出貨成功紀錄(新增 hasAnySuccessfulDispatch()),僅在有成功出貨時才寫入 Memo,整單未出貨時不寫入,允許使用者重新掃碼領藥。
2026-05-29 13:56:21 +08:00
sky121113
b2b6776665 [FIX] 實作半途出貨失敗的 MQTT Finalize 結案回報機制
1. 遞增 app/build.gradle 修補版本號為 1.31。
2. 於 TransactionFinalizePayload 新增 delivery_status 出貨狀態欄位(0=失敗, 1=成功, 2=部分失敗)。
3. 於 TransactionFinalizeBuilder 實作自動計算出貨狀態與建構回報的邏輯。
4. 於 DispatchDialog 實作 finalizeFailedDispatch 機制,當多筆商品出貨至半途失敗時,自動將剩餘未出貨的商品標記為失敗並上報 MQTT Finalize 結案。
2026-05-29 12:17:42 +08:00