Commit Graph

487 Commits

Author SHA1 Message Date
sky121113
fb1bcf49e1 [FEAT] 新增 OTA 預約排程與部署狀態展示,並優化版本排序與 UI
1. 建立 `ota_schedules` 資料表與 `OtaSchedule` Model,提供 OTA 預約排程基礎儲存結構。
2. 建立 `ota:process-schedules` 背景 Artisan Command 並註冊至 Console Kernel,每分鐘自動執行到期的預約並透過 MQTT 發送。
3. 擴充 `ApkVersionController` index 方法:加入加載列表時自動觸發排程的防呆機制,並在記憶體中快速統計 pending 與 completed 的機台。
4. 擴充 `ApkVersionController` store 與 push 方法,移除已用不到的 `is_forced` (更新模式) 限制,並支援 `scheduled_at` 預約時間的寫入。
5. 調整 `create.blade.php` 頁面,移除「強制更新」的 Switch 欄位,僅保留注意事項防錯提示。
6. 調整 `index.blade.php` 頁面,將「更新模式」改為「部署狀態」一欄,整合系統內建的 `.tooltip` 與原生 `title` 屬性,在加載與刷新時 100% 穩定展示 Hover 機台名單。
7. 優化 `index.blade.php` 彈窗,將原生時間輸入框改為 Flatpickr 樣式,加入日曆圖標並支援動態 locale 語言切換(中/英/日),將標籤統一命名為「選擇更新時間」。
8. 同步更新並對齊中、英、日三語系 `lang/*.json` 語系檔,並完成字母排序與反逸出斜線處理。
2026-05-29 10:55:23 +08:00
sky121113
d9bf2bbe98 [FEAT] 依廠商規格全面重構 B013 硬體狀態碼並補齊三語系翻譯
1. 修改 MachineService 中的 0424 代碼標籤為 Purchase successful(購買成功)並改寫成功判定邏輯。
2. 移除 DiscordWebhookService 中重複且過時的 errorCodes 硬編碼對照,統一由 MachineService 作為單一真實來源。
3. 同步更新 MQTT 即時通訊規格文件中有關 0424 的定義與出貨結果判定規則。
4. 新增並以自動對齊腳本完美補齊 en/zh_TW/ja 三語系檔中所有 53 種硬體代碼翻譯,完成排序(ksort)與斜線不逸出處理。
2026-05-29 09:13:16 +08:00
sky121113
7766fce1d4 [FEAT] 新增全域 workflow 指令入口
1. 新增 ./workflow 統一執行器,支援 load-ids、daily-work-log、hotfix-prod、demo-day-pptx、start-task、promote-env、monthly-report、now-push。
2. 補充 docs/workflow-commands.md 使用說明與參數範例,便於團隊直接操作。
2026-05-28 16:20:27 +08:00
sky121113
da11241f72 sales: localize pickup recipient wording for payment_type 42 2026-05-28 16:14:02 +08:00
sky121113
7d8b342a85 sales: unify pickup recipient wording for payment_type 42 2026-05-28 16:08:35 +08:00
sky121113
5c66a01261 chore: sync pending model/docs/i18n updates 2026-05-28 15:55:38 +08:00
sky121113
ea8c277ee9 sales: show member_barcode for payment_type 42 in records UI 2026-05-28 15:54:53 +08:00
sky121113
acde99e383 [FIX] 修正下位機 Discord 告警發送條件與層級對等
1. 調整 MachineLog 的 created 監聽器,使 submachine 類型日誌僅在 level 為 warning 或 error 時才派發 Discord 通知任務,避免 info 狀態日誌(如出貨中、平台上升中)洗板告警。
2. 優化 DiscordWebhookService 的下位機異常渲染,根據日誌嚴重程度 (level) 動態調整標題前面的 Emoji 圖示,error 級別顯示 🚨,warning 級別顯示 ⚠️
2026-05-28 14:53:06 +08:00
sky121113
dcdfe1382e [FIX] 解決 HTTPS 環境下 AJAX 分頁請求 http 混合內容 (Mixed Content) 攔截 Bug
1. 在 ads/index.blade.php 的 fetchPage 分頁異步請求中,新增主機與協議對齊邏輯 (urlObj.protocol = window.location.protocol),防止在 HTTPS 網頁中請求同域 http 分頁而被瀏覽器攔截。
2. 同步在 products/index.blade.php 的 AJAX 分頁切換重組中,對同域的請求協議進行 HTTPS 同步校正,解決混合內容載入失敗的問題。
2026-05-28 11:42:57 +08:00
sky121113
c3e60b8746 [FEAT] 新增商品 Excel 批量匯入與模板下載功能
1. 新增 ProductImportService 服務,實作 Excel 商品檔案解析、欄位驗證、多租戶 company_id 歸屬處理及資料批量寫入/更新邏輯。
2. 在 ProductController 新增 import 與 downloadTemplate 動作,處理檔案接收驗證與匯出,並在匯入後自動重建該公司商品目錄快取。
3. routes/web.php 新增商品下載模板與 Excel 匯入的專用路由。
4. 重構 products/index.blade.php,新增極簡奢華風商品匯入 Modal、檔案拖放/選擇區,並採用 Alpine.js 進行彈窗開啟與非同步上傳 API 交互。
5. 擴充 components/page-header.blade.php,使頁面主標頭支援渲染多個操作按鈕 (actions 插槽),以配合新增的「匯入商品」按鈕。
6. 同步更新 lang/zh_TW.json 與 lang/en.json,對齊「商品匯入成功」、「請選擇公司」等相關語系翻譯。
7. 微調 AdvertisementController,維持全站 Controller 進度對齊。
2026-05-28 11:19:00 +08:00
sky121113
b0fc0e6520 [FEAT] 新增 APK 上傳檔名自動解析與優化中國醫風味選項
1. 新增 APK 上傳時的檔名自動解析功能(可從 app-[flavor]-[version_name] 格式自動解析並填入版本名稱與機台風味)。
2. 新增版本代碼的自動數學推導,將 Major_Minor_Patch 轉換為整數(例如 21_01_6_R 轉換為 210106)並自動填入。
3. 將原本「中國醫客製」風味選項由 S_12_XY_U_Cmuh 修正為 S_9_XY_U_Cmuh(S9 主板)。
4. 重構 create.blade.php 表單,將原本位於 HTML x-data 屬性內部的複雜 JS 邏輯抽離至獨立的 <script> 區塊(apkVersionForm 函數),解決 HTML 屬性與 JS 引號/括號衝突導致的渲染問題。
5. 引入 Alpine.js 的 x-model 機制對版本名稱(versionName)與版本代碼進行雙向綁定,確保自動解析賦值的強健性。
2026-05-28 09:35:31 +08:00
sky121113
dd5e78a9ff [FIX] 修正 APK 版本強制更新開關永遠為開啟的 Bug
1. 修正 ApkVersionController::store() 中 is_forced 欄位的判斷邏輯
2. 原邏輯使用 $request->has('is_forced') 判斷,但因表單含 hidden input (value=0),導致 key 永遠存在,has() 永遠回傳 true
3. 改用 $request->boolean('is_forced') 直接讀取欄位值,正確將字串 '0' 轉為 false、'1' 轉為 true
2026-05-27 17:17:26 +08:00
sky121113
72f166eb14 [STYLE] 改善 APK 版本新增頁面 UI 與提示統一化
1. 版本代碼欄位改為 ±1 Stepper 風格(`type="text" inputmode="numeric"`),移除瀏覽器原生上下箭頭
2. 機台風味下拉選單改為 `x-searchable-select` 搜尋式選單,支援關鍵字篩選並統一 UI 風格
3. 移除 index 頁面的 session success 畫面提示框,改由全域 toast 統一處理
4. 移除 create 頁面的 $errors 畫面錯誤列表,改由全域 toast 統一顯示錯誤訊息
2026-05-27 15:46:31 +08:00
sky121113
62f54499ce [FIX] 移除角色權限設定中已廢棄的特殊權限模組
1. 修改 PermissionController 中的 activeModules 清單,將已不存在的「特殊權限 (menu.special-permission)」模組移除,修正權限篩選邏輯。
2. 同步修改 role-card.blade.php 與 role-list.blade.php 視圖,將特殊權限從模組列表陣列中剔除,確保角色詳情卡片的權限計數與標籤顯示精確無誤。
2026-05-27 10:03:14 +08:00
sky121113
1cfc4092d2 [STYLE] 調整側邊欄基本設定選單,將 APK 版本移動至選單最下方
1. 修改 sidebar-menu.blade.php 中的基本設定列表順序,將原本排在首項的「APK版本 (apk-versions)」選單移動至基本設定選單的最底部,提升選單直覺度。
2026-05-27 10:01:07 +08:00
sky121113
93845c990e [FIX] 修正 APK 版本管理 UI 間距、深色模式 Bug 與三語系翻譯對齊
1. 將 APK 列表與新增頁面的自定義 Header 改用系統標準 <x-page-header> 元件,外層容器垂直間距統一調整為 space-y-4,完美對齊麵包屑與後台標準比例。
2. 修正前端 Alpine.js x-text 指令中誤用 PHP 二元運算子 ?: 導致機台 APP 版本號渲染空白的 JavaScript 語法 Bug。
3. 修正 Modal 表格清單的 thead 背景誤用不存在的 slate-850 導致深色模式下顯示突兀純白的問題,調整為更具層次感的 bg-slate-50/50 dark:bg-slate-950/40。
4. 補齊 Version Info、Forced Update 與 Optional Update 等三語系翻譯,並移除舊文案,採用 ksort 自動完成三語系 Perfect Align 字母排序對齊。
5. 優化強制更新與重要注意事項的文案及視覺樣式,調整強制更新啟用時的玫瑰紅 (rose) 警示背景,並放大重要通知的字體以提高可讀性。
2026-05-27 09:54:43 +08:00
sky121113
7dee52a00a [FEAT] 新增 OTA APK 版本管理與更新部署功能
1. 新增 `ApkVersion` Model 與對應的資料表遷移檔 (`create_apk_versions_table`),用以記錄 APK 版本、代碼、風味、更新說明、下載連結與更新模式等欄位。
2. 實作 `ApkVersionController` 控制器,提供 APK 版本之 CRUD(列表、建立、刪除)以及 OTA 推送功能。
3. 移除了 `SpecialPermissionController` 中舊有的 `apkVersions` 占位路由方法,並於 `routes/web.php` 的基本設定 (`basic-settings`) 下新增完整的 APK 版本管理與推送路由。
4. 於 `RoleSeeder.php` 角色種子資料中為 Super Admin 與系統管理員新增 `menu.basic.apk-versions` 權限。
5. 於 `sidebar-menu.blade.php` 基本設定選單中,加入「APK版本管理」之子選單選項,並以對應權限進行防護。
6. 實作 APK 版本列表與上傳頁面 Blade 視圖,採用 Preline UI 與 Alpine.js 提供極簡奢華風的 UI 互動,包含檔案上傳拖曳與 OTA 設備選擇部署彈窗。
7. 更新繁體中文語系檔 `zh_TW.json`,對齊所有新增之 OTA 韌體與版本管理翻譯字詞。
2026-05-22 16:51:21 +08:00
sky121113
1d54aefcb5 [FIX] 新增來店禮更新按鈕的英文、中文與日文翻譯
1. 同步在 lang/zh_TW.json、lang/en.json 與 lang/ja.json 中新增 "Update Welcome Gift" 的翻譯鍵。
2. 進行字母排序 (ksort) 並確保語系間的 Key 集合完全對齊,解決 Modal 更新按鈕上大寫英文 "UPDATE WELCOME GIFT" 顯示的缺漏。
2026-05-22 15:39:14 +08:00
sky121113
47b553ae8c [FIX] 修正來店禮使用紀錄頁面中難以辨識的怪異禮物盒圖標
1. 修正 resources/views/admin/sales/welcome-gifts/partials/tab-logs.blade.php 的桌面表格、無資料狀態、手機卡片中的來店禮圖示,全面替換為標準且極具質感的 Gift 禮物盒圖標。
2026-05-22 15:30:24 +08:00
sky121113
5c970f4134 [FIX] 修正通行碼與來店禮主列表搜尋放大鏡與來店禮手機卡片圖示
1. 修正 resources/views/admin/sales/pass-codes/partials/tab-list.blade.php 的搜尋框放大鏡 SVG 圖示,使其完美置中不被裁切。
2. 修正 resources/views/admin/sales/welcome-gifts/partials/tab-list.blade.php 的搜尋框放大鏡 SVG 圖示。
3. 替換 resources/views/admin/sales/welcome-gifts/partials/tab-list.blade.php 手機版卡片中的來店禮圖示為標準且高辨識度的 Gift 禮物盒圖標,提升 UI 質感與一致性。
2026-05-22 15:29:56 +08:00
sky121113
145c515292 [FIX] 修正行銷使用紀錄搜尋框放大鏡 SVG 參數,並更換來店禮圖示以提升辨識度
1. 修正「來店禮」、「通行碼」與「取貨碼」使用紀錄搜尋框內 SVG 放大鏡缺少 y1="21" 導致圖示被截斷且偏左上角的顯示 Bug。
2. 汰換來店禮使用紀錄(Logs 表格與卡片)中原先難以辨識且怪異的圓圈十字圖示,更換為精緻高辨識度的標準 Heroicons Gift 禮物盒圖示。
2026-05-22 15:28:23 +08:00
sky121113
9b439814bd [STYLE] 優化行銷促銷模組視覺體驗、語系對齊與修復下拉選單重置 Bug
1. 簡化「來店禮」於繁中與日文語系檔的顯示文字,避免後台介面過長擠壓。
2. 修復來店禮、通行碼、取貨碼列表重置按鈕之時序競態 Bug,確保下拉選單確實清空後方送出 Ajax。
3. 來店禮與通行碼使用紀錄的類型選單新增 OnChange 自動 AJAX 提交,提升篩選操作體驗。
4. 補齊取貨碼使用紀錄的狀態篩選選單,並支援重置按鈕一鍵清空。
5. 移除通行碼與取貨碼使用紀錄中的「操作人員」欄位,配合極簡奢華風微調時間欄位靠右對齊,並修正表格空狀態的 colspan 為 5。
2026-05-22 15:20:19 +08:00
sky121113
f59efc6dc7 [FIX] 補齊與優化來店禮、通行碼、取貨碼之多語系與介面欄位呈現
1. 移除非必要之 Log 備註:從來店禮使用記錄 (Logs) 的電腦版與行動版畫面中,徹底移除了無業務參考價值的技術備註 (Remark) 欄位,優化排版空間以符合極簡奢華風 UI 設計。
2. 補齊與對齊三語系檔案:補齊來店禮、通行碼與商品領取所缺少的多語系 Key,三個語系 JSON 檔 (zh_TW, en, ja) 的 Key 與行數已 100% 完美對齊 (共 2,255 行) 且完成升冪字母排序 (ksort)。
3. 簡化 Guest 票券大標題:簡化 Guest 端三種票券頁面 (通行碼、取貨碼、來店禮) 的大標題多語系拼接結構,改為單一乾淨的翻譯 Key 呼叫。
4. 口語化翻譯微調:將 Pickup Code 在語系檔中的中文翻譯由「領取碼」微調為更口語、直覺的「取貨碼」。
5. 優化 Guest 頁面欄位:將取貨碼頁面的「機台序號」替換為更具溫度的「機台名稱」;通行碼與來店禮頁面則徹底隱藏機台序號,優化用戶體驗。
2026-05-22 14:46:26 +08:00
sky121113
016cb571c4 feat: 合併 A4 極簡奢華風列印功能與多租戶防護 2026-05-22 10:24:30 +08:00
sky121113
51f489c496 feat(sidebar): 修正租戶管理員無基本設定權限時仍顯示空選單的問題 2026-05-22 09:59:22 +08:00
sky121113
44d0499b53 feat(i18n): 新增 Discord 通知設定的繁中、英文、日文多語系翻譯 2026-05-22 09:55:23 +08:00
sky121113
4dad775568 [FIX] 修正台灣地址解析經緯度失敗問題
1. 新增 cleanFloorInfo 方法,過濾地址末尾的樓層、室、地下室等非門牌雜訊,防範 Nominatim 解析失敗。
2. 重構 parseTaiwanAddress 的路名拆分正則表達式,導入層級感知台灣地址結構,避免含有「巷、弄」的地址被提前截斷。
2026-05-22 09:51:05 +08:00
sky121113
b6e5b825a5 [STYLE] 將溫度過低告警側邊條顏色調整為警示紅色 2026-05-21 17:09:00 +08:00
sky121113
e88d68d3b1 Merge branch 'feat/discord-notification' into dev 2026-05-21 17:02:03 +08:00
sky121113
18162dfa4c [FIX] 補強公司篩選下拉選單的 AJAX 後選中狀態顯示
1. 為 option 元素補上 server-side selected 屬性,確保 Preline autoInit 重建時能正確讀取已選中的公司選項。
2. 在 fetchTabContent AJAX 完成後,主動呼叫 HSSelect.setValue() 強制同步下拉選單的顯示文字,消除選中狀態消失的視覺問題。
2026-05-21 17:01:47 +08:00
sky121113
90192dbed9 [FIX] 修正機台設定公司篩選下拉選單兩項問題
1. 選取公司後自動觸發 AJAX 篩選,無需手動按搜尋按鈕
2. 修正重設按鈕邏輯,透過 HSSelect.setValue() 正確清除 Preline 下拉選單 UI 顯示
3. 調整 fetchTabContent 的 Preline autoInit 與 Alpine initTree 初始化順序,以 requestAnimationFrame 確保 DOM 更新完畢後才執行 Alpine,解決 AJAX 後下拉選單選中狀態遺失的問題
2026-05-21 16:58:14 +08:00
sky121113
905d2bf459 Merge branch 'feat/discord-notification' into dev 2026-05-21 16:49:30 +08:00
sky121113
ac48546c76 [FIX] 修正當公司告警類型尚未設定時,機台列表誤顯示繼承公司設定徽章之問題 2026-05-21 16:48:20 +08:00
sky121113
95ed1494e2 Merge branch 'feat/discord-notification' into dev
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
2026-05-21 16:39:32 +08:00
sky121113
4ac25f476b [STYLE] 修正 Discord 通知頁面的麵包屑層級 2026-05-21 16:35:22 +08:00
sky121113
a3a00b1403 [FEAT] 實作調撥與補貨單商品快照機制,並修復商品無圖片或載入失敗時的立方體預設圖示顯示
1. 資料庫結構擴充:為 transfer_order_items 與 replenishment_order_items 表新增商品快照欄位,完成遷移。
2. Model 調整與防禦:重構 TransferOrderItem 與 ReplenishmentOrderItem Model,實現商品軟刪除/物理刪除的 name、barcode、image_url 安全 Fallback 及多語系字典動態解析,並防禦性過濾 /storage 等無效圖片路徑。
3. Controller 效能優化:重構寫入與詳情加載邏輯,預載入關聯以防範 N+1 查詢,優化批量寫入效率。
4. 前端圖片載入錯誤處理:在調撥與補貨單明細中,利用 Alpine.js 增加圖片 x-on:error 錯誤監聽,在圖片加載失敗時自動 fallback 顯示與訂單詳情一致的灰色立方體 icon。
2026-05-21 16:31:23 +08:00
sky121113
14ecfdcc8d feat(warehouse): 實作調撥與補貨單商品快照機制,並修復商品無圖片時的預設圖示 fallback 顯示 2026-05-21 16:25:48 +08:00
sky121113
88a58d33c0 fix: 修正 A4 列印表格在商品名稱過長時被過度擠壓換行的排版 bug 2026-05-21 15:56:51 +08:00
sky121113
99e6e37953 feat: 補足調撥單與機台補貨單列印功能之多語系翻譯與測試優化 2026-05-21 15:55:21 +08:00
sky121113
dac00291a7 feat: 實作調撥單與機台補貨單的 A4 極簡奢華風列印功能與多租戶雙重防護 2026-05-21 15:43:43 +08:00
sky121113
205da14e94 [FEAT] 優化溫度告警狀態轉移邏輯與完善機台專屬通知設定 UI
1. 修正 `ProcessHeartbeat.php` 溫度告警判定邏輯,避免溫度在「高低溫異常狀態」直接轉換時,誤發含有異常溫度的「恢復正常」通知。
2. 實作機台層級自訂通知類型 (`notify_types_mode`) 功能,支援繼承全域設定或獨立指派通知類型(連線、溫度、硬體異常)。
3. 優化前端 UI 邏輯,當選擇自訂通知且包含「溫度告警」時,方才顯示溫度上下限輸入區塊。
4. 修正複製機台設定功能 (copy-machine) 的行為,確保能正確複製 `discord_notify_types` 並重設選擇器狀態。
5. 新增與更新中、英、日語系翻譯字串。
2026-05-21 14:34:55 +08:00
sky121113
2e3d6e5572 [STYLE] 優化機台型號與通知設定介面並調整溫度為整數告警
1. 調整 Discord 通知設定介面的間距與對齊,使其與基本設定中的機台設定保持一致。
2. 重構機台型號設定 Modal,將溫度上下限的輸入框改為「極簡奢華風」的加減按鈕元件。
3. 更新機台型號溫度相關的設定與顯示,強制限制與轉換為整數 (移除小數點)。
4. 將機台型號的溫度限制相關介面文字更新為「告警」相關字眼 (預設溫度告警上限、預設溫度告警下限等)。
5. 於中、英、日語系檔案中新增溫度告警相關之翻譯鍵值。
2026-05-21 13:25:28 +08:00
sky121113
cde2718d2a i18n: 補齊 Discord 告警設定與型號溫控相關的繁中/英/日多語系 Key 2026-05-21 10:18:50 +08:00
sky121113
b3d00a9bef feat: 重構 Discord 雙 Tab 告警設定與機台自適應溫控三層繼承鏈,並導入 Modal 內拉式複製 UX 2026-05-21 10:05:36 +08:00
sky121113
1678fd1775 [FIX] 修正銷售紀錄與出貨紀錄 Flatpickr 初始化中 Blade 大括號內不必要的反斜線轉義以防 PHP 解析錯誤 2026-05-20 14:19:32 +08:00
sky121113
42c882aeb8 [DOCS] 更新 .gitignore 以忽略 Antigravity CLI 本地端設定
1. 在 .gitignore 中加上 /.antigravitycli 以忽略本地 AI 工作區檔案。
2026-05-20 13:29:34 +08:00
sky121113
a92a2500c4 [FIX] 修正庫存與校期管理頁面 Alpine.js 變數未定義報錯
1. 在 resources/views/admin/remote/stock.blade.php 的 stockApp() 初始化狀態中,補上 selectedSlot: null 宣告。
2. 解決因 selectedSlot 變數未在 data scope 聲明,導致 Alpine.js 首次解析 DOM 範本時拋出 ReferenceError 的錯誤。
2026-05-20 13:23:56 +08:00
sky121113
775d7bc967 fix(views): 全站 Flatpickr 日期時間選擇器在行動端統一啟用 disableMobile 確保 24 小時制與極簡奢華風 UI 一致 2026-05-20 13:02:34 +08:00
sky121113
be127bab76 [FIX] 修復行動端時間篩選器強制轉為 12 小時制的問題
1. 修正取貨碼使用紀錄篩選器 (tab-logs.blade.php):為 Flatpickr 開始/結束時間初始化配置補上 disableMobile: true,避免手機系統 12 小時制覆蓋。
2. 修正遠端指令歷史紀錄篩選器 (tab-history-index.blade.php):為 Flatpickr 起迄時間初始化配置補上 disableMobile: true,防止行動端原生選擇器轉換。
3. 修正遠端庫存操作紀錄篩選器 (tab-history.blade.php):為 Flatpickr 起迄時間初始化配置補上 disableMobile: true,確保與電腦版一致維持 24 小時制顯示。
2026-05-20 11:52:14 +08:00
sky121113
39ea74a52e [FIX] 修正商品軟刪除之出貨歷史關聯與圖片破圖優化
1. 於 DispenseRecord、OrderItem 及 MachineStockMovement 模型之 product 關聯中加入 withTrashed(),確保被軟刪除商品的歷史快照仍可正常讀取。
2. 將 tab-dispense.blade.php、order-detail-panel.blade.php 及 SalesController 報表導出中的 product->name 統一修改為 product->localized_name ?? __('Unknown Product'),支援多語系切換與翻譯並替換 'Unknown' 為 '未知商品'。
3. 在銷售明細的商品圖片區塊整合 Alpine.js x-on:error 動態破圖防呆機制,一旦偵測到破圖或刪除實體圖,自動無縫退回精緻的 3D 箱子預設占位 SVG,消除破圖小圖標以維護全站極簡奢華風的視覺美感。
2026-05-19 17:25:10 +08:00