[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 欄位。
This commit is contained in:
sky121113 2026-04-21 16:01:32 +08:00
parent 2bc467bb84
commit 2aa0bf23ab
2 changed files with 16 additions and 10 deletions

View File

@ -111,19 +111,19 @@ Mqtt3Client client = MqttClient.builder()
所有 Payload 統一採用 **JSON** 格式,字母一律為 **snake_case**
### 3.1 心跳上報 (Heartbeat) - `machine/{id}/heartbeat`
比照原 B010 邏輯,但去除不必要的 HTTP Header 開銷
### 3.1 心跳上報 (Heartbeat) - `machine/{serial_no}/heartbeat`
這是機台最主要的狀態上報包,整合了關鍵的機台資訊
```json
{
"current_page": 1,
"firmware_version": "1.0.5",
"temperature": 25.5,
"door_status": 0,
"timestamp": "2026-04-14T09:00:00+08:00"
"firmware_version": "2.1.6",
"temperature": 20
}
```
> [!NOTE]
> 為了降低傳輸開銷,目前僅要求上報 **韌體版本****溫度**。其餘狀態如連線/斷線已透過 LWT 與 $SYS 事件處理。
### 3.2 異常上報 (Error/Event) - `machine/{id}/error`
比照原 B013 邏輯。

View File

@ -40,10 +40,16 @@ jobs:
WWWGROUP=1000 WWWUSER=1000 docker compose -f compose.yaml up -d --build --wait
- name: Step 2 - Deploy Code
shell: bash
run: |
tar --ignore-failed-read --exclude='.git' --exclude='node_modules' --exclude='vendor' --exclude='storage' --exclude='bootstrap/cache' -cf - . | docker exec -i star-cloud-laravel tar -xf - -C /var/www/html/
tar --ignore-failed-read --exclude='.git' --exclude='node_modules' --exclude='vendor' --exclude='storage' --exclude='bootstrap/cache' -cf - . | docker exec -i star-cloud-queue tar -xf - -C /var/www/html/
tar --ignore-failed-read --exclude='.git' --exclude='node_modules' --exclude='vendor' --exclude='storage' --exclude='bootstrap/cache' -cf - . | docker exec -i star-cloud-mqtt-worker tar -xf - -C /var/www/html/
deploy_to() {
tar --exclude='.git' --exclude='node_modules' --exclude='vendor' --exclude='storage' --exclude='bootstrap/cache' -cf - . 2>/dev/null | docker exec -i "$1" tar -xf - -C /var/www/html/
# tar exit 1 = "file changed as we read it" (non-fatal), exit 2+ = fatal
[ "${PIPESTATUS[0]}" -le 1 ]
}
deploy_to star-cloud-laravel
deploy_to star-cloud-queue
deploy_to star-cloud-mqtt-worker
docker exec star-cloud-laravel sh -c "
chown -R 1000:1000 /var/www/html &&
mkdir -p /.npm && chown -R 1000:1000 /.npm &&