sky121113
|
df3c72e927
|
[FEAT] 機台刷卡機 (Nexsys 終端機) 健康狀態燈號與失敗日誌
1. 刷卡機共用判定:信用卡(1)、電子票證(2)、手機支付(10) 走同一台實體刷卡機,以交易結果維護燈號(刷卡機無斷線心跳)。
2. ProcessTransactionFinalized 新增 syncCardTerminalStatus:成功交易自動消除該機台未解決的 card_terminal 警告;失敗交易解析 payment_response 的 "| code=XXXX" 回應碼,寫一筆 type='card_terminal' 的 warning 日誌(warning 級不觸發 Discord)。
3. MachineService 新增 CARD_TERMINAL_CODE_MAP(NCCC/聯卡中心回應碼對照,值為英文翻譯鍵);MachineLog 依 card_code 重組多語可讀失敗原因。
4. Machine 模型新增 card_terminal_status 與 latest_card_terminal_log_time 取值器;MachineController 列表以 withCount + 相關子查詢預載彙總,避免 N+1。
5. 機台列表頁新增「刷卡機」狀態燈號(綠/琥珀/紅 + 最近異常時間)與「刷卡機日誌」分頁。
6. 文件更新:config/api-docs.php 與 api-technical-specs SKILL.md 補充 payment_type 說明(2/10 與 1 共用同一台刷卡機、補列 42 取物單與 100 遠端出貨)。
7. 既有 migration change_products_spec_to_text 加 sqlite 守衛,讓測試環境可跑(VARCHAR/TEXT 在 sqlite 等價且不支援 MODIFY)。
8. 新增 CardTerminalStatusTest 功能測試(18 斷言通過,涵蓋成功消警、失敗寫日誌、掃碼排除、多語訊息、N+1 預載路徑)。
9. 新增 25 組三語系 key(刷卡機狀態與回應碼),zh_TW/en/ja 對齊並 ksort 排序。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-18 13:09:05 +08:00 |
|
sky121113
|
cbc4ae3749
|
[FIX] 開立電子發票前檢查機台電子發票開關
1. finalizeTransaction() 開立發票條件改為「機台 tax_invoice_enabled 開啟 AND 上報帶 invoice」,兩者皆成立才開立。
2. 機台關閉電子發票時:不建發票、不送綠界 IssueInvoiceJob,僅記 warning log(machine_id / flow_id / order_id)供追查。
3. 修正原本只判斷上報是否帶 invoice、完全忽略機台開關而可能誤開發票的問題。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-16 16:30:17 +08:00 |
|
sky121113
|
4a86be6cbf
|
[FEAT] 商品匯入支援圖片:Excel 圖片檔名欄 + 圖片壓縮檔背景處理
1. ProductImportService 新增 deferImages 模式與第 18 欄「圖片檔名」,匯入時收集 pending_images 供背景處理,並保留同步轉檔路徑。
2. 新增 AttachProductImagesJob:背景逐筆將圖片轉為 WebP 入庫、更新時刪除舊圖、重建目錄快取、清除暫存資料夾並寫入操作日誌。
3. ProductController::import 新增圖片 zip 上傳(上限 60MB)與安全解壓 extractImageZip:副檔名白名單、getimagesize 內容驗證、basename 防路徑穿越、項目數與單檔及總量上限防 zip bomb,解壓後派發背景 Job。
4. 匯入 Modal 新增選填的圖片 .zip 上傳欄位與背景處理提示文字。
5. config/queue.php 的 redis retry_after 提高至 1830(可由 REDIS_QUEUE_RETRY_AFTER 覆寫),避免長時間圖片任務未完成即被重複派發造成重複處理。
6. 三語系新增圖片匯入相關文案並對齊排序。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-16 13:41:22 +08:00 |
|
sky121113
|
d3e455fc82
|
[FIX] 修正訂單詳情發票狀態勾稽與列印作廢按鈕
1. 訂單詳情發票徽章改為動態讀取 invoice->status,依 pending/issued/failed/void 顯示對應狀態與顏色,不再寫死「有效」。
2. 移除不存在的 invoice_time 欄位引用,開立時間改以 invoice_date 格式化顯示。
3. 作廢按鈕接上既有 admin.sales.invoices.void 路由,僅於 issued 狀態顯示並加上確認對話框。
4. 新增列印發票功能:EcpayInvoiceService::invoicePrint() 呼叫綠界 B2CInvoice/InvoicePrint 取得列印頁網址,SalesController::printInvoice() 加守衛後 302 導向,並新增 admin.sales.invoices.print 路由,按鈕以新分頁開啟。
5. 補齊三語系 key(Failed to get invoice print URL、Only issued invoices can be printed),完成 zh_TW/en/ja 對齊排序。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-16 09:57:37 +08:00 |
|
sky121113
|
b506d64dd3
|
[FEAT] 實作訂單 pending 狀態轉移與逾時交易自動清除機制
1. 修改 app/Models/Transaction/Order.php:新增訂單生命週期狀態常數與 TERMINAL_STATUSES 終態定義。
2. 修改 app/Services/Transaction/TransactionService.php:優化 processTransaction 與 finalizeTransaction 的冪等性邏輯,支援 pending 狀態訂單的狀態轉移,並拆分輔助函式 transitionOrder 與 createOrderItems。
3. 新增 app/Console/Commands/SweepAbandonedOrdersCommand.php:建立 orders:sweep-abandoned 指令,將停留在 pending 狀態超過 15 分鐘的逾時訂單標記為 abandoned。
4. 修改 app/Console/Kernel.php:將 orders:sweep-abandoned 定期清理指令註冊至 Schedule 排程中,設定每 5 分鐘執行一次。
|
2026-06-16 08:32:06 +08:00 |
|
sky121113
|
d9edeb0d5d
|
[FEAT] 電子發票後台開立、對帳、補開與作廢流程
1. 新增發票狀態機(pending/issued/failed/void)與冪等鍵 relate_number,並補上 last_checked_at、retry_count、voided_at、void_reason 欄位(migration 全欄位 nullable/有預設,對既有資料零影響並回填既有狀態)。
2. finalize 帶入發票輸入時改為先建 pending 發票,commit 後派發 IssueInvoiceJob 非同步向綠界開立,避免在交易內等待 ECPay 造成長交易。
3. 新增 EcpayInvoiceService 封裝綠界 B2C API(GetIssue 查詢、Issue 補開、Invalid 作廢),金鑰仍取自各機台 payment_configs。
4. 新增 invoices:reconcile 排程指令,每 5 分鐘對 pending 發票以 RelateNumber 向綠界 GetIssue 查證,補登 issued 或標記 failed 待補開。
5. SalesController 新增 reconcileInvoice/reissueInvoice/voidInvoice 三個後台操作端點與對應路由。
6. 發票列表改以 created_at 篩選(pending/failed 尚無 invoice_date 也能顯示),新增狀態過濾器與查詢/補開/作廢操作按鈕,狀態徽章改以狀態機顯示。
7. recordInvoice 改以 flow_id updateOrCreate 收斂,避免重送產生重複發票列;查詢機台/訂單時加上 withoutGlobalScopes。
8. 同步新增相關三語系字串並加入 ecpay_invoice base_url 設定。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-15 16:18:33 +08:00 |
|
sky121113
|
779c59138f
|
[FEAT] 商品與機台多語系架構,並補上系統設定同步操作
1. 新增 config/locales.php:定義 11 種系統支援語系白名單(原文+中文註記)、每台機台上限 5 種與 fallback (zh_TW)。
2. Company 新增 activeLocalesFor()/activeLocales():計算公司所有機台已開語系的聯集(去重、依白名單排序、保底 zh_TW),加快取與 forgetActiveLocales() 失效機制。
3. products 新增 spec_dictionary_key 欄位(migration);Product 新增 localized_spec accessor 與 specTranslations 關聯,商品規格比照名稱支援多語系。
4. ProductController 商品建立/更新改收 names 與 specs 物件,寫入 translations(group=product/product_spec),既有商品首次編輯補建 spec key,刪除時一併清除規格翻譯。
5. ProductCatalogService(B012)保留既有 t060v01_en/_jp 欄位,新增 t060v01_i18n/t060v03_i18n locale map,依公司語系聯集輸出並回退 zh_TW,確保線上舊 App 相容。
6. 機台系統設定(updateSystemSettings)新增 languages 顯示語系驗證與寫入(最多 5 種、白名單、去重,僅系統管理員),異動時失效語系聯集快取並重建商品目錄。
7. B014(getSettings)新增 LangSet 下發機台顯示語系(Languages 有序清單+Default 預設)。
8. 商品建立/編輯頁名稱與規格改為多語系 Tab(讀公司機台語系聯集、完成度標記),新增共用元件 product-locale-tabs;機台系統設定彈窗新增顯示語系勾選 UI(限 5 選、預設標記)。
9. 三語系 JSON(zh_TW/en/ja)新增 5 組對齊鍵並維持字母排序。
10. 同步更新文件:docs/API/product_multilingual_spec.md(規格書)、api-technical-specs SKILL.md(B012 i18n/B014 LangSet)、config/api-docs.php(B012/B014 範例與欄位)。
11. 系統設定同步:新增 sync-settings 路由與 update_settings 指令類型,ProcessCommandAck 與遠端指令歷史(remote index/tab-history)支援 update_settings 標籤,機台系統設定頁新增「同步設定」操作按鈕,並補 B016 回寫測試。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-15 09:00:10 +08:00 |
|
sky121113
|
c5238ccfbc
|
[FEAT] 實作機台貨道類型與商品容量上限的雙向連動同步機制
1. 於 app/Models/Product/Product.php 實作更新事件監聽器,當商品的履帶/彈簧上限變更時,自動更新所有關聯貨道之最大容量與類型。
2. 於 app/Models/Machine/Machine.php 實作更新事件監聽器,當機台的彈簧貨道區間設定變更時,自動更新該機台所有貨道之最大容量與類型。
3. 於 app/Services/Machine/MachineService.php 重構貨道同步 (syncSlots) 與類型容量判定邏輯,加入雙向連動同步、貨道類型判斷等輔助方法,並優化庫存異動紀錄 (StockMovement) 的觸發機制,避免無謂的調整日誌。
4. 移除專案根目錄下的 4 月工作報告暫存檔 (Star_Cloud_April_Report.pdf, Star_Cloud_April_Report.pptx)。
|
2026-06-03 15:33:49 +08:00 |
|
sky121113
|
fba0dc6bf9
|
[FIX] 補全下位機 Command(0x02) 狀態代碼與對齊三語系資源檔
1. 修正 app/Services/Machine/MachineService.php 中的 02xx 系列錯誤對譯表,移除原本殘缺、衝突的舊佔位符,完整補足下位機 0x01 到 0x23 的 28 個狀態代碼與 label 定義。
2. 同步將新增的 28 個狀態標籤繁中翻譯更新至 lang/zh_TW.json。
3. 透過自動對齊與排序腳本,完美同步更新 lang/en.json 與 lang/ja.json,並將三語系檔案依英文字母順序 (ksort) 重新排序且執行反逸出斜線處理。
|
2026-06-02 13:37:01 +08:00 |
|
sky121113
|
e01e8077f9
|
[FEAT] 新增訂單收件人姓名遮罩與商品詞彙通用化調整
1. 於 Order Model 新增收件人姓名遮罩邏輯 (masked_pickup_recipient),將 member_barcode 進行去識別化處理以保護隱私,並保留括號/換行等後綴資訊。
2. 新增 OrderPickupRecipientMaskTest 單元測試,驗證中文字元及包含換行/括號的後綴遮罩正確性。
3. 更新後台銷售管理介面 (order-detail-panel.blade.php、tab-orders.blade.php),將原先顯示明文的 member_barcode 改用遮罩後的屬性展示。
4. 將機器通訊協定與狀態代碼中的「便當 (Bento)」字詞統一調整為「商品 (Product)」,以符合各機型通用語意。
5. 更新相關語系翻譯檔案 (zh_TW.json, en.json, ja.json) 及 MQTT 通訊規範文件中的詞彙對應。
6. 修改 MachineLog 中的翻譯取得邏輯,確保能透過錯誤代碼表對應到最新的商品語意。
|
2026-05-29 14:37:28 +08:00 |
|
sky121113
|
8d380e4902
|
[FEAT] 增加訂單出貨交付狀態(delivery_status)與多語系支援
1. 新增資料庫遷移:在 資料表增加 (出貨狀態:0 失敗、1 成功、2 部分成功),預設值為 1 並允許 NULL 以完美向下相容舊機台。
2. 升級 Model:加入 到可填充與轉型,並宣告常量與 取得本地化文字的 Accessor。
3. 更新 邏輯:在 中自動解析並記錄 。新增 輔助函式,當 Payload 未指定訂單狀態時,可動態從個別貨道出貨紀錄 ( 陣列) 計算出整筆訂單的出貨交付結果。
4. 銷售紀錄列表 (tab-orders.blade.php) UI 優化:將原先「狀態」欄位重命名為「付款狀態」,並在右側新增「出貨狀態」欄位,使用極簡奢華風的彩色 Badge 呈現出貨結果;桌機版空狀態 修正為 8 防止破版;手機版卡片同步支援。
5. 側邊明細面板 (order-detail-panel.blade.php) UI 優化:將基本狀態卡片升級為 3 欄網格,將付款狀態、支付類型與新增的出貨狀態 Badge 完美並排。
6. 報表匯出功能 (SalesController.php) 整合:在 Excel 及 CSV 匯出中同步修正「付款狀態」欄位標題與轉換標籤,並新增「出貨狀態」欄位以匯出 。
7. 多語系精準對齊:新增 , , , 及 的繁、英、日翻譯對照,並進行字母升冪排序 (ksort)。
|
2026-05-29 12:17:36 +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
|
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
|
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
|
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
|
b6e5b825a5
|
[STYLE] 將溫度過低告警側邊條顏色調整為警示紅色
|
2026-05-21 17:09:00 +08:00 |
|
sky121113
|
b3d00a9bef
|
feat: 重構 Discord 雙 Tab 告警設定與機台自適應溫控三層繼承鏈,並導入 Modal 內拉式複製 UX
|
2026-05-21 10:05:36 +08:00 |
|
sky121113
|
1778d48a00
|
[FIX] 員工卡匯入時自動清除欄位前後空白字元
1. 於 `StaffCardImportService` 中,將讀取自 Excel 的員工編號(employee_id)與卡片 UID(card_uid)使用 `trim()` 去除前後空白字元,防止因複製貼上夾帶空格導致後續比對與搜尋失效。
2. 同步將姓名(name)與備註(notes)也進行去空白處理,提升資料的一致性與品質。
|
2026-05-19 11:40:59 +08:00 |
|
sky121113
|
11671f3a2b
|
[REFACTOR] 修改員工識別卡匯入邏輯:改以員工編號作為比對基準
1. 修改 StaffCardImportService,將 updateOrCreate 的比對欄位從 card_uid 改為 employee_id。
2. 這樣當員工補發新卡時,透過 Excel 匯入相同的員工編號即可直接更新其卡號。
|
2026-05-14 14:33:07 +08:00 |
|
sky121113
|
cc03572dd9
|
[FEAT] 實作員工識別卡 Excel 批量匯入功能與範例下載
1. 新增 StaffCardImportService,整合 OpenSpout 5.x 處理解析與批量更新邏輯。
2. 在 StaffCardController 加入匯入與範例下載 API 端點。
3. 更新員工識別卡 index 視圖,新增「匯入 Excel」按鈕與 Alpine.js 異步匯入彈窗。
4. 註冊相關 Web 路由。
5. 補全繁中、日文、英文多語系翻譯,並修復重複鍵值。
6. 修復 OpenSpout 5.x 相容性問題 (Row::getCells -> Row::toArray)。
|
2026-05-14 14:26:35 +08:00 |
|
sky121113
|
b87fae8eb1
|
[FEAT] 優化商品操作紀錄清單與多語系支援,並修復全域快取錯誤
1. 修復 ProductCatalogService 在處理全域商品(company_id 為 null)時引發的型別錯誤
2. 在操作紀錄清單新增「操作人員」欄位,並優化手機版顯示
3. 將「MODULE / 目標」欄位更名為更直覺的「操作目標」
4. 於 status-badge 元件加入操作紀錄(CREATE, UPDATE, DELETE)的專屬顏色與多語系對應
5. 補齊 zh_TW.json 缺漏的機台權限、操作動作與商品相關欄位多語系翻譯
|
2026-05-14 11:52:01 +08:00 |
|
sky121113
|
2c8a2de81c
|
[FEAT] 實作商品主檔 B012 Redis 快取機制 (Phase 1)
1. 新增 ProductCatalogService 負責商品清單轉換與 Redis 快取邏輯。
2. 新增 WarmProductsCacheCommand (artisan products:warm-cache) 用於預熱快取。
3. 修改 ProductController 在商品異動時自動重建快取。
4. 修改 MachineController@getProducts (B012) 改為 Cache-First 讀取。
5. 在 Company 模型補上 products 關聯以支援暖機指令。
|
2026-05-13 18:51:35 +08:00 |
|
sky121113
|
426253b1c3
|
[FEAT] 強化遠端指令中心的操作備註功能
1. 新增 remote_commands 資料表的 remark 欄位以儲存操作備註。
2. 更新 RemoteCommand 模型,將 note 與 remark 加入可批量賦值名單。
3. 更新 MachineService 的 dispatchDispense 函式,支援接收與記錄操作備註。
4. 更新 RemoteController 的 storeCommand 邏輯,將前端輸入的備註存入 remark 並支援遠端出貨指令。
5. 優化操作紀錄搜尋邏輯,支援搜尋備註欄位。
6. 重構指令中心操作紀錄介面,桌面版新增「操作備註」欄位,並優化手機版卡片顯示。
7. 調整表格欄位寬度與標頭樣式,解決「指令類型」寬度過大的問題。
|
2026-05-12 17:15:53 +08:00 |
|
sky121113
|
a290d5b306
|
[FIX] 優化 MQTT 錯誤代碼翻譯與交易核銷邏輯
1. 更新 MQTT 錯誤代碼 0205 的標籤為 Slot sensor blocked,並將繁體中文翻譯修正為「貨道口有物」,同步更新多語系檔 (zh_TW, en, ja)。
2. 修改 TransactionService,移除遠端出貨 (payment_type: 100) 在交易結案時的 code_id 自動核銷邏輯。
3. 更新 SKILL.md 與 api-docs.php 規格文件,將「通行碼 (5)」納入 code_id 核銷範圍,並移除遠端出貨的說明。
|
2026-05-12 14:27:00 +08:00 |
|
sky121113
|
2cf33cfbb4
|
[FIX] 優化遠端指令鎖定機制與補全 API 文件
1. 實作庫存更新 (reload_stock) 的「直接覆蓋 (Supersede)」模式,允許管理員即時覆寫待執行指令,提升操作流暢度。
2. 為遠端出貨 (dispense) 增加 1 分鐘自動逾時機制,解決因未收到 ACK 導致貨道永久鎖定的問題。
3. 拆分庫存更新與遠端出貨的併行檢查邏輯,確保兩者互不干擾。
4. 更新 API 技術文件,補全遠端出貨 (payment_type: 100) 與閉環勾稽參數 (code_id) 的規格說明。
|
2026-05-12 10:17:51 +08:00 |
|
sky121113
|
3bb5d8cfcc
|
[FIX] 修正遠端出貨指令逾時處理機制與補全多語系支援
1. 建立資料庫遷移,於 remote_commands 的 status ENUM 中新增 timeout 狀態,修復 Data truncated 錯誤。
2. 更新 MachineService::dispatchDispense 邏輯,當指令超過 1 分鐘未回報時自動標記為 timeout 並記錄原因。
3. 於 zh_TW.json 與 en.json 補全 timeout、superseded 狀態及相關備註的翻譯。
4. 更新 status-badge 元件預設值,支援遠端指令相關狀態(sent, success, failed, timeout, superseded)並套用視覺樣式。
|
2026-05-12 08:57:27 +08:00 |
|
sky121113
|
53ced5ca5b
|
[FEAT] 遠端出貨指令支援 1 分鐘逾時覆蓋機制
1. 修改 MachineService::dispatchDispense:若同貨道有 pending 指令,超過 1 分鐘未回報則視為逾時,自動將舊指令標記為 timeout 並允許新指令覆蓋下發。
2. 1 分鐘內仍有 pending 指令則維持拒絕,防止短時間重複出貨。
|
2026-05-11 18:04:42 +08:00 |
|
sky121113
|
34f1e823f0
|
[FIX] 修正庫存異動類型缺失與統一交易扣庫邏輯
1. 補全 machine_stock_movements 資料表 type 欄位缺失的 sale 與 decommission 列舉值,修復 SQL 寫入失敗問題。
2. 重構 TransactionService:移除過時的 remote_dispense 判斷,將所有經由交易流程(含支付代碼 100)的出貨統一記錄為 sale 異動。
3. 更新 MachineService:將 B009 貨道同步時的移除動作類型由 adjustment 改為正確的 decommission。
4. 語系更新:於 zh_TW.json 與 en.json 補全硬體狀態碼 0205 (貨道有物) 的翻譯。
|
2026-05-11 17:13:41 +08:00 |
|
sky121113
|
6decba6cb6
|
[FIX] 優化 B009 同步機制、庫存排序與修正管理後台 UI 遮擋問題
1. 實作 B009 貨道全量同步與拆除 (decommission) 紀錄機制。
2. 優化機台庫存概覽排序邏輯,優先顯示低填充率 (需補貨) 之機台。
3. 修正新增機台 Modal 的 z-index 層級與 overflow 限制,解決下拉選單被蓋住的問題。
4. 修復機台庫存分頁中的 JS 語法錯誤並新增貨道拆除狀態標籤。
|
2026-05-07 15:08:01 +08:00 |
|
sky121113
|
eb55a25ca8
|
[FEAT] B009 改為全量同步模式,硬刪除不在清單的貨道
1. 修改 MachineService@syncSlots 實作 B009 全量同步邏輯:同步完成後,找出資料庫中不在 B009 回報清單的舊貨道,先記流水帳再硬刪除,確保後台狀態與機台實體完全一致。
2. 新增 MachineStockMovement::TYPE_DECOMMISSION 常數,用於標識因 B009 全量同步而移除的貨道異動紀錄。
3. 新增多語系翻譯 key(zh_TW / en / ja):movement.note.slot_decommissioned_by_b009、movement.note.initial_sync_report、movement.note.product_changed_and_adjusted 與 movement.type.decommission。
|
2026-05-07 14:28:07 +08:00 |
|
sky121113
|
e735e5a8c5
|
[REFACTOR] 優化 B009 庫存同步比對邏輯
1. 優化 MachineService@syncSlots,加入庫存與商品 ID 的實質變動檢查。
2. 解決在庫存與商品皆無變動時,仍會執行資料庫更新並產生冗餘流水帳的問題。
3. 強化商品變更判斷,確保更換商品時能正確記錄流水帳與對應備註。
|
2026-05-07 14:12:42 +08:00 |
|
sky121113
|
9c6f5923f3
|
[FIX] 規格對齊與 B009 庫存同步邏輯優化
1. 更新 B009 (貨道庫存回報) API 規格文件與 config/api-docs.php,對齊參數型別 (tid: String, num: Integer) 並移除 legacy status 欄位。
2. 修正 MachineController 接收參數時的強製型別轉型,防止因 APP 傳入字串格式導致的庫存異動判斷錯誤。
3. 優化 MachineService@syncSlots 邏輯,確保庫存變動比對準確,並補齊新建立貨道時的初始庫存流水帳紀錄。
4. 移除 B009 回應中的 status 欄位,統一使用 success 進行成功判定。
|
2026-05-07 14:07:26 +08:00 |
|
sky121113
|
bb955fa3de
|
[STYLE] 現代化機台稼動率儀表板與語系優化
1. 更新機台稼動率頁面日期選擇器為專案標準 Luxury UI,並整合 Flatpickr 新增「今日」與「清除」按鈕。
2. 修正稼動率頁面中因字串換行與多餘空格導致的語系翻譯失效問題。
3. 更新稼動率副標題,移除過時的 OEE 描述並修正為「全機台即時狀態與營收監控」。
4. 同步更新 zh_TW, en, ja 語系 JSON 檔以包含最新的介面文字翻譯。
5. 重構 MachineService.php 移除冗餘的計算邏輯,提升稼動率數據查詢效能。
6. 更新 API 技術規格文件以反映最新的通訊協議規範。
|
2026-05-07 13:34:22 +08:00 |
|
sky121113
|
c52cf2900f
|
[FIX] 統一搜尋欄位命名、更新語系檔與 IoT 規範文件
1. 修改 ProductController.php,將搜尋參數統一改為 search 以匹配前端表單欄位。
2. 更新 lang/zh_TW.json 語系檔,修正部分翻譯詞彙 (如 Inactive, Standby, Confirm Status Change)。
3. 更新 .agents/skills/mqtt-communication-specs/SKILL.md 規範文件。
4. 包含 Machine Model 與 MachineService 的優化變更。
|
2026-05-07 11:54:47 +08:00 |
|
sky121113
|
fa6406b9ad
|
[FEAT] 優化取貨碼管理介面與功能
1. 新增取貨碼使用次數上限功能(限制 1-20 次)。
2. 優化取貨碼管理介面,採用極簡奢華風計數器並調整寬度與間距。
3. 整合 Flatpickr 24小時制日期時間選擇器,並實作模式切換時的時間自動帶入邏輯。
4. 取貨碼清單新增「剩餘使用次數 / 總次數」顯示。
5. 完善相關中文化翻譯(如「小時」、「自定義日期」等)。
6. 新增資料庫欄位 migration 並更新相關模型與 Service 邏輯。
7. 更新 API 技術規格文檔以符合最新取貨碼邏輯。
|
2026-05-06 16:33:15 +08:00 |
|
sky121113
|
fc93a0fb8c
|
[FEAT] 實作封閉迴圈交易審核與 API 規格標準化
1. 新增 B680 員工卡驗證 API 並更新相關技術文件 (SKILL.md, api-docs.php)。
2. 重構取貨碼與通行碼之日誌追蹤系統,新增 PickupCodeLog 與 PassCodeLog 模型及資料表遷移。
3. 修正 B660 API 路由方法,統一使用 POST 進行驗證。
4. 優化後台銷售中心介面,將「紀錄」頁籤統一為「使用紀錄」並優化狀態顯示組件。
5. 更新多語系 zh_TW.json 以符合新的 UI 命名規範。
6. 調整 Order 模型與 TransactionService 以支援更精確的封閉迴圈交易審核。
|
2026-05-05 17:50:26 +08:00 |
|
sky121113
|
15b975efac
|
[FEAT] 新增員工卡管理模組與 B012 API 文檔完善
1. 新增員工卡 (staff_cards) 與員工卡感應日誌 (staff_card_logs) 模型與遷移檔。
2. 實作 StaffCardController 與相關管理介面,支援狀態切換與 CRUD。
3. 擴充 routes/web.php 加入員工卡管理路由。
4. 更新 api-docs.php 文檔,補全 B012 (Unified Sync) 的商品同步回應範例。
5. 實作 PaymentTypeSeeder 並整合至 DatabaseSeeder 以標準化支付類型。
6. 優化銷售中心訂單標籤與倉庫機台庫存顯示邏輯。
7. 側邊欄選單加入員工卡管理入口。
8. 重構 TransactionService 以支援員工卡工作階段 (session_token) 驗證。
|
2026-05-05 14:06:43 +08:00 |
|
sky121113
|
023f639fb4
|
[STYLE] 銷售中心 UI 優化與出貨紀錄邏輯校正
1. 優化「出貨紀錄」介面,重新排列欄位優先級並移除冗餘的機台流水號。
2. 統一出貨紀錄中的商品與貨道樣式,與取貨碼模組視覺語言同步。
3. 修正出貨紀錄搜尋邏輯,支援商品名稱與貨道編號模糊搜尋。
4. 修正「訂單詳情」側滑面板中的金額顯示(修正 price/subtotal 映射)。
5. 補強訂單詳情的出貨狀態 (dispense_status) 標籤顯示邏輯。
6. 將出貨紀錄中的「數量」表頭修正為「金額」,確保與 MQTT 協議回傳資料語意一致。
7. 更新多語系檔,新增搜尋欄位 placeholder 與相關 UI 標籤翻譯。
8. 新增發票資料表 machine_time 欄位遷移檔,以完整記錄機台開立時間。
|
2026-05-04 17:20:43 +08:00 |
|
sky121113
|
e779880f9b
|
[FEAT] 整合 MQTT 交易完成 (Finalize) 流程並更新 API 技術規格文件
1. 整合交易流程:將 B600 (交易紀錄)、B601 (發票紀錄) 與 B602 (出貨紀錄) 整合為單一原子化的 MQTT 'finalize' 操作,確保資料一致性。
2. 實作非同步 Job:新增 ProcessTransactionFinalized Job 負責解析複合式 Payload 並寫入訂單、發票與出貨日誌。
3. 重構交易服務:更新 TransactionService 以支援同時處理訂單與發票資料,並修正產品 ID 驗證邏輯以避免外鍵衝突。
4. 更新技術文件:同步更新 api-docs.php 與 .agents/skills 中的 MQTT 規格,定義詳細的 finalize payload 結構與範例。
5. 優化文件 UI:改善 api-docs.blade.php 的描述渲染,支援換行符號以提升閱讀體驗。
6. 更新監聽指令:在 ListenMqttQueue 中加入 finalize 動作的處理分支並對接至新實作的 Job。
|
2026-05-04 10:18:30 +08:00 |
|
sky121113
|
8feca33f13
|
[FEAT] 優化機台日誌管理、新增庫存變動紀錄與取貨碼/通行碼介面改善
1. 新增機台異常日誌手動解除功能,包含資料庫欄位更新與 UI 操作按鈕。
2. 實作機台庫存變動紀錄系統 (Machine Stock Movements),支援追蹤補貨與銷售產生的庫存異動。
3. 重構取貨碼 (Pickup Code) 與通行碼 (Pass Code) 管理介面,採用極簡奢華風 UI 並拆分 Partial Views 提升可維護性。
4. 優化取貨操作日誌,明確區分「取貨成功」與「取貨失敗」,並加入顏色標籤增強辨識度。
5. 擴充多語系支援 (繁中、英文、日文),確保所有新功能與操作狀態均有對應翻譯。
6. 更新 IoT API 規格文件與相關 Service 邏輯,加強指令確認 (ACK) 處理機制。
|
2026-05-04 08:43:35 +08:00 |
|
sky121113
|
40aec884b0
|
[REFACTOR] 溫度回報邏輯優化與 MQTT 規格標準化
1. 優化 ProcessHeartbeat 溫度處理邏輯,改為「變動即記錄」並標準化為整數型態。
2. 在 Machine Model 中新增 temperature 欄位的 integer cast。
3. 更新 MQTT 與 API 技術規格技能文件 (SKILL.md),同步最新的溫度記錄規則。
4. 更新 config/api-docs.php,明確標註心跳上報之溫度規格與日誌規則。
5. 移除 routes/api.php 中已廢棄之 B600 與機台日誌 REST API 路由。
6. 清理 docs 目錄,將初期計畫文件遷移至 docs/plan/。
|
2026-04-22 17:02:24 +08:00 |
|
sky121113
|
9114269a7a
|
[FEAT] 完善遠端出貨與庫存異動的併發控制與視覺回饋
1. 修正 RemoteController 中的 MachineService 注入問題,解決遠端出貨指令失效的 500 錯誤。
2. 在 MachineService 實作貨道鎖定機制 (lockSlot/unlockSlot),防止重複扣庫存導致的數據不一致。
3. 採用樂觀扣除模式,發送指令時即更新預扣庫存,並在 ProcessCommandAck 實作失敗自動 Rollback。
4. 優化 UI 互動:在操作紀錄詳情顯示庫存變化 (如 6 -> 5),且針對執行失敗的指令加上刪除線樣式。
5. 完成指令詳情、操作紀錄與庫存歷史的語系對照表同步 (zh_TW, en, ja)。
|
2026-04-22 15:02:00 +08:00 |
|
sky121113
|
1d5aff2f2e
|
[REFACTOR] 遷移遠端管理指令至 MQTT 非同步架構與邏輯優化
1. 實作 MqttService 統一管理 MQTT 指令發送。
2. 遷移「遠端庫存與效期中心」至 MQTT 流程,並加入 batch_no (批號) 支援。
3. 修改 RemoteController 指令中心所有指令同步改由 MQTT 推送。
4. 修正 Go Gateway redis_consumer.go 確保 JSON 格式符合最新規格(移除寫死的 target/message_id)。
5. 實作 ProcessCommandAck 自動更新指令結果、異常回滾 (Rollback) 與機台自動亮燈 (Online)。
6. 完善 mqtt-communication-specs 規格文件,補齊所有指令定義與 ACK 範例。
7. 強化指令狀態保護,確保只有 pending 狀態的指令能被更新結果,防止重複處理。
|
2026-04-22 11:30:39 +08:00 |
|
sky121113
|
959625a640
|
[FEAT] 實作 MQTT Gateway 整合與高併發 IoT 通訊架構
1. 導入 Go 語言撰寫的 MQTT Gateway (mqtt-gateway/),負責訊息接收並透過 Redis List 轉發至 Laravel。
2. 更新 compose.yaml 以包含 EMQX Broker 與 mqtt-gateway 服務,並配置相關環境變數。
3. 新增 ListenMqttQueue 指令與對應的異步處理 Job (ProcessHeartbeat, ProcessTransaction, ProcessMachineError)。
4. 實作 MqttSyncAuth 指令與 Machine Model Observer,支援自動化的機台認證資訊同步至 Redis。
5. 新增 MqttCommandService 用於處理雲端至機台的即時指令下發。
6. 更新專案規範文件 (framework.md 與 Skills) 以反映新的 MQTT 通訊機制與安全性規範。
7. 提供 simulate-heartbeat.sh 指令碼以供開發與測試使用。
|
2026-04-16 14:28:42 +08:00 |
|
sky121113
|
a599b14df1
|
[FEAT] 優化機台硬體通訊協議與管理介面互動性
1. 修復帳號管理與角色權限頁面搜尋功能,支援 Enter 鍵快捷提交。
2. 完成 B013 (機台故障上報) API 實作,改用非同步隊列 (ProcessMachineError) 處理日誌上報。
3. 精簡 B013 API 參數,移除冗餘的 message 欄位,統一由雲端對照表翻譯。
4. 更新技術規格文件 (SKILL.md) 與系統 API 文件配置 (api-docs.php)。
5. 修正平台管理員帳號在搜尋過濾時的資料隔離邏輯。
|
2026-04-08 14:52:00 +08:00 |
|
sky121113
|
c343df34ee
|
[FEAT] 實作 B012 商品同步 API 與統一圖片絕對網址格式
1. 實作 B012 API:新增 /api/v1/app/machine/products/B012 端點,支援 GET (全量) 與 PATCH (增量) 同步邏輯。
2. 統一圖片 URL:在 B005 與 B012 API 中使用 asset() 確保回傳絕對網址 (Absolute URL),解決 App 端下載相對路徑的問題。
3. 文件更新:同步更新 SKILL.md 的欄位定義,並在 api-docs.php 補上 B012 的正式規格說明。
4. 資料庫變更:新增 machine_slots 表的 type 欄位與相關註解遷移。
5. 格式優化:為技術規格文件中的 API 欄位與狀態碼加上反引號,提升文件中心可讀性。
|
2026-04-07 17:05:28 +08:00 |
|
sky121113
|
f2147ae6c4
|
[FEAT] 完善 IoT API 規范化、機台管理介面優化與 B005 改為 GET
1. 將 B005 (廣告同步) 從 POST 改為 GET,符合 RESTful 規範。
2. 完善 B009 (庫存回報) 回應規格,加入業務代碼 (200 OK)。
3. API 文件 UI 優化:新增 Method Badge (方法標籤),並修正 JSON 中文/斜線轉義問題。
4. 機台管理介面優化:實作「唯讀庫存與效期」面板,並將日誌圖示改為「👁️」。
5. 標準化 ID 識別邏輯:資料表全面移除對 sku 的依賴,改以 id 為主、barcode 為輔。
6. 新增 Migration:正式移除 sku 欄位並同步 barcode 指向。
7. 更新多語系支援 (zh_TW, en, ja)。
|
2026-04-07 14:37:57 +08:00 |
|
sky121113
|
b60afc3abe
|
[FIX] 修正與標準化 B005 廣告下載 API 以相容既有 Android App
1. 修改 MachineController@getAdvertisements 回傳欄位,將 t070v02 改為播放秒數,t070v03 改為位置代碼 (Flag)。
2. 根據 Android App 原始碼分析結果,調整位置對應:3 為待機廣告 (HomeActivity),1 為販賣頁廣告 (FontendActivity)。
3. 在 AdvertisementController@getMachineAds 增加 sort_order 排序,確保後台管理介面視圖與 API 輸出順序一致。
4. 更新廣告下載 API 的技術文件 (SKILL.md),明確標記欄位用途與位置代碼。
5. 在 routes/api.php 補上 B005 與 B009 的路由定義。
|
2026-04-07 11:41:24 +08:00 |
|
sky121113
|
bbdc5bad9f
|
[FEAT] 重構機台狀態判定邏輯並優化全站多語系支援
1. 重構機台在線狀態判定機制:移除資料庫 status 欄位,改由 Model 根據心跳時間動態計算。
2. 修正儀表板 (Dashboard) 與機台管理頁面的多語系顯示問題,解決換行導致翻譯失效的 Bug。
3. 修正個人檔案頁面的麵包屑 (Breadcrumbs) 導航,補齊「個人設定」層級。
4. 更新 IoT API (B010, B600) 的認證機制與日誌處理邏輯。
5. 同步更新繁中、英文、日文語言檔,確保 UI 標籤一致性。
|
2026-04-07 10:21:07 +08:00 |
|
sky121113
|
e085058d63
|
[FEAT] 遠端指令中心優化與規格同步
1. 實作遠端指令去重機制 (Supersede):避免重複下達相同待執行指令。
2. 修正遠端指令發送後的 Toast 提示邏輯,確保頁面跳轉後正確顯示回饋。
3. 增加 RemoteCommand 操作者 (user_id) 紀錄與狀態列舉擴充 (superseded)。
4. 修復機台列表「最後頁面」欄位對照錯誤,同步更新 Machine Model 與 API 規格。
5. 優化遠端指令中心 UI:放大卡片字體、調整側面欄間距,符合極簡奢華風規範。
6. 更新 API 技術規格書 (SKILL.md) 與 config/api-docs.php,補全所有機台代碼 (66-611) 與指令。
7. 補全繁體中文、英文、日文多語系翻譯檔案。
|
2026-04-02 14:57:41 +08:00 |
|