sky121113
|
b21ea670bf
|
[FIX] 修正遠端指令中心機台列表顯示與規格文件更新
1. 修正 `tab-machines-index.blade.php` 最後通訊時間的 HTML `<template>` 渲染錯誤,確保正常顯示。
2. 更新 `index.blade.php` 的 `formatTime` 邏輯,超過 2 小時的通訊時間將顯示完整日期與時間,與庫存頁面格式統一。
3. 更新 `tab-machines.blade.php` 與語系檔,將庫存警示相關文案精準化為「庫存警示 (Inventory Alerts)」與「庫存穩定 (Inventory Stable)」。
4. 更新 `api-technical-specs/SKILL.md` 中對於 B017 API 的描述,強調其為機台端主動拉取資料,而非單純依賴 MQTT 觸發。
5. 修正 `iot-communication/SKILL.md` 中 Redis Key 前綴的說明,對齊實際讀取 `.env` (`MQTT_REDIS_PREFIX`) 的設定。
|
2026-04-22 12:33:01 +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
|
4027e9eaa2
|
[STYLE] 重構機台列表欄位並更新多語系支援
1. 將機台列表中的狀態、溫度與硬體狀態拆分為三個獨立欄位
2. 優化 index.blade.php 的表格結構與間距
3. 於 zh_TW.json、en.json 與 ja.json 新增 Sub / Card / Scan 翻譯鍵值
|
2026-04-21 17:09:39 +08:00 |
|
sky121113
|
6603828ddc
|
[FIX] 用中間檔案取代 tar pipe,徹底避開 pipefail
改為先 tar -cf /tmp/deploy.tar,再 docker exec tar -xf < 檔案。
不使用 pipe = 不受 pipefail 影響。
|| [ $? -le 1 ] 讓 tar exit 1 (warning) 通過,exit 2+ 才失敗。
|
2026-04-21 17:02:07 +08:00 |
|
sky121113
|
99463a762e
|
[REFACTOR] 簡化 CI/CD 部署腳本 - 從根本解決 tar 問題
問題根源:
- tar 的 'file changed as we read it' 是警告 (exit 1),非錯誤
- 之前用 PIPESTATUS、pipefail toggle、wait_for_container 等 workaround
處理,導致腳本越來越複雜且脆弱
根本解法:
1. tar --warning=no-file-changed: 讓 tar 忽略此警告並維持 exit 0
2. 三個容器共享同一份 volume,只需同步一次到主容器
3. 移除所有 workaround 程式碼 (PIPESTATUS/pipefail/wait_for_container)
Step 2 從 ~50 行縮減至 ~15 行。
|
2026-04-21 16:59:27 +08:00 |
|
sky121113
|
a15eeabde7
|
[FIX] 修復 pipefail 導致 tar 警告中斷部署腳本
Gitea Actions 的 bash shell 預設啟用 set -eo pipefail。
tar 的 exit 1 (file changed as we read it) 是警告非錯誤,
但 pipefail 會讓它變成管線失敗,set -e 立即中斷腳本。
修復:在 tar 管線前暫時 set +o pipefail,
手動檢查 PIPESTATUS 後再恢復 set -o pipefail。
|
2026-04-21 16:57:03 +08:00 |
|
sky121113
|
d3cb9b4fee
|
[FIX] 根因修復 - 共享 Volume 下不需對每個容器重複同步
根因:三個容器 (laravel, queue, mqtt-worker) 共享同一份
volume mount (.:/var/www/html)。對 laravel 容器做 tar 同步時,
queue/mqtt-worker 會同時看到檔案變動,導致它們 crash → restart。
接著對 queue 容器做冗餘同步時就會撞上 restarting 狀態。
修復:
1. 只對主容器 (star-cloud-laravel) 同步一次即可
2. 同步完成後等待 worker 容器從短暫重啟中恢復
3. 移除對 queue/mqtt-worker 的冗餘 tar 同步
|
2026-04-21 16:54:45 +08:00 |
|
sky121113
|
88741dc5ae
|
[FIX] 修復 CI/CD 部署時序競爭 - 容器重啟導致 docker exec 隨機失敗
根因:queue/mqtt-worker 容器可能處於 restarting 狀態,
docker exec 在此狀態下會被拒絕 (exit 1),導致部署隨機失敗。
修復:在 deploy_to 函式中加入 wait_for_container 重試邏輯,
在執行 docker exec 前先等待容器進入 running 狀態 (最多 30 秒)。
|
2026-04-21 16:52:45 +08:00 |
|
sky121113
|
c1bf9294cd
|
[DELETE] 移除 B010 (Heartbeat) HTTP API 殘留與文件
1. 從 config/api-docs.php 中完全移除 B010 配置。
2. 清理 routes/api.php 中關於 B010 的註解。
3. 更新 api-technical-specs/SKILL.md,將依賴 B010 的觸發描述改為 MQTT 指令。
4. 補上 B010 在 SKILL.md 中的廢棄區塊並導向 MQTT 規範。
|
2026-04-21 16:50:30 +08:00 |
|
sky121113
|
82832d04db
|
[DELETE] 移除已過時的 B013 HTTP API 端點
1. 移除 routes/api.php 中的 B013 路由。
2. 移除 MachineController@reportError 方法及其註解。
3. 更新 config/api-docs.php,移除 B013 文件配置。
4. 更新 api-technical-specs/SKILL.md,將 B013 標註為已廢棄並引導至 MQTT 规范。
|
2026-04-21 16:46:54 +08:00 |
|
sky121113
|
240667d74f
|
[FIX] 修正 CI/CD Bash PIPESTATUS 重置問題
1. 將 tar_status 與 docker_status 的賦值合併到同一行,解決 local 指令會重置 PIPESTATUS 導致變數為空的問題。
2. 增加變數非空檢查,預防非預期的語法錯誤。
3. 加強錯誤輸出的 Debug 資訊。
|
2026-04-21 16:39:08 +08:00 |
|
sky121113
|
6eb9de4812
|
[FIX] 強化 CI/CD Step 2 部署腳本與錯誤診斷
1. 改進 deploy_to 函式,同時驗證 tar 與 docker exec 的結束碼,避免靜默失敗。
2. 增加同步過程的日誌輸出 (tar/docker status),提升故障排查效率。
3. 確保任一容器同步失敗時立即中斷流程,防止不完整的部署。
|
2026-04-21 16:37:50 +08:00 |
|
sky121113
|
45b5ee5acd
|
[REFACTOR] 整合 MQTT 異常上報與 MachineService 硬體代碼映射
1. 重構 ProcessMachineError Job,將異常日誌記錄邏輯統一由 MachineService@recordErrorLog 處理,確保 error_code 能正確對應多語系標籤。
2. 更新 SKILL.md MQTT 通訊規範,修正機台故障上報 (B013) 的 Payload 範例並修復章節編號錯誤。
3. 優化 deploy-demo.yaml CI/CD 流程,解決檔案變動導致 tar 退出碼為 1 的部署中斷問題,並排除不必要的 storage 目錄同步。
|
2026-04-21 16:35:20 +08:00 |
|
sky121113
|
2aa0bf23ab
|
[FIX] 優化 CI/CD 部署流程與更新 MQTT 心跳規範
1. 修復 .gitea/workflows/deploy-demo.yaml:改用 bash 函式處理 tar 同步,容許 exit code 1 (檔案變動警告) 並攔截致命錯誤。
2. 更新 .agents/skills/mqtt-communication-specs/SKILL.md:簡化心跳上報 (Heartbeat) 規範,僅保留 firmware_version 與 temperature 欄位。
|
2026-04-21 16:01:32 +08:00 |
|
sky121113
|
2bc467bb84
|
[FIX] 修復 CI/CD 部署時 tar 因檔案變動而報錯的問題
1. 在 deploy-demo.yaml 的 tar 指令加入 --ignore-failed-read 預防非致命報錯。
2. 排除 storage 與 bootstrap/cache 目錄的上傳,避免與容器內運作中的檔案衝突。
|
2026-04-21 15:52:09 +08:00 |
|
sky121113
|
d0f84eb82b
|
[REFACTOR] 廢棄 B010 HTTP API 並整合 MQTT 心跳回報流程
1. 移除 routes/api.php 中的 B010 心跳上報路由。
2. 刪除 MachineController.php 中的 heartbeat 方法與相關過期邏輯。
3. 刪除 docs/b010_technical_spec.md 並更新相關技術規格文件。
4. 修改 ListenMqttQueue.php,移除獨立的溫度與版本號處理,統一由 heartbeat 任務分發。
5. 更新 MQTT 通訊規範,廢棄獨立的屬性 Topic (temperature, firmware_version)。
|
2026-04-21 15:48:49 +08:00 |
|
sky121113
|
bdc1c44c0f
|
fix(mqtt): persistent subscription permissions in acl.conf
|
2026-04-21 15:00:10 +08:00 |
|
sky121113
|
d26ef6e793
|
fix(mqtt): correct default MQTT password for gateway
|
2026-04-21 14:50:40 +08:00 |
|
sky121113
|
9844607e84
|
perf(ci): use tar stream for deployment to improve stability
|
2026-04-21 14:44:02 +08:00 |
|
sky121113
|
e7bf20c2c3
|
fix(mqtt): add MQTT user/pass to compose environment
|
2026-04-21 14:43:30 +08:00 |
|
sky121113
|
21fe899e72
|
fix(mqtt): add missing MQTT user/pass fields to config struct
|
2026-04-21 14:40:53 +08:00 |
|
sky121113
|
47f7cc3c92
|
fix(mqtt): enable clean session and fix hardcoded credentials for gateway
|
2026-04-21 14:37:34 +08:00 |
|
sky121113
|
fed81a12f3
|
[STYLE] 移除 mqtt_handler.go 中多餘的空白行
1. 整理代碼格式,移除 HandleMessage 函式中多餘的換行符號。
|
2026-04-21 14:19:35 +08:00 |
|
sky121113
|
9166decbb8
|
[FIX] 修復 MQTT 連線狀態追蹤與 EMQX 版本相容性問題
1. 優化 mqtt-gateway 的 $SYS 主題解析邏輯,改用關鍵字匹配(搜尋 clients/)以支援不同版本的 EMQX。
2. 修正啟動日誌中的 Client ID 顯示,改為讀取動態設定。
3. 配合 150 伺服器 EMQX 降級操作,同步更新通訊層容錯代碼。
|
2026-04-21 14:18:24 +08:00 |
|
sky121113
|
43a160e2d4
|
fix(mqtt): improve topic parsing logic and dynamic clientid logging
|
2026-04-21 14:06:39 +08:00 |
|
sky121113
|
c3b623e5e0
|
[FIX] 修正 CI/CD 中 docker run 的掛載問題,使用 pipe 方式同步設定檔
|
2026-04-21 13:13:26 +08:00 |
|
sky121113
|
15c0db6742
|
[REFACTOR] 整理並合併 CI/CD 準備步驟 (Step 0)
|
2026-04-21 13:11:58 +08:00 |
|
sky121113
|
cec70f38b5
|
[FIX] 增加 Step 0.2 同步設定檔至宿主機,解決 EMQX 掛載失敗問題
|
2026-04-21 13:08:12 +08:00 |
|
sky121113
|
cc966f2de7
|
[FIX] 優化 CI/CD 掛載邏輯,避免 Docker 自動誤建目錄
|
2026-04-21 13:06:20 +08:00 |
|
sky121113
|
6ef7e2211c
|
[FIX] 修正 CI/CD .env 被誤建為目錄的問題
|
2026-04-21 13:04:41 +08:00 |
|
sky121113
|
bb426abbc0
|
[FIX] 修正 CI/CD 掛載錯誤,增加 acl.conf 目錄清理步驟
|
2026-04-21 13:02:44 +08:00 |
|
sky121113
|
32bc13ac1b
|
[FIX] 修復 MQTT 監聽器與機台連線狀態同步邏輯
1. 補齊 ListenMqttQueue 中的 Job 類別引用,修復 mqtt-worker 崩潰重啟問題。
2. 實作 Go Gateway 的 Client ID 解析邏輯,正確將 SC_{serial}_{random} 格式還原為機台編號。
3. 修復 系統主題解析與 Laravel ProcessStatus Job 對齊,實現毫秒級連線狀態同步。
4. 在 ProcessStatus Job 中增加第二層 serial_no 清理保險,提高系統容錯。
5. 更新機台列表 UI 狀態顯示邏輯,支援 在線/斷線/故障 三態顯示與多語系。
6. 更新 MQTT 通訊規範 (Skill) 文件,確保全域開發定義的一致性。
7. 同步更新 zh_TW.json, en.json, ja.json 翻譯文件。
|
2026-04-21 12:38:42 +08:00 |
|
sky121113
|
f4f2ca9175
|
[STYLE] 調整 Workflow 檔案格式
1. 移除 .gitea/workflows/deploy-demo.yaml 中多餘的空行以符合規範。
|
2026-04-21 08:53:51 +08:00 |
|
sky121113
|
3a31a1a593
|
[STYLE] 調整 Workflow 檔案格式以符合規範
1. 在 .gitea/workflows/deploy-demo.yaml 中優化程式碼區塊間距。
|
2026-04-21 08:23:56 +08:00 |
|
sky121113
|
23225ffe3f
|
[DOCS] 更新 MQTT 即時通訊規範,新增 App 端 WSS 連線標準
1. 補齊各連線通道 (TCP/SSL/WS/WSS) 的埠號建議表。
2. 新增 App 端 (Android) WSS 連線專節,包含 URL 參數與密碼雜湊要點。
3. 提供 HiveMQ Client 初始化範例程式碼。
4. 定義 MQTT 優先、HTTP 兜底的 Fallback 通訊機制與時間窗口。
|
2026-04-17 17:25:20 +08:00 |
|
sky121113
|
bfe359d5a2
|
[FIX] 移除 B014 API 的強制度人員認證,簡化機台接入流程
1. 修正 routes/api.php:移除 machine/setting/B014 的 auth:sanctum middleware。
2. 修正 MachineController.php:移除 getSettings 方法中的 RBAC 權限檢查邏輯,改為僅需驗證機台序號即可獲取設定。
|
2026-04-17 16:14:17 +08:00 |
|
sky121113
|
bf43a33df3
|
[FEAT] 整合 MQTT 資料流自動化與環境埠號修復
1. 整合 MQTT Gateway 並支援動態 Redis Key 前綴隔離,解決多環境衝突。
2. 修正本地開發環境與 Demo 環境的埠號映射 (80/8080) 與 Vite HMR (5175) 設定。
3. 更新 CI/CD 部署流程,新增自動同步程式碼至 MQTT Worker 與 Queue 容器。
4. 擴充 .env.example 以提供完整的 MQTT/EMQX 相關變數範本。
5. 更新模擬腳本以符合現有測試資料。
|
2026-04-17 13:22:46 +08:00 |
|
sky121113
|
e3ad7dd44f
|
[DOCS] 修正並對齊 Demo 環境基礎設施資訊
1. 更新 README.md 與 framework.md 中的 Demo 環境網域、伺服器指令、部署路徑。
2. 更新 Gitea Workflow (.gitea/workflows/) 中的 Gitea 官方網址 (gitea.setdomains.work)。
3. 更新遠端部署模板中的舊 IP、路徑與機器人信箱,確保全站文件一致性。
|
2026-04-17 10:30:05 +08:00 |
|
sky121113
|
588f5659ca
|
[FIX] 修復 MQTT Gateway 啟動崩潰與認證失敗問題
1. 在 mqtt-gateway/main.go 中加入連線重試邏輯 (Redis & MQTT),避免在服務初始化或認證暫時失敗時直接退出。
2. 更新 App/Console/Commands/MqttSyncAuth.php,加入同步 star-cloud-gateway 自身認證資料至 Redis 的邏輯。
3. 修改 compose.yaml,為 mqtt-gateway 加入 restart: always,並為 emqx 加入健康檢查以優化容器啟動流程。
|
2026-04-17 09:08:18 +08:00 |
|
sky121113
|
550ebc7fb6
|
Merge remote-tracking branch 'origin/demo' into dev
|
2026-04-17 08:21:05 +08:00 |
|
sky121113
|
91cb74f7f7
|
[FIX]: 修復 machines 資料表缺失 status 欄位之問題
1. 新增 2026_04_16_174321_add_status_to_machines_table.php 遷移檔以補回缺失欄位。
2. 更新 .gitignore 排除 PPTX 生成相關目錄。
|
2026-04-17 08:19:28 +08:00 |
|
sky121113
|
4433250c19
|
fix: correct container port mapping to 80
|
2026-04-16 17:35:59 +08:00 |
|
sky121113
|
f9c55df165
|
ci: retrigger after MySQL volume reset
|
2026-04-16 17:28:23 +08:00 |
|
sky121113
|
8901c469a0
|
ci: retrigger after fixing .env typo and cleaning stale containers
|
2026-04-16 17:26:07 +08:00 |
|
sky121113
|
2de80cd1bf
|
fix: ensure .env is visible to docker compose up for environment variable interpolation
|
2026-04-16 17:22:12 +08:00 |
|
sky121113
|
cf267a9264
|
ci: retrigger deploy (pre-placed .env on host)
|
2026-04-16 17:18:07 +08:00 |
|
sky121113
|
420263680d
|
fix: chown /.npm cache and clean stale node_modules for npm install
|
2026-04-16 17:11:54 +08:00 |
|
sky121113
|
ebc8b7943f
|
fix: chown after docker cp to fix composer permission denied
|
2026-04-16 17:08:45 +08:00 |
|
sky121113
|
3cacf9d80f
|
fix: use docker cp to inject source code into container (bypass volume mount issue)
|
2026-04-16 17:06:59 +08:00 |
|
sky121113
|
9775c59996
|
fix: correct composer installer option --instdir to --install-dir
|
2026-04-16 16:50:11 +08:00 |
|