本卡屬 FR-167(母卡 CM-3241),卡 P1-7,階段 P1 升級變安全、批 5。只改 BE(主 repo,Repo 欄空著)。依賴:P1-4、P1-6。

這張卡做什麼(白話)

升級失敗或升到一半斷電、docker 當掉時怎麼救:丟掉複本、改接原本那份、起保留的舊映像、健康檢查。開機時 systemd 讀進度檔,發現上次沒跑完就自動做這件事;guidantai recover 讓 IT 手動觸發同一支。

為什麼切這一張

所有失敗的終點;退回本身不能失敗

reuse/extend/new

extend:填 lib/upgrade_rollback.sh、lib/upgrade_boot_check.sh;recover 子命令(P1-1 已派送)呼叫同一支 rollback

在哪裡

repo:~/Projects/Billows/Audit-Manager/compliance-manager-be
改既有:scripts/installer/lib/upgrade_rollback.sh(P1-1 空殼)
改既有:scripts/installer/lib/upgrade_boot_check.sh(P1-1 空殼)
新開:scripts/installer/systemd/guidant-upgrade-boot-check.service

怎麼做

細節在 design.md §5 對應段(~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/features/FR-167-2610-online-update-channel/design.md,開 design.html 看導覽);本段只列本卡要做到的點:

怎麼驗(開發期:你在本機/DEV 就要能做完)

本機 docker:進度檔停在任一未完成步驟時跑 boot_check → 呼叫 rollback:複本刪、原份接回、假的舊版容器起、進度檔 rolled_back_at 有值;進度檔 succeeded 時 boot_check 什麼都不做;guidantai recover 走同一支(diff 兩條路徑呼叫同一函式);shellcheck 綠

測試期(不是你做):這張卡在 190 的真實情境是「190:第 ⑦ 步 kill -9 整個流程 → 開機單元自動退回、舊版起來、筆數一致;systemctl stop docker 後 sudo guidantai recover 收尾」,由首腦在測試期操作、決策者看畫面。你只要確保上面的本機驗收全過、程式對這個情境沒有寫死假設。

對照雛形:~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/features/FR-167-2610-online-update-channel/prototype/index.html(上方「跟著走」)。

紀律