s.total_price):原 renderCards() 在卡片主價格區(.price-box)固定顯示一般標準基礎房型總價(如方案 #2 2026-12-13 ~ 2026-12-17 顯示 JPY 73,150),即使該方案包含已上傳 PayEasy 特殊訂房資訊的登別 Hotel Mahoroba(頂規【NIRE 楡】洋式私湯套房),仍未切換主價格為特殊訂房總價。detect_split_stay_spots 段落漏帶 hotel_id:hotel_radar_service.py 的 detect_split_stay_spots() 產生之 split_segments 缺少 hotel_id 欄位,影響跳宿段落與 HOTEL_ROOM_TIERS 之特殊房型比對。hasPayEasyBookingData(spot) 與 HOTEL_ROOM_TIERS[hid].is_special_booking 判定機制,並將 isPayEasyEnabled 預設設為啟用(localStorage.getItem('payeasy_enabled') !== 'false')。🏨 一般訂房總費用 (N 晚・標準基礎房型) 與官網標準房總價。👑 特殊訂房總費用 (4 晚) 與 已套用 PayEasy 特殊訂房 徽章。🛌 頂規 【NIRE 楡】洋式私湯套房 (一泊二食三大蟹百匯)。NT$ 39,537(Mahoroba 1 晚 NT$ 22,464 + Solaria 3 晚 NT$ 17,073),並列對照 官網同級 NT$ 42,140 (JPY 196,000),右側醒目顯示 現省 NT$ 2,603 (比日本官網同級省)。split_segments 補齊 hotel_id:
hotel_radar_service.py 之 detect_split_stay_spots() 補齊各段落之 "hotel_id" 屬性。mac-air 之 ~/Gemini/GEMINI.md 補齊 chflags -h uchg 符號連結防覆寫鎖定。mac-air 與 mac-mini-pro 之 ~/Gemini-local/ 並重啟 Port 8887 服務。JX850/JX851 桃園—新千歲)則取決於「台灣出發星期幾(週五/六出發、週日/一回程艙等較貴)、連假前後搶票潮、12 月中下旬雪季與聖誕跨年旺季」。NT$ 2,600 ~ 5,000 住宿費,卻在機票端多付 NT$ 6,000 ~ 15,000(假性省錢陷阱)。perNightRefLines & .split-segments-box):
2026-12-13 ~ 2026-12-17)為例:
NT$ 22,464/晚 | 🇯🇵 官網同級 NIRE NT$ 24,080/晚 (JPY 112,000,標準房 JPY 24,170/晚)NT$ 5,691/晚 (3晚 NT$ 17,073) | 🇯🇵 官網同級 NT$ 6,020/晚 (JPY 28,000,標準房平均 JPY 16,327/晚)estimateStarluxFlight):
CTS NT$ 42,000、福岡 FUK NT$ 29,000、關西 KIX NT$ 31,000、熊本 KMJ NT$ 30,000、東京 NRT NT$ 32,000、仙台 SDJ NT$ 35,000)。✈️ 星宇雙人來回實查價 自訂覆寫欄位 (#starluxTwinInput)。>= NT$ 5,500)時,自動亮起紅框警訊,提醒改選「週日~週四」或「週二~週六」雙甜檔期。flight_hotel_asc):
💎 機+酒總價最低優先 (防機票高價陷阱),一鍵找出真正總花費最低的黃金出遊組合。py_compile 語法檢驗,同步更新 mac-air 與 mac-mini-pro 之 ~/Gemini-local/hotel_radar_web.py,重啟 Port 8887 服務並完成 WORKLOG.html 編譯與雙路徑同步。NT$ 73,083:先前前端過濾 1晚 + 3晚 時僅比對 split_segments[0].nights === 1 與 split_segments[1].nights === 3,未鎖定對應槽位之 hotel_id,導致方案 #6 之後混入了反向順序「第 1 段札幌 Solaria 1 晚 (NT$ 5,691 × 1) + 第 2 段登別 Mahoroba 3 晚 (NT$ 22,464 × 3 = 67,392)」,相加即為 NT$ 73,083。2026-12-13 ~ 2026-12-17,登別 1 晚 + 札幌 3 晚) 之兩段實查截圖,不應將該日期的價格直接套用推算至其他日期的方案。${hotelId}_${checkinDate}_${nights}) 獨立綁定」 (DEFAULT_UPLOADED_SEGMENT_PRICES & uploadedSegmentPrices):
2026-12-13 ~ 2026-12-17) 之兩段實查報價:noboribetsu_mahoroba_2026-12-13_1 = 22464、solaria_sapporo_2026-12-14_3 = 5691。NT$ 39,537,PayEasy 專區完整顯示特約總價、點數折抵與實付自付現金。⏳ PayEasy 報價待上傳。⏳ 等待上傳報價 — 尚未上傳此日期方案之 PayEasy 訂房報價,點擊卡片右上角 📷 上傳 貼上該日期截圖或輸入報價後,才動態解鎖該方案之 PayEasy 總價與特殊訂房比價。1晚 + Slot 2 (Solaria) 3晚 時,同步檢驗 seg0Hid === h0 與 seg1Hid === h1,徹底排除反向「Solaria 1 晚 + Mahoroba 3 晚 (73,083)」混入。py_compile 語法檢驗,同步更新 mac-air 與 mac-mini-pro 之 ~/Gemini-local/hotel_radar_web.py,重啟 Port 8887 服務並重新編譯同步 WORKLOG.html。WORKLOG.md 待辦事項表格最左側新增 No. 欄位,並更新「智慧訂房平日低價雷達與出遊決策系統 (Gemini Hotel Price Radar)」目前進度以供後續 Session 對齊。flight_hotel_asc:
currentSortOrder 初始值設為 'flight_hotel_asc',並將 #selectSortOrder 下拉選單第一順位預設選中項改為 💎 機+酒總價最低優先 (預設・防機票高價陷阱)。onSortOrderChange() 加入切換排序即時 Toast 視覺通知。getCombinedFlightAndHotelTwd):
NT$ 39,537) 的 🌟 方案 #2 (2026-12-13 ~ 2026-12-17) 在與其他未上傳方案的一般標準房 (NT$ 15,284) 比大小時因房型升級而被排到最後一名,排序比價函數統一採用「同基準基礎房價折合台幣 + 星宇雙人機票」進行公平排序,確保方案 #2 穩居第 2 名,同時卡片主畫面完整顯示頂規私湯套房與機+酒總預算。WORKLOG.md 待辦事項 (#todo-tasks) 左側新增 No. 編號欄位,並詳列 No. 2 目前完成的 4 大模組進度與後續待辦步驟。py_compile 語法檢驗,同步更新 mac-air 與 mac-mini-pro 之 ~/Gemini-local/hotel_radar_web.py,重啟 Port 8887 服務並重新編譯同步 WORKLOG.html。12/07~12/11 vs 方案 #2 12/13~12/17)各自綁定真實票價,且缺乏機票截圖即時辨識功能。/api/ocr_starlux):
CTS 札幌新千歲、FUK 福岡、KIX 關西、NRT 成田等)、航班號(JX850/JX851)與票價數字(12,000 ~ 160,000)。uploadedFlightPrices):
${checkin_date}_${checkout_date} 為唯一 Key 獨立儲存於 localStorage('starlux_uploaded_flight_prices')。12/07~12/11) 與方案 #2 (12/13~12/17) 之雙人來回 NT$ 40,300。#starluxFlightModalBackdrop):
✅ 實查真票價 或 ✈️ 平日正常票價 徽章,並提供 ✈️ 修改實查票價 / 📷 登記/上傳票價 一鍵直達按鈕。NT$ 40,300 實查雙甜價、NT$ 42,000 平日基準、NT$ 38,500 促銷價)與手動精確微調輸入框。/api/ocr_starlux,精準解析出 twin_fare: 40300、route_key: CTS。http://127.0.0.1:8887/,點擊卡片彈出機票 Modal,點擊快捷票價即時更新卡片、重新計算機+酒總價,流程絲滑無錯誤。~/Gemini-local/hotel_radar_web.py,常駐服務已平滑重啟。WORKLOG.md 並執行 scripts/generate_worklog_html.py 產出最新 WORKLOG.html。NT$ 17,073(每晚 NT$ 5,691)。NT$ 17,070(每晚 NT$ 5,690)。EZTRAVEL_HOTEL_MAP(登別 Mahoroba HotelID=704188&CityID=35724,札幌 Solaria HotelID=62987948&CityID=641)。getEzTravelUrl(hotelId, inDate, outDate, 2) 全自動產出包含「飯店 ID、城市代碼、入住日、退房日、2位成人」的直達免搜尋網址。🇹🇼 易遊網直達查價 ↗ 按鈕,點擊直接開出該方案日期預填好的房價清單。🇹🇼 易遊網公開行情(如 Solaria 約 NT$ 5,690/晚、Mahoroba 約 NT$ 6,956/晚起),無需手動截圖即可先行預判真實市場行情。http://127.0.0.1:8887/:
~/Gemini-local/hotel_radar_web.py,常駐服務已平滑重啟。WORKLOG.md 並執行 scripts/generate_worklog_html.py 產出最新 WORKLOG.html。2026-YEAR.md 是以原先預估的 12/15(二)~12/19(六) 為排程基礎,星宇機票預估高達 NT$ 57,576(機+酒總價達 NT$ 96,258)。隨著方案二(2026/12/13 日 ~ 2026/12/17 四)實查機票降至 NT$ 40,300、登別【NIRE 楡】洋式私湯套房與札幌 Solaria 價格確定,需將整體年度計畫與行程時間軸全面同步。NT$ 40,300(去 JX318 10:20-15:00 / 回 JX319 16:00-19:55),每人約 NT$ 20,150。NT$ 22,464(比日本官網同級牌價 NT$ 24,080 現省 NT$ 1,616)。NT$ 17,073(每晚 NT$ 5,691,易遊網同等 NT$ 17,070,比日本官網同級牌價 NT$ 18,060 省 NT$ 987)。NT$ 39,537(帳戶擁有 100,000 點 PayEasy 點數全額完全折抵,住宿自付現金僅 NT$ 0,折抵後點數尚餘 60,463 點)。NT$ 40,300(平均每人實付現金僅 NT$ 20,150;相較原先 12/15~12/19 自付 NT$ 96,258 暴省 NT$ 55,958!住宿奢華享受由公司福利點數全額買單)。python3 scripts/build_2026_year_html.py 成功產出 2026-YEAR.html(101,811 bytes)。~/Gemini-local/2026-YEAR.md 與 ~/Gemini-local/2026-YEAR.html。python3 scripts/generate_worklog_html.py 產出最新 WORKLOG.html 並雙路徑同步至 ~/Gemini-local/。com.authur.travel-plan-web,Port 8896)是由常駐行程載入 ~/Gemini-local/scripts/travel-plan-web.py,其字典中的卡片資訊仍停留於舊版「方案 A / 超級選項 B」。build_2026_year_html.py 內部靜態模板先前仍殘留 12/15~12/19 日期與機酒舊估算,重新編譯時需徹底對齊 12/13~12/17 方案二拍板與 100,000 點數折抵。2026 北海道 5天4夜冬日雪景溫泉之旅方案二拍板 v3.0👑 拍板方案二 12/13~17 ($79,837) | 🎁 10萬點全額折抵住宿 (自付現金僅機票 $40,300!)星宇台中直飛(無週末溢價)・登別まほろば【NIRE楡】私湯套房+三大蟹吃到飽・索拉利亞西鐵連住3晚・10萬點住宿全買單自付$0・美瑛孤獨聖誕樹・LOPIA琴似店2026-YEAR.html 內頁全面同步:
scripts/travel-plan-web.py 與 2026-YEAR.html 同步至本機 SSD ~/Gemini-local/。launchctl kickstart -k gui/501/com.authur.travel-plan-web 熱重啟服務。http://127.0.0.1:8896/ 回傳 HTTP 200,首頁卡片已即時顯示「方案二拍板 v3.0」與 10 萬點折抵。http://127.0.0.1:8896/2026-YEAR.html 回傳 HTTP 200,浮動導覽列與 12 大 Tab 內容完備。alias ghtml='python3 ~/Gemini/scratch/md_to_html.py '。~/.zshrc.local 寫入 alias ghtml='python3 ~/Gemini/scratch/md_to_html.py '。~/Gemini/scratch/md_to_html.py 同步複製至 ~/Gemini-local/scratch/md_to_html.py。ghtml help,成功輸出指令說明清單(支援 ghtml、ghtml add <file.md>、ghtml delete <file>、ghtml list)。scratch/md_to_html.py 係為其他系統 (Jetski) 設計,輸出至 Jetski_Docs_Hub/ 且為舊版亮色白底風格;希望改造成通用型工具取代各自獨立的腳本,並指定「格式用現在漂亮的格式」、保留現有指令選項(ghtml add / delete / list / help),並支援 iPhone「加入主畫面」PWA 獨立全螢幕體驗。#0a0f1d(黑曜深色底),注入雙向柔和環境氛圍光暈 (radial-gradient 天空青 #38bdf8 + 星空紫 #c084fc)。linear-gradient(90deg, #38bdf8, #818cf8, #c084fc))、自動萃取 H1 標題、自訂 Badge 標籤與更新時間。apple-mobile-web-app-capable="yes" 等)。ghtml add <檔案.md>:將任何 Markdown 編譯為頂級深色 HTML,直接輸出至主要工作區並自動鏡像至本機 SSD ~/Gemini-local/,Doc Hub 首頁自動生成卡片。ghtml delete <檔案>:同步自雙路徑目錄移除該 HTML 文件,並具備 WORKLOG 防誤刪機制。ghtml list:格式化印出目前 Doc Hub 收錄的所有文件清單、檔案大小與更新時間。ghtml (無參數):批次全量編譯並雙路徑發布所有核心文件。scripts/travel-plan-web.py 加入 <meta name="apple-mobile-web-app-title" content="Doc Hub">,iPhone 使用者加入主畫面時預設顯示簡短易讀的「Doc Hub」名稱。ghtml help:說明手冊正確輸出。ghtml list:精準列出 6 份線上文件。ghtml add ARCHITECTURE.md:成功產出 39.7 KB 深色毛玻璃 HTML,雙路徑同步至 SSD,Doc Hub HTTP 實測 200 OK,首頁卡片即時載入。ghtml delete ARCHITECTURE.html:成功乾淨移除雙路徑檔案並更新清單。ghtml delete WORKLOG:成功攔截並觸發防誤刪警告。🌙 4 個晚上 (請假 5 天 | 5天4夜)、🌙 3 個晚上 (請假 4 天 | 4天3夜)、🌙 2 個晚上 (請假 3 天 | 3天2夜) 等。🌙 4 個晚上 (請假 5 天 | 5天4夜),讓使用者一進系統即處於 4 個晚上的情境。nightSplitCombinationsBox):
[ 🌟 自由探索 (包含全部組合) ][ 🌙 飯店A (1晚) + 飯店B (3晚) ][ 🌙 飯店A (2晚) + 飯店B (2晚) 平均分配 ][ 🌙 飯店A (3晚) + 飯店B (1晚) ]renderCards() 立即過濾方案卡片。1晚 + 3晚、2晚 + 2晚、3晚 + 1晚 快捷按鈕。1晚 + 3晚,下方卡片精確僅顯示「登別溫泉 馬霍洛巴 1晚 + 札幌 JR Tower 3晚」之避峰極致組合。2晚 + 2晚 與 3晚 + 1晚,卡片即時過濾顯示正確晚數方案,流暢無延遲。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html 並雙路徑同步。payeasyPanel):
[ ☑ 啟用通用點數折抵與特約比價 ]。🌐 前往 PayEasy 快捷按鈕。payeasyModalBackdrop):
🇯🇵 日本官網折合 NT$ vs 🏷️ PayEasy 特約總價 NT$。🎁 通用點數折抵 -NT$ 與 💎 實付自付現金 NT$(若全額折抵則亮起 🎉 NT$ 0 全額點數免掏錢!)。🔥 PayEasy 特約比日本官網省 NT$ XXX!(雙重省錢,極力推薦點數折抵)。💡 日本官網直接訂省 NT$ YYY!(建議保留點數於日常購物或買機票)。[ 🎁 PayEasy 直達 ]。http://127.0.0.1:8887/:
~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html 並雙路徑同步。Hotel Mahoroba x 1晚 + Solaria Nishitetsu x 3晚。[ 📷 貼圖/修改此卡報價 ] 按鈕。🛌 比對房型:👑【NIRE 楡】洋式私湯套房 (一泊二食三大蟹百匯) 以及 官網直查此房型 ↗(直達 Tripla 預約搜尋)。Cmd+V / 拖曳):
Cmd+V (或 Ctrl+V) 貼上 PayEasy 截圖或文字,自動萃取房型與金額。[ ⚡ 一鍵套用您的實戰截圖方案:登別 Mahoroba【NIRE 楡】私湯套房 TWD 23,958 ] 快捷鈕。HOTEL_ROOM_TIERS 資料庫:Mahoroba 對齊【NIRE 楡】官網牌價(約 JPY 112,000 / NT$ 24,080),Solaria 對齊高級雙人房(JPY 28,000 / NT$ 6,020)。http://127.0.0.1:8887/:
特殊房型對齊 徽章與同級房型比對。📷 貼圖/修改此卡報價 順暢彈出視窗,截圖貼上區與實戰方案套用鈕完整正常。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html 並雙路徑同步。ReferenceError: ALL_HOTELS_META is not defined。renderPayEasyTable() 與 parseAndImportPayEasyText() 中引用了舊版暫存全域變數名稱,而當前系統正式獲取全飯店清單的函式為 getAllAvailableHotels(),導致點擊按鈕時觸發例外中斷,彈窗未能加上 .open 類別展開。getAllAvailableHotels(),確保完整讀取當前目的地全部飯店與自訂飯店清單。openCardPayEasyModal(hotelId) 調用傳參,避免特殊字元或 undefined 影響焦點聚焦。http://127.0.0.1:8887/:
[ 📷 貼圖/修改此卡報價 ] 按鈕,視窗立即 100% 流暢彈出。[ ⚡ 立即套用 ] 登別 NIRE 截圖方案成功生效,點擊 [ 完成並關閉 ] 順暢返回,卡片實時展示正確同級對比數據。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html 並雙路徑同步。processPastedImageFile() 內部調用了固定寫死為 23,958 的示範函數 applyNireScreenshotPreset(),未將圖片傳送給後端 OCR 引擎進行真實動態辨識,導致上傳新截圖(如 22,464)時房價無法跟著更新。/api/ocr_payeasy 端點,且初期未匯入 Python re 模組曾引發 500 錯誤。POST /api/ocr_payeasy):
import re 模組。tesseract 5.5.1 (/opt/homebrew/bin/tesseract) 執行高精度本機光學文字辨識(辨識耗時僅約 0.2~0.3 秒,完全不經外部雲端,符合資安與隱私規範)。NIRE、mahoroba、solaria 等)及金額模式(TWD xx,xxx 或 xx,xxx),過濾原價並鎖定最新折後特約實付價(精準辨識出 22,464)。processPastedImageFile(file):透過 FileReader 讀取並以 fetch('./api/ocr_payeasy', ...) 非同步傳送至後端。customPayEasyPrices,並同步調用 renderPayEasyTable() 與 renderCards() 即時重算各卡片出遊方案之特約總額與折抵自付現金。22,464 最新截圖、23,958 原截圖、20,879 破盤特惠),支援一鍵套用與微調。22,464。http://127.0.0.1:8887/:
[ 📷 貼圖/修改此卡報價 ],套用最新截圖報價 22,464,關閉彈窗後卡片即時自動重算並展示最新特約總額與自付現金。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html 並雙路徑同步。[ 📷 貼圖/修改此卡報價 ],且固定綁定第 1 段飯店(Mahoroba),缺乏針對第 2 段飯店(Solaria)的獨立貼圖/修改按鈕。[ 📷 第1段 Mahoroba ] 與 [ 📷 第2段 Solaria ]。點擊任一按鈕即可直接開啟彈窗並自動選定該飯店。targetHotelTabsContainer):
[ 🏨 Mahoroba NT$ 22,464 ]、[ 🏨 Solaria NT$ 5,934 ] 等),清楚標示「🎯 正在貼圖/修改報價之目標飯店」,支援隨時點選切換。POST /api/ocr_payeasy):
target_hotel_id。除智慧識別截圖中的飯店關鍵字外,若截圖僅包含金額或局部文字,優先採用前端當前選定之目標飯店,精準更新對應價格。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html 並雙路徑同步。17,073 乘以 3 晚算成 51,219,加上 Mahoroba(22,464)後使 PayEasy 總價虛高至 NT$ 73,683,出現假性「官網省 $33,159」之誤判。NT$ 5,691)。🔥 TWD 17,073 (實戰 3 晚總額・平均每晚 NT$ 5,691・現省 $987),點擊自動帶入每晚 5,691。(3晚總額: NT$ 17,073),輸入每晚單價時同步展示總額。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html 並雙路徑同步。JPY 73,150 本身即為 4 晚(登別 1 晚 + 札幌 3 晚)之日本官網總費用,但上方缺乏清楚說明標籤,導致使用者直覺懷疑是否為「平均每晚單價」。🏨 全行程官網總費用 (4 晚)。平均每晚約 JPY 18,288。現省 JPY 18,850 (官網標準牌價),使全卡片語意 100% 透明無歧義。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html 並雙路徑同步。JPY 73,150 是雷達系統針對【官網標準基礎房型 (一般和洋室客房)】計算之 4 晚總價(Mahoroba 標準客房 1 晚 JPY 28,000 + Solaria 3 晚 JPY 45,150 = JPY 73,150,折合台幣約 NT$ 15,727)。NT$ 22,464,是頂級奢華房型:【NIRE 楡】洋式高級客房附源泉露天風呂私湯客室 (一泊二食三大蟹百匯)!該房型若直接在日本官網訂購,一晚官方牌價高達 JPY 112,000(折合約 NT$ 24,080 / 晚)。.plan-number-badge) 頂部顯眼渲染:
<span class="plan-number-badge">🌟 方案 #${planNumber}</span>,採用科技感蔚藍漸層與邊框光暈。notifyTelegram(spot, planNumber) 傳送 plan_number 欄位至後端。🎯 <b>【出遊方案 #{plan_num}】</b>,macOS 系統通知同步帶入 出遊方案 #{plan_num}:{hotel_name}。🏨 官網標準基礎房型總費用 (4 晚) [標準客房]。💡 房型說明:上方 JPY 73,150 為官網【一般標準客房】總價;若對齊奢華【NIRE 楡 私湯客室】,官網同級牌價約 JPY 196,000 (折合 NT$ 42,161),詳見下方 PayEasy 特約精算!http://127.0.0.1:8887/:
🌟 方案 #1、🌟 方案 #2、🌟 方案 #3...。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html 並雙路徑同步。./mac-pro-off-orbstack.sh 時反映無法順利關機,且 5 個階段均跳出 SSH 密碼提示,末尾出現「找不到 Apple 捷徑『mac-pro-off』」警告。autorestart=1 自動開機,刻意不執行系統級 shutdown -h now,而是關閉服務並 sync 排空磁碟緩衝後由智慧插座切斷電源。id_ed25519 免密認證與 iCloud 同步之 mac-pro-off / drives-off 捷徑均已完整就緒。./mac-pro-off-orbstack.sh:
mac-pro-off 與 drives-off 執行成功)。192.168.88.88 確認回傳 OFFLINE(100% packet loss),Mac Pro 主機與外接硬碟陣列已安全斷電關機。Trilium Web Clipper Plus 擴充功能,欲將網頁正文、選取文字或螢幕截圖直接剪藏回 Mac Mini 的 Trilium Notes 中央筆記服務,並要求記錄設定資訊以供後續在 MacBook Air 上快速配置。Nriver/trilium-web-clipper-plus 源碼(options/options.js),外掛點擊 Login to the server instance 時會向伺服器發送 POST /api/login/token,核對成功後由 Trilium 自動簽發專屬 Token 並存入外掛 Storage。因此設定頁面的 Password 欄位必須輸入平常登入 Trilium 的真實密碼(若手動貼入 ETAPI Token 會因密碼比對失敗拋出 Incorrect credentials),且網址末尾不得帶有斜線 /(避免雙斜線引發 Router 404)。https://mac-mini-pro.tail9ccc63.ts.net:8449/trilium 因掛載於 Caddy 之 forward_auth authelia 門禁之下,外掛連線會被 303 重定向攔截。18090 已在全介面(*.18090)開放監聽且免經 Authelia。透過 Tailscale 內網加密連線 http://mac-mini-pro.tail9ccc63.ts.net:18090 可跨越 LAN 與外網,兼顧最高連線速度與安全性。Trilium Web Clipper Plus。http://mac-mini-pro.tail9ccc63.ts.net:18090(末尾不可有斜線)。Login to the server instance,畫面上方顯示 Trilium server instance has been already configured to http://mac-mini-pro.tail9ccc63.ts.net:18090. 即完成。Cmd + Shift + S 可直接喚起剪藏面板。Crop screen shot(框選/局部截圖・最推薦):點擊後以十字游標拖曳框選網頁重點區塊、圖表或文字,精準截圖保存。Save whole screen shot(全可見畫面截圖):一鍵將當前螢幕可見的整個網頁畫面完整截圖存檔。Save whole page(整頁網頁內容存檔):將網頁文章正文保存為可編輯、選取的富文本格式(非圖片)。Save link with a note(存連結與筆記):保存網址並可隨手附上一句個人備註。Save window's tabs as a list(分頁收納盒):將當前視窗的所有開啟分頁一鍵彙整為網址清單。Inbox(收件匣) 節點。Home918 (home918.tail9ccc63.ts.net) 至 Homepage。http://home918.tail9ccc63.ts.net:5000 (icon: synology.png, ping: http://home918.tail9ccc63.ts.net:5000)http://home918.tail9ccc63.ts.net:3000 (icon: gitea.png, ping: http://home918.tail9ccc63.ts.net:3000)http://home918.tail9ccc63.ts.net:8989 (icon: sonarr.png, ping: http://home918.tail9ccc63.ts.net:8989)http://home918.tail9ccc63.ts.net:7878 (icon: radarr.png, ping: http://home918.tail9ccc63.ts.net:7878)http://home918.tail9ccc63.ts.net:9696 (icon: prowlarr.png, ping: http://home918.tail9ccc63.ts.net:9696)http://home918.tail9ccc63.ts.net:8080 (icon: sabnzbd.png, ping: http://home918.tail9ccc63.ts.net:8080)/Users/authur/Gemini-local/homepage/config/services.yaml。curl -s http://localhost:3005/api/services 驗證,成功熱重載解析「🟡 NAS1 Home918 (Synology DS918+)」群組與 6 項服務卡片及 Ping 探測配置。mac-mini-pro。mac-mini-pro 本機外接硬碟(Samsung、OWC、TEKQ 等)在 /Volumes/ 產生混淆,經確認改採本機專屬獨立目錄 ~/NAS1/<Share> 架構(免 sudo 權限、集中收納、Finder 與終端機結構最清晰)。~/NAS1/):所有遠端硬碟統一掛載於 ~/NAS1/<Share>(如 ~/NAS1/Multimedia、~/NAS1/Backup、~/NAS1/Downloads、~/NAS1/docker),徹底隔離 /Volumes/,並可直接將 ~/NAS1 釘選至 Finder 側邊欄「喜好項目」。192.168.88.10:445),若跨網段則自動切換為 Tailscale 加密通道 (home918.tail9ccc63.ts.net);若 NAS1 處於關機/休眠狀態則自動提示喚醒指令。.env.local 動態讀取憑證並由 Python 子進程於記憶體中調用 mount_smbfs,密碼完全不經由 shell 命令列傳遞,杜絕 ps 或日誌洩密。Multimedia、Backup、Downloads、docker)。all:一鍵掛載 NAS1 全數 9 個共用資料夾。./nas1-mount-orbstack.sh Multimedia)。-u / --unmount:一鍵安全卸載指定或全部掛載點,並自動清理空資料夾。/Volumes/ 的舊掛載點,消除 SMB session 衝突。/Users/authur/Gemini-local/nas1-mount-orbstack.sh 並賦予執行權限 (chmod +x)。./nas1-mount-orbstack.sh,成功將 Multimedia、Backup、Downloads、docker 掛載於 /Users/authur/NAS1/。/Volumes/ 100% 乾淨無殘留(僅保留本機磁碟),~/NAS1/ 下 4 大共用目錄檔案讀寫完全正常。./nas2-on-orbstack.sh 無法成功 WOL 開機 NAS2,後續手動開機上線,要求排查根本原因。hal_app --nic_wol_support 與 ethtool 查詢:
eth0(Intel I210 板載,00:08:9B:E8:CE:15,192.168.88.20):硬體支援 WOL (yes),驅動層 Wake-on: g(已啟用)。此為目前唯一接線且具備 S5 關機喚醒電路的網卡。eth1(Intel I210 板載,00:08:9B:E8:CE:16):硬體支援 WOL,但實體網路線未連接 (Link: no)。eth2(Realtek r8152 USB 2.5G,00:05:1B:51:0B:77,192.168.88.22):外接 USB 網卡,硬體不支援關機 S5 喚醒 (nic_wol_support: no)。/etc/config/uLinux.conf 內 Wake On Lan = TRUE,確認 NAS2 硬體與系統設定完全正常。mac-mini-pro 同時具備 en0 (10G 有線) 與 en1 (Wi-Fi) 以及虛擬網卡,原腳本僅發送至 255.255.255.255:9,廣播封包易被內核導往 Wi-Fi 或虛擬介面,且無線 AP 普遍過濾/隔離跨網段 UDP 廣播,導致封包未抵達實體交換器。192.168.88.255 與 Port 7,且 wakeonlan 帶 2>/dev/null || true 造成問題無痕隱蔽。192.168.88.255 與全網 255.255.255.255,並覆蓋 Port 9 (Discard) 與 Port 7 (Echo)。eth0 (00:08:9B:E8:CE:15)、eth1 (00:08:9B:E8:CE:16) 與 eth2 (00:05:1B:51:0B:77)。/Users/authur/Gemini-local/nas2-on-orbstack.sh 並賦予執行權限 (chmod +x)。./nas2-on-orbstack.sh,成功發送多通道 Magic Packets,並於 5 秒內精確驗證 NAS2 在線回應。qnap.tail9ccc63.ts.net) 加入 Homepage 現代化門戶,並建立專用遠端掛載腳本將 NAS2 硬碟掛載至 mac-mini-pro。mac-mini-pro 本機外接硬碟在 /Volumes/ 產生混淆,全數收納於專屬目錄 ~/NAS2/<Share>。http://qnap.tail9ccc63.ts.net:8080 (icon: qnap.png, ping: http://qnap.tail9ccc63.ts.net:8080)http://qnap.tail9ccc63.ts.net:3000 (icon: gitea.png, ping: http://qnap.tail9ccc63.ts.net:3000)http://qnap.tail9ccc63.ts.net:8989 (icon: sonarr.png, ping: http://qnap.tail9ccc63.ts.net:8989)http://qnap.tail9ccc63.ts.net:7878 (icon: radarr.png, ping: http://qnap.tail9ccc63.ts.net:7878)http://qnap.tail9ccc63.ts.net:9696 (icon: prowlarr.png, ping: http://qnap.tail9ccc63.ts.net:9696)/Users/authur/Gemini-local/homepage/config/services.yaml。~/NAS2/):所有 NAS2 遠端硬碟統一掛載於 ~/NAS2/<Share>(預設掛載 4 大核心共用資料夾:Public、Backup、Downloads、Container),免 sudo 權限、徹底隔離 /Volumes/。192.168.88.20:445),若跨網段則自動切換為 Tailscale 加密通道 (qnap.tail9ccc63.ts.net);若 NAS2 關機則提示執行 ./nas2-on-orbstack.sh 開機。.env.local 讀取 QNAP_USER 與 QNAP_PASSWORD,透過 Python 子進程於記憶體調用 mount_smbfs -N,全程不經 shell 指令字串或環境變數輸出,杜絕 ps 與日誌外洩。Public、Backup、Downloads、Container)。all:一鍵掛載 NAS2 全數 6 個共用資料夾(含 homes、home)。./nas2-mount-orbstack.sh Public)。-u / --unmount:一鍵安全卸載指定或全部掛載點,並自動清理空資料夾。/Users/authur/Gemini-local/nas2-mount-orbstack.sh 並賦予可執行權限 (chmod +x)。curl -s http://localhost:3005/api/services 驗證,成功熱重載解析「🟠 NAS2 QNAP (QNAP TS-451)」群組與 5 項服務卡片及 Ping 探測配置。./nas2-mount-orbstack.sh,成功將 Public、Backup、Downloads、Container 掛載於 /Users/authur/NAS2/,實測檔案列表與權限完整就緒,/Volumes/ 保持純淨本機磁碟狀態。Container Upgrader(Port 8898 / 反向代理 /container-upgrader/),使其具備跨設備檢視容器、單一容器映像檔更新/重啟與全叢集平行升級能力。TARGETS 新增 nas1(Synology DS918+,192.168.88.10 / home918.tail9ccc63.ts.net)與 nas2(QNAP TS-451,192.168.88.20 / qnap.tail9ccc63.ts.net)。build_remote_wrap 工具函數,針對 Synology(sudo -n /usr/local/bin/docker)與 QNAP(PATH 注入 Container Station 二進位路徑)實現命令透明代理封裝,支援 LAN 高速通道與 Tailscale 自動故障轉移。run_single_action_worker):動態自 docker inspect 取得專屬 docker-compose.yml 檔案路徑(如 sonarr、radarr、prowlarr、sabnzbd、forgejo),執行 docker compose -f <file> pull 並原地 --force-recreate 重載。run_update_all_worker):針對各 NAS 的所有 Compose 目錄循序完成映像檔拉取與服務重載,並於末尾執行 docker image prune -f 自動釋放磁碟空間。HTML_PAGE):
NAS1 (Home918) 與 NAS2 (QNAP) 獨立按鈕與多選核取方塊,並接入後台 5 秒 Socket 存活輪詢與動態日誌分流監看視窗。/Users/authur/Gemini-local/upgrade-containers-web.py 並重啟微服務進程。/api/status?host=nas1 與 /api/status?host=nas2,皆於 1 秒內回傳 online: true 及各 NAS 運作中容器清單(forgejo、prowlarr、radarr、sonarr、sabnzbd)。/api/poll-state 驗證全叢集 5 台主機在線狀態感知運作正常。prowlarr 映像檔拉取與 Compose 原地重載驗證成功,容器順利更新並維持健康在線。sabnzbd,並設定 sonarr 與 radarr 的 Download Client。sabnzbd 容器先前以獨立指令啟動,被掛載於 Docker 預設 bridge 網路,未加入 media-network 自定義網路,導致同在 media-network 之 sonarr 與 radarr 無法解析 http://sabnzbd:8080(CURLE_COULDNT_RESOLVE_HOST)。apiKey 與 NAS2 sabnzbd.ini 實際金鑰不符,導致兩者健康檢查皆觸發 DownloadClientStatusCheck error。/share/CACHEDEV1_DATA/docker/compose/sabnzbd/docker-compose.yml 執行 docker compose up -d 重新建立。sabnzbd 加入 media-network(分配 IP 172.29.4.5,DNS 別名 sabnzbd,實體 Port 8081:8080)。sabnzbd.ini 讀取即時 API 金鑰,透過 REST API 更新 Sonarr (8989) 與 Radarr (7878) 的 Download Client(ID 1):
sabnzbd、Port:8080、分類:tv (Sonarr) / movies (Radarr)。/api/v3/downloadclient/test 觸發即時連線認證測試,全數回傳 HTTP 200 通過。SABnzbd (NAS2)(Port 8081,http://qnap.tail9ccc63.ts.net:8081)卡片。/Users/authur/Gemini-local/homepage/config/services.yaml。sonarr 容器內部執行 curl -I http://sabnzbd:8080 驗證,即時回傳 HTTP/1.1 200 OK。/api/v3/health 端點,原先之 DownloadClientStatusCheck error 紅字錯誤完全排除,下載管線通訊 100% 恢復正常。curl -s http://localhost:3005/api/services 驗證熱重載成功顯示 SABnzbd (NAS2) 卡片。import-passwords-export.sh 匯入密碼至 Vaultwarden 成功後,Telegram 緊接著又跳出「📄 偵測到新的密碼匯出檔,請在 Mac 上執行 ~/Gemini-local/import-passwords-export.sh 匯入 Vaultwarden」重複提示。ls -t 參數擴展陷阱:原腳本使用 csv_file=$(ls -t "$EXPORT_DIR"/*.csv(N) 2>/dev/null | head -1)。當目錄內完全沒有 .csv 檔案時,zsh glob 擴展為空字串,使指令退化為無參數的 ls -t(列出當前工作目錄所有檔案)。因 LaunchAgent(com.authur.passwords-export-watch)工作目錄為根目錄 /,ls -t 回傳了根目錄頂層項目 Volumes,導致 [ -n "$csv_file" ] 恆為 True。import-passwords-export.sh 匯入成功後會將原 CSV 檔案安全刪除,此刪除動作觸發了 LaunchAgent 的 WatchPaths 監聽。隨後觸發的 notify-passwords-export.sh 誤將 Volumes 當成新上傳的 CSV 檔案,發送了錯誤的 Telegram 通知。notify-passwords-export.sh 與 import-passwords-export.sh:
files=($EXPORT_DIR/*.csv(N.om))(N: nullglob、.: 僅限一般檔案、om: 依修改時間由新到舊排序)。${#files[@]} -eq 0 精準判斷檔案存在與否,在無 CSV 檔案時立即安全退出 (exit 0 / exit 1),徹底根絕無參數 ls -t 引起的目錄竄位誤判。/Users/authur/Gemini-local/.passwords-export-notified(原內容為 Volumes)。~/Gemini/ 與 ~/Gemini-local/ 並賦予執行權限。notify-passwords-export.sh,回傳 Exit Code 0,無標記檔生成且完全無誤報通知發出。import-passwords-export.sh,精準輸出找不到 CSV 提示並乾淨結束。seerr 容器 (ghcr.io/seerr-team/seerr:latest,Jellyseerr/Overseerr),供媒體搜尋、請求發起與進度追蹤。/volume1/docker/compose/seerr/ 與資料夾 /volume1/docker/seerr/config,並軟連結至 /volume1/docker/.env.local。ghcr.io/seerr-team/seerr 內部以 node (UID 1000) 運行,在 Synology DSM 下會因無權限寫入掛載目錄而拋出 EACCES: permission denied, mkdir '/app/config/logs/';透過在 docker-compose.yml 注入 user: "${PUID}:${PGID}"(對應 1026:100),成功以 DSM 原生使用者權限啟動容器。media-network 外部網路,實體埠綁定 5055:5055,順利完成首次啟動。/share/CACHEDEV1_DATA/docker/compose/seerr/ 與資料夾 /share/CACHEDEV1_DATA/docker/seerr/config,軟連結至 /share/CACHEDEV1_DATA/docker/.env.local。user: "${PUID}:${PGID}",加入 media-network 外部網路,實體埠綁定 5055:5055,透過 Container Station docker compose up -d 順利拉取並啟動。nas1 與 nas2 的 compose_dirs 均納入 seerr 目錄。docker ps 與 docker inspect 之耗時(約 10~11 秒),將查詢逾時由 8 秒放寬至 20 秒,避免偶發判定離線,確保全叢集監控穩定。/api/status?host=nas1 與 nas2,精準識別 seerr 運作狀態。Seerr (Home918):http://home918.tail9ccc63.ts.net:5055 (icon: overseerr.png, ping: http://home918.tail9ccc63.ts.net:5055)。Seerr (NAS2):http://qnap.tail9ccc63.ts.net:5055 (icon: overseerr.png, ping: http://qnap.tail9ccc63.ts.net:5055)。~/Gemini-local/homepage/config/services.yaml 與 ~/Gemini-local/upgrade-containers-web.py。http://192.168.88.10:5055 與 http://192.168.88.20:5055,皆回傳 HTTP/1.1 307 Temporary Redirect -> Location: /setup,兩台 NAS 之 Seerr 初始化精靈均順暢運作。curl -s http://localhost:3005/api/services 驗證,成功熱重載解析兩組 Seerr 卡片與即時 Ping 探測。nas1 與 nas2 容器列表均已完整列出 seerr,支援一鍵更新與 Compose 原地重載。Plex Media Server (lscr.io/linuxserver/plex:latest),供兩台 NAS 原生串流媒體庫播放。/volume1/docker/compose/plex/ 與資料夾 /volume1/docker/plex/config、/volume1/docker/plex/transcode,並軟連結至 /volume1/docker/.env.local。docker-compose.yml,採 network_mode: host 模式以原生支援區域網路 GDM 自動探索 (UDP 32410-32414)、DLNA (UDP 1900) 與用戶端 Direct Play 免頻寬降速限制。/volume1/Multimedia/Movies:/movies、/volume1/Multimedia/TV Shows:/tv 與 /volume1/Multimedia:/data/media。devices: - /dev/dri:/dev/dri,啟用 Intel Celeron J3455 原生 QuickSync 硬體轉碼支援。sudo -n docker compose up -d,順利拉取並啟動容器。/share/CACHEDEV1_DATA/docker/compose/plex/ 與資料夾 /share/CACHEDEV1_DATA/docker/plex/config、/share/CACHEDEV1_DATA/docker/plex/transcode,並軟連結至 /share/CACHEDEV1_DATA/docker/.env.local。network_mode: host 模式,掛載 /share/CACHEDEV1_DATA/Multimedia/Movies:/movies、/tv 與 /data/media。devices: - /dev/dri:/dev/dri,啟用 Intel Celeron J1800 原生硬體轉碼支援。docker compose up -d 順利拉取並啟動容器。nas1 與 nas2 的 compose_dirs 均納入 plex 目錄。/api/status?host=nas1 與 nas2,精準識別 plex 運作狀態。Plex (Home918):http://home918.tail9ccc63.ts.net:32400/web (icon: plex.png, ping: http://home918.tail9ccc63.ts.net:32400/identity)。Plex (NAS2):http://qnap.tail9ccc63.ts.net:32400/web (icon: plex.png, ping: http://qnap.tail9ccc63.ts.net:32400/identity)。~/Gemini-local/homepage/config/services.yaml 與 ~/Gemini-local/upgrade-containers-web.py。http://192.168.88.10:32400/identity 與 http://192.168.88.20:32400/identity,皆回傳 HTTP/1.1 200 OK,Plex 核心就緒。http://192.168.88.10:32400/web/index.html 與 http://192.168.88.20:32400/web/index.html,皆回傳 HTTP/1.1 200 OK。curl -s http://localhost:3005/api/services 驗證,成功熱重載解析兩組 Plex 卡片與 /identity 免認證 Ping 探測。nas1 與 nas2 容器列表均已完整列出 plex,支援一鍵更新與 Compose 原地重載。POST /api/v3/rootfolder,成功新增 /tv(對應實體 /share/CACHEDEV1_DATA/Multimedia/TV Shows)。POST /api/v3/rootfolder,成功新增 /movies(對應實體 /share/CACHEDEV1_DATA/Multimedia/Movies)。/tv、Radarr /movies)。media-network 內部網路,可直接使用內部 DNS 別名通訊(http://sonarr:8989、http://radarr:7878)。HD-1080p 均為 ID 4)。GET /api/v3/rootfolder 驗證,NAS2 之 Sonarr 與 Radarr 根目錄清單已精確回傳 ['/tv'] 與 ['/movies']。/movies、TV Shows /tv),並於 Seerr 完成管理者帳號登入。settings.json 提取 Seerr 本機 API 金鑰,自 config.xml 提取 Sonarr 與 Radarr API 金鑰(零密碼外洩機制)。POST /api/v1/settings/radarr:成功將兩台 NAS 的 Radarr 加入 Seerr(主機別名 radarr:7878,根目錄 /movies,品質 HD-1080p ID 4)。POST /api/v1/settings/sonarr:成功將兩台 NAS 的 Sonarr 加入 Seerr(主機別名 sonarr:8989,根目錄 /tv,品質 HD-1080p ID 4)。POST /api/v1/settings/initialize:完成 Seerr 全域初始化,轉為正式營運狀態。POST /api/v3/notification:在 NAS1 與 NAS2 分別建立 Plex (Home918) 與 Plex (NAS2) 通知器(Port 32400,啟用 updateLibrary、onDownload、onUpgrade、onRename)。POST /api/v3/notification:在 NAS1 與 NAS2 分別建立對應之 Plex 通知器。/login(完全脫離 /setup 精靈模式)。25 調降至 50,使主力站台(DrunkenSlug、NZBgeek、NZBFinder)優先承接 95% 以上之常規熱門搜尋;僅在無符合結果時轉由 altHUB 補刀,降低 80% 以上不必要的 API 消耗。baseSettings.queryLimit = 200,確保面對大量佇列時主動煞車熔斷,杜絕超額請求。prowlarr.db,成功重載生效(驗證 Priority: 50, Query Limit: 200)。sqlite3 呼叫 json_set 寫入配置並原地重啟容器(驗證 Priority: 50, Query Limit: 200)。Priority = 50 且 queryLimit = 200。nas1-on-orbstack.sh 喚醒 NAS1(驗證略過重複備份並保持開機在線)。/usr/bin/sqlite3 更新 NAS1 Prowlarr 之 prowlarr.db,將 altHUB 優先權設為 50、每日查詢上限設為 200,重啟容器後驗證 API 生效。至此全叢集三節點(Mac Mini、NAS1、NAS2)已 100% 達成防護一致性。watchlistSyncMovies 與 watchlistSyncTv 均重設為 0 (False),徹底杜絕 Plex 待播清單自動轉入下載佇列。0 個任務 / 0.00 MB。0,電影狀態全數標記為未監控。mac-pro 與 mac-mini 已開機,指示將剩餘主機的 Prowlarr 索引器防護問題全面處置完畢。192.168.88.88) SSH 連線至 mac-pro(使用者 authur,免密認證通過)。~/Library/Application Support/Prowlarr/prowlarr.db 資料庫。sqlite3 與 json_set 將 altHUB 優先權由 25 降級至 50,並配置每日上限 baseSettings.queryLimit = 200。Priority = 50 與 Query Limit = 200 正常生效中。mac-mini-pro 雖為 7×24 常開但硬碟容量小;mac-pro 與各 NAS 儲存容量大但為按需開機且各自 Root Folders 完全不同),拍板定案採行「方案 A」作為全域 Watchlist 之標準運作模式。user_settings 之 watchlistSyncMovies = 0 與 watchlistSyncTv = 0,重啟容器生效。0 / 0。0 / 0。plex.tv 雲端書籤收藏,全叢集絕不擅自於背景發動下載或消耗頻寬。https://mac-mini-pro.tail9ccc63.ts.net:15055/),於 Watchlist 清單中挑選欲觀賞之影片點選「Request」,並於彈出視窗精準指定「目標主機」與「Root Folder / 品質等級」,達成 100% 受控之最佳容量配置。100.77.134.80(mac-pro.tail9ccc63.ts.net)連線,避開 macOS 雙網卡(2.5G LAN + Wi-Fi)之 ARP 路由衝突,預設目錄 /Volumes/EXOS3/Multimedia/Movies(12 TB 空閒空間),品質 Profile 1080P/4K (ID 7)。/Volumes/EXOS3/Multimedia/TV Shows,品質 Profile 1080P/4K (ID 7)。192.168.88.10:7878):根目錄 /movies(17.8 TB 空閒空間),Profile 1080P/4K (ID 7)。192.168.88.10:8989):根目錄 /tv(17.8 TB 空閒空間),Profile 1080p/4K (ID 7)。192.168.88.20:7878):根目錄 /movies(1.6 TB 空閒空間),Profile HD-1080p (ID 4)。192.168.88.20:8989):根目錄 /tv(1.6 TB 空閒空間),Profile HD-1080p (ID 4)。Radarr / Sonarr 更名為 Mac Mini,確保下拉選單辨識度極高。GET /api/v1/settings/radarr 與 GET /api/v1/settings/sonarr),4 大伺服器節點(Mac Mini、Mac Pro、NAS1、NAS2)全數註冊完成且連線測試 100% 通過(HTTP 200)。/api/v1/service/radarr/2 與 /api/v1/service/sonarr/1,Mac Pro 的所有 12 顆硬碟 Movies 與 TV Shows 根目錄清單即時動態回傳,使用者點播時下拉選單與各機硬碟目錄均能流暢切換!DELETE /api/v1/request/{id})精確分批刪除 30 筆目標請求:
https://mac-mini-pro.tail9ccc63.ts.net:8449/web/index.html 出現 404 Not Found。http://127.0.0.1:32400/web/index.html) 亦直接回傳 404。e5521bd8c;然而記憶體中舊程序(PID 60341, Build 00f62d37d)未被正確釋放,導致其持續嘗試讀取已被刪除之舊目錄 Plug-ins-00f62d37d/WebClient.bundle,Web UI 因而全面 404。launchctl kickstart -k gui/$(id -u)/com.authur.plex 優雅重啟服務。Plug-ins-e5521bd8c/WebClient.bundle。https://mac-mini-pro.tail9ccc63.ts.net:8449/web/index.html 均即時回傳 HTTP/2 200 OK,Plex 網頁版管理介面 100% 恢復正常。launchd 常駐程序搶佔 Port 32400 導致舊程序殘留、WebUI 404 之問題,建立常駐式自動自癒機制,一勞永逸徹底免除人工排查。scripts/plex-watchdog.sh):
/identity 正常(HTTP 200)」但「網頁端 /web/index.html 找不到目錄(HTTP 404)」之版本分裂孤兒特徵。launchctl kickstart -k gui/$(id -u)/com.authur.plex 平滑重啟對接新版外掛,4 秒後自動複檢確認復原。/Users/authur/Gemini-local/scripts/plex-watchdog.sh。com.authur.plex-watchdog.plist):
StartInterval = 300(每 5 分鐘自動巡檢一次)。~/Library/LaunchAgents/com.authur.plex-watchdog.plist 並即時載入啟用(launchctl load)。stop-work-orbstack.sh 平滑關閉容器叢集。sync; sync)。mac-pro-off 與 drives-off 智慧插座電源關閉指令。nas1-pull-orbstack.sh 完成專案變更與 Forgejo 同步。sudo poweroff),於 25 秒內安全排空關機。/sbin/poweroff 指令,於 65 秒內安全關機完成。192.168.88.88、100.77.134.80、192.168.88.10、192.168.88.20 全數呈 OFFLINE 離線斷電狀態,全節點磁碟與快取安全無虞。restaurant_booking_web.py,Port 8899):
restaurants_config.json):
.env.local 動態載入 Telegram 憑證,訂位發動與成功回報時自動發送 Telegram 訊息。osascript) 與系統音效提醒。http://localhost:8899/,Web 管理控制台、REST API (/api/restaurants、/api/tasks、/api/logs) 運作 100% 正常。https://...:8899 無法開啟。https://...:8899 請求時會觸發 TLS 加密握手失敗(alert protocol version)。/restaurant-booking/ 路由與 redir,代理轉發至 host.docker.internal:8899。caddy validate 驗證語法正確後,平滑重啟 caddy-orbstack 容器生效。fetch 調用改為動態 API_BASE,使前端在根路徑 (:8899) 與反向代理子路徑 (/restaurant-booking/) 雙通道下均順暢運作。https://mac-mini-pro.tail9ccc63.ts.net:8449/restaurant-booking/,圖示套用 mdi-silverware-fork-knife-#f59e0b(琥珀金刀叉餐具)。~/Gemini-local/(包含 Caddyfile、restaurant_booking_web.py、services.yaml)。https://mac-mini-pro.tail9ccc63.ts.net:8449/restaurant-booking/,成功透過 Tailscale 正式 HTTPS 與 Authelia SSO 存取。/Users/authur/Gemini-local/restaurant_booking_web.py 並重啟背景常駐程序。https://inline.app/booking/-MX-yyjCqn5gCDe7CBbr/Users/authur/Gemini-local/restaurants_config.json。/api/restaurants REST API 驗證,成功即時載入「新竹煙波大飯店 湖濱館 - 莫內饗宴」,訂位主控台下拉選單與各時段切換運作正常。#confirmBookingModal 視窗,提供結構化訂位摘要卡片(包含餐廳、日期/時段或自動搜尋最早空位、用餐人數、訂位人與手機、執行瀏覽器 Mac Safari)。open -a Safari <url>。/api/tasks/<id>/launch_browser 端點(並相容 launch_chrome)。python3 -m py_compile 語法檢驗。/Users/authur/Gemini-local/restaurant_booking_web.py 並平滑重啟背景常駐 Daemon。.env.local 秘密管理整合:
.env.local 集中秘密管理(BOOKING_CONTACT_PHONE、BOOKING_CONTACT_EMAIL、BOOKING_CONTACT_NAME),嚴格符合零明碼秘密政策。~/Gemini-local/.env.local。0912****78 遮罩字串,真實電話完全不經過網路前端傳遞。**** 之遮罩字串時,自動由本機 .env.local 安全注入真實 10 碼電話,既保證訂位平台收到正確號碼,又避免網頁傳輸洩漏明碼。0912****78 並標記「🔒 隱私遮罩啟用」。mask_phone() 與 mask_email() 脫敏顯示。mask_phone() 遮罩處理,杜絕任何敏感手機號碼落盤或外洩。GET /api/tasks) 一律回傳脫敏後之電話號碼。/Users/authur/Gemini-local/restaurant_booking_web.py 並平滑重啟服務。0912****78 後,後端精準還原 10 碼真實手機號碼,且查詢端與日誌端全程保持 0912****78 遮罩,功能驗證 100% 通過。.env.local 多 Profile 設定規範)name1+phone1 與 name2+phone2),並詢問如何在 .env.local 填入配置。.env.local 多 Profile 命名規範與配置落地:
.env.local 中建立清晰的序號命名規範(支援 1 至 9 組):# 第 1 組常用訂位人
BOOKING_CONTACT_1_NAME="林先生"
BOOKING_CONTACT_1_PHONE="0912345678"
BOOKING_CONTACT_1_EMAIL="authurlin@gmail.com"
# 第 2 組常用訂位人
BOOKING_CONTACT_2_NAME="林太太"
BOOKING_CONTACT_2_PHONE="0987654321"
BOOKING_CONTACT_2_EMAIL="authurlin@gmail.com"
BOOKING_CONTACT_NAME 等)之向下相容降級機制。<select id="profileSelect">,自動讀取後端解析出的所有設定組別並顯示「👤 第 1 組: 林先生 (091278 - 常用 1)」與「👤 第 2 組: 林太太 (098721 - 常用 2)」。load_booking_profiles(),自動動態讀取 BOOKING_CONTACT_{N}_*。/api/profile 回傳脫敏後的 profile 列表,/api/profile/reveal 提供各組 profile 真實資訊對照供瀏覽器端 Bookmarklet 動態取用。POST /api/tasks 依據任務攜帶之 profile_id 精準還原對應組別之真實 10 碼電話,全程遵循 Zero Plain-Text Secrets 安全規範。python3 -m py_compile 語法檢驗。/Users/authur/Gemini-local/restaurant_booking_web.py 與 ~/Gemini-local/.env.local。curl 實測確認 API 成功回傳多組 Profile 資訊。🛡️ 需手動確認」(代表需肉眼核對後手動確認送出)或「⚡ 全自動秒殺」(無人值守秒殺)。⏰ 等待開搶」(SCHEDULED)、「🚀 搶位進行中」(RUNNING)、「🎉 訂位成功」(SUCCESS)。🚫 取消搶位」,彈出確認對話框「確定要取消此搶位排程任務嗎?」。🗑️ 刪除紀錄」,彈出「確定要刪除此筆歷史訂位紀錄嗎?」。✅ 回報訂位成功 (推播 Telegram)」,清晰告知點擊後將連動觸發 Telegram Bot 推播通知。~/Gemini-local/。https://inline.app/booking/-MX-yyjCqn5gCDe7CBbr 缺少 inline 系統集團分店與語系後綴,造成 inline Router 無法匹配該餐廳分支而拋出 404。https://inline.app/booking/-MX-yyjCqn5gCDe7CBbr:inline-live-2/-MX-yytm3G1ci3oFvkwp?language=zh-tw。hsinchu_lakeshore_monet 網址。booking_tasks.json,使其點擊「Safari 開啟」時即刻導向正確頁面。py_compile 檢驗並同步更新至本機 SSD ~/Gemini-local/。GET /api/export_bookmarks):
📁 🍽️ Gemini 智慧餐廳搶訂專區,內建:
⚡ 萬用一鍵代填 (任何訂位網頁通用)py_compile 並同步至 SSD ~/Gemini-local/,服務平滑重啟。https://www.feastogether.com.tw/booking/Sunrisexuji_tainan 餐廳定義。/api/export_bookmarks 端點自動納入「📌 旭集 和食集錦 - 台南西門店 (直達+代填)」。py_compile 並同步至 SSD ~/Gemini-local/,背景 Daemon 服務平滑熱重載。task_1791704488 之模式屬性設定為 "confirm_mode": "auto"。~/Gemini-local/booking_tasks.json。restaurant_booking_web.py) 之 Telegram 推播、.env.local 敏感秘密隔離與 Safari 原生書籤整合架構,打造鎖定國內外目標飯店平日價格波動的「低價訂房雷達與請假出遊決策系統 (Gemini Hotel Price Radar & Leave Optimizer)」。.env.local 動態注入 Telegram 憑證,推播結構化 HTML 卡片與 macOS 原生橫幅。py_compile 語法檢驗,執行 python3 hotel_radar_service.py --days 60 --notify 實測:
/Users/authur/Gemini-local/(包含 hotel_radar_service.py、hotels_config.json、hotel_sweet_spots_safari_bookmarks.html)。domestic_self_drive(國內自駕:新竹煙波湖濱館、礁溪老爺、台南晶英)與 international_flight(國外出遊:博多東急REI、登別まほろば、札幌索拉利亞西鐵)分類欄位。flight_config),以及飯店 100% 官網直營保障宣告 (hotel_policy)。mdi-bed-king-#38bdf8 天藍色奢華大床圖示)。/hotel-radar/ 反向代理路由轉發至 host.docker.internal:8887。caddy validate 語法驗證通過後,重啟 caddy-orbstack 與 homepage-orbstack 容器生效。~/Gemini-local/(包含 services.yaml、Caddyfile、hotel_radar_web.py、hotels_config.json、hotel_radar_service.py)。https://mac-mini-pro.tail9ccc63.ts.net:8449/hotel-radar 時回報 404 This page could not be found.。Caddyfile 最上方配置了 admin off(未啟用 2019 管理 API,無法執行靜態熱重載)。運行中的 caddy-orbstack 容器啟動於 17:46:19,當時磁碟設定檔尚未完成落盤同步,因此記憶體中尚未包含 /hotel-radar 路由。未匹配的請求落入最後的預設 fallback(reverse_proxy homepage-orbstack:3000),由 Homepage (Next.js) 回應 404。fetch('/api/scan') 等,在反向代理子路徑下會逃逸至根路徑。HEAD 請求,原先未實作 do_HEAD 導致記錄 501。/api/scan、/api/launch_safari、/api/notify_telegram 及書籤下載連結全數改為相對路徑 ./api/...。RadarWebHandler 補齊 do_HEAD 方法回傳 HTTP 200,徹底解決 Homepage ping 探測報錯。hotel_radar_web.py(Port 8887),並執行 docker restart caddy-orbstack 重新載入最新配置。curl -k -IL "https://mac-mini-pro.tail9ccc63.ts.net:8449/hotel-radar" 驗證:
HTTP/2 302 Found 導向 /hotel-radar/。~/Gemini-local/hotel_radar_web.py。#1、#2...)、星期辨識(週末以琥珀金凸顯、平日以天藍呈現)與單鍵移除按鈕(✕)。createTask 提交時格式化 target_date 為清楚的多選摘要字串(如 2026-10-15, 2026-10-16 (共 2 個候選日期)),並同時傳入 target_dates 陣列,兼顧 Telegram 推播、任務卡片檢視與後端執行。BookingRequestHandler 補齊 do_HEAD 方法回傳 HTTP 200,全面相容 Homepage ping 存活檢測。py_compile 語法檢驗,重啟本機背景進程 restaurant_booking_web.py(Port 8899)。curl -sI http://127.0.0.1:8899/ 實測 HEAD 請求回傳 HTTP 200 OK。~/Gemini-local/restaurant_booking_web.py。2027-01-01 至 2027-01-31)與預計休假天數(請 1 天、2 天、3 天、4 天或不限)。HolidayCalendar 擴充完整 2026 至 2027 台灣(元旦、春節、清明、端午、中秋、國慶)與日本(元日、成人之日、春分、黃金週、海之日、山之日、敬老之日、秋分、體育之日、文化之日、勤勞感謝之日)國定連假與大連休資料庫。plan_trip):
plan_trip(start_date, end_date, leave_days, destination) 方法,可在使用者指定的任意跨年份日期區間內,自動過濾目的地目標飯店,精準比對平日破盤最低價與連休槓桿甜蜜點。/api/plan 局部熱重載甜蜜點推薦卡片與月曆。py_compile 語法檢驗,重啟本機背景進程 hotel_radar_web.py(Port 8887)。curl -s "http://127.0.0.1:8887/api/plan?start_date=2027-01-01&end_date=2027-01-31&leave_days=2&destination=international_flight":
~/Gemini-local/(包含 hotel_radar_service.py 與 hotel_radar_web.py)。11/6、11/13、11/20、11/27 四個日期,但畫面下方候選清單永遠只顯示最後 1 筆。<input type="date"> 的 onchange="onTargetDateChange(this.value)" 事件處理函式中,存在單選時覆蓋陣列的邏輯(selectedDates = [val]),導致每次在日曆選取新日期時,前一次選取的日期都被替換,無法直接連續累積多個日期。onTargetDateChange 為自動累加機制 ([restaurant_booking_web.py](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/restaurant_booking_web.py)):
selectedDates.push(val) 累加加入候選陣列並排序,不再替換先前已選日期。addFridaysQuickly):
✕ 按鈕時,精確移除該日期,支援完全清空或重新挑選。/Users/authur/Gemini-local/restaurant_booking_web.py。curl -sI http://127.0.0.1:8899/ 驗證回傳 HTTP 200 OK。country 與 country_name 屬性(台灣 🇹🇼、日本 🇯🇵、泰國 🇹🇭、越南 🇻🇳)。JPY: 1/4.8, THB: 0.92, VND: 0.0013, TWD: 1.0,確保各國房價與 CP 值客觀評分具備一致性。plan_trip 核心演算法擴充支援 country 國家精準篩選及 hotel_names 多條件模糊比對過濾。不限天數、1 天、2 天、3 天、4 天、5 天)及單擊快捷膠囊按鈕,清爽俐落。🇯🇵 日本,並提供 🇹🇭 泰國、🇻🇳 越南、🌐 國外全部),提示文字動態切換。🇹🇭 泰國 | ✈️ 國外 | 泰國曼谷)。py_compile 語法檢驗,重啟 Port 8887 常駐背景服務。hotel_radar_verified):
~/Gemini-local/(包含 hotels_config.json、hotel_radar_service.py、hotel_radar_web.py)。"JR Tower Hotel Nikko Sapporo"),動態生成住宿模型與比價曲線即時納入運算。hotel_radar_service.py 新增 create_custom_hotel() 函式,動態建構使用者自訂飯店之價格曲線與直達連結。detect_split_stay_spots() 跨飯店換宿組合演算法,支援靈活分配住宿晚數與總額計算。~/Gemini-local/(hotels_config.json、hotel_radar_service.py、hotel_radar_web.py)。scripts/generate_worklog_html.py 產出最新 WORKLOG.html 並同步至 ~/Gemini-local/。HolidayCalendar 建立 2026~2027 台灣各大國定連假與春節年假期間陣列(HOLIDAY_PERIODS)。detect_sweet_spots() 演算法重構為三大避峰模式:
pre_holiday:針對指定查詢區間,動態比對各大連假首日前 3、4、5 天出發之連續平日房價與極致省荷包趴數。post_holiday:動態鎖定各大連假/春節收假日隔天(開工日)出發 3、4、5 天,精算開工後房價雪崩回落之超值甜蜜點。regular_weekday:針對無大連假之常規月份,自動推薦每週「週日或週一出發」3~5 天,避開週末五六人潮高峰與加價。detect_split_stay_spots():跨飯店換宿組合(Split Stay)同步支援連假前夕搶先遊與年假後隔天開工出發。plan_trip() 新增 trip_type 精準篩選參數。🌐 全部避峰推薦 (all)🎯 連假前 3~5 天搶先出發 (避開人潮) (pre_holiday)🏖️ 年假/連假後隔天出發 3~5 天 (雪崩低價) (post_holiday)🌿 常規平日低價避峰 (regular_weekday)🎯 連假前 3~5 天出發 (2027 春節年假)、🏖️ 年假/連假後隔天出發 (2027 春節年假)、🔀 跳宿雙享 | 🎯 連假前夕搶先遊)。task-1317)。~/Gemini-local/(hotel_radar_service.py、hotel_radar_web.py)。scripts/generate_worklog_html.py 產出最新 WORKLOG.html 並同步至 ~/Gemini-local/。<input type="date"> 改為更直覺便利的下拉式選單 (<select>) 來選擇日期。planStartDate 與 planEndDate 由 <input type="date"> 替換為結構化 <select class="col-input select-styled">。<optgroup> 月份醒目标題與 <option> 選項高對比排版。populateDateDropdowns() 函式,自動生成 2026 年 10 月至 2027 年 12 月完整可選日期清單。<optgroup> 結構化分組(如 2027 年 1 月 (元旦連假)、2027 年 2 月 🧨 (春節年假/228))。2027-01-01 (週五・元旦連假)、2027-02-05 (週五・春節除夕))。task-1354)。hotel_radar_date_dropdown_demo):
~/Gemini-local/hotel_radar_web.py。scripts/generate_worklog_html.py 產出最新 WORKLOG.html 並同步至 ~/Gemini-local/。2027-01-01),點開無法滾動挑選其他日期。calendarPickerModal)因絕對定位覆蓋在下方內容,干擾並阻擋操作視線。generate_date_options_html(),於伺服器端全量預先渲染 2026 年 10 月至 2027 年 12 月(涵蓋 450+ 天)之完整 <optgroup> 月份分組與 <option> 選項。task-1443)。~/Gemini-local/hotel_radar_web.py。scripts/generate_worklog_html.py 產出最新 WORKLOG.html 並同步至 ~/Gemini-local/。detect_split_stay_spots 僅針對連假前後(3~4 晚)與常規週(3 晚)進行硬編碼拆分,當選擇「休假 5 天」(4~5 晚出遊)時未覆蓋此組合,導致 API 回傳 0 組推薦。selectedHotelIds(存放飯店 ID)與段落屬性 seg.hotel_name 進行 includes 判定,導致所有跳宿卡片全數被前端篩選器剔除。detect_multi_hotel_split_stays() 核心演算法:
[2, 2] 各住 2 晚。[2, 1, 1](一間住 2 晚,其餘各 1 晚)。[2, 3] / [3, 2] 或 [2, 2, 1] 組合。plan_trip,精確產出兼顧名宿體驗與房價省錢效益之跳宿組合。s.split_segments.map() 動態生成 2 段或 3 段入住/退房區塊與對應的多個直達訂房按鈕(🧭 訂房 1、🧭 訂房 2、🧭 訂房 3)。seg.hotel_id 精確比對 selectedHotelIds。~/Gemini-local/。book.okura.com)比對 2026 年 12 月真實房價:
HolidayCalendar.JP_HOLIDAYS 中將 12/24 ~ 12/31(クリスマスイブ、クリスマス、年末休暇、大晦日)與正月、札幌雪祭全面登錄為重大節日。is_super_peak_date() 判定函式,嚴格識別 12/24~01/03 聖誕跨年、雪祭與春節期間。simulate_or_fetch_daily_price 中,若屬 is_super_peak,房價乘數直接採用官網實測倍率 2.55x ~ 2.95x(計算價 73,500 ~ 82,600 JPY,完美吻合官網 81,500 JPY)。is_flash_sale 設為 False,折率標記為溢價(-160% ~ -178%)。detect_sweet_spots 中將跨入 12/24~12/31 的行程徹底排除在「平日避峰低價」推薦之外。.cal-day.super-peak 深紅紫晶霓虹高光樣式。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html。plan_trip 與 detect_multi_hotel_split_stays:
leave_days 時,目標晚數嚴格約束為 target_nights = max(1, leave_days - 1)(例如請假 5 天嚴格鎖定 4 晚,絕不出現 5 個晚上)。(x.total_price, -x.cp_score) 升冪排序(最低總價排在最前)。2026-12-07 (週一) — 最低 JPY 60,680 起)。Unique nights in results: {4}(100% 嚴格為 4 晚),且 is_sorted == True(嚴格由最低總價 JPY 60,680 起遞增)。hotel_radar_departure_and_sort)驗證通過:出發日選取、熱力矩陣點擊連動與排序切換全數流暢運行。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html。rating(評分):JR Tower 4.6★、Grand 4.3★、Solaria 4.5★、Keio 4.4★、OMO3 4.3★ 等。station_distance(距離):🚶 0分 (JR札幌站直通)、🚶 2分 (舊道廳旁・近札幌站) 等。distance_mins(數值分鐘數):用於精確排序。HotelConfig 與 SweetSpotOption 納入 rating 與 station_distance,並經 API 即時傳遞。🥇 嚴選 1 家 (單宿專精):自動連動單一飯店模式,預設挑選綜合評價最高者。🥈 搭配 2 家 (雙宿雙享 2+2晚):自動連動跳宿雙享模式,上限鎖定 2 間。🥉 巡禮 3 家 (三宿巡禮 2+1+1晚):自動連動三宿巡禮模式,上限鎖定 3 間。🌟 自由選 (1~5家):無上限自由勾選。已選 2 / 2 家),超額點擊時採智慧先進先出(FIFO)無縫替換,操作直覺順暢。⭐ 評價高至低、🚶 離車站最近、💰 價錢低至高,點擊即時重新排列飯店清單。hotel_features_and_count_limit)驗證通過:1~3 家切換、距離/評價/價格指標展示、排序切換與卡片動態重算皆正常運行。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html。🏖️ 年假/連假後隔天出發 3~5 天 (雪崩低價)),冗長且易與使用者實際挑選之休假天數產生混淆。🏖️ 隔天出發 (雪崩低價)。🎯 連假前出發 (避開人潮)。vacation_days = leave_days。📅 行程:起日 ~ 訖日 (旅遊 N 天 | 住宿 N-1 晚)。verify_next_day_departure_label)驗證通過:按鈕文字乾淨利落顯示「🏖️ 隔天出發 (雪崩低價)」,無任何冗餘天數文字。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html。renderCards() 先前在過濾飯店清單時使用 s.split_segments.some(...),只要三宿組合中任一段落包含所選飯店便誤判通過。hotelCountLimit === 2 之段落長度嚴格約束(未強制限定 split_segments.length === 2)。hotelCountLimit === 2(搭配 2 家),強制要求 s.is_split_stay && s.split_segments && s.split_segments.length === 2,100% 杜絕任何三宿巡禮卡片滲漏。hotelCountLimit === 1(嚴選 1 家),強制要求 !s.is_split_stay(僅顯示單一飯店)。hotelCountLimit === 3(巡禮 3 家),強制要求 split_segments.length === 3。.every(seg => hotelList.includes(...)),徹底廢除 .some 寬鬆判定)。selectedHotelIds 型別相容邏輯,確保發送 API 時帶入精確的 &hotels=... 參數,避免後端撈取全量飯店導致三宿過度運算。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html。已選 undefined / 2 家,且下方原本應顯示的飯店清單(Chips / Badges)完全空白消失。sortHotelsArray() 存取之 currentHotelSortBy 全域變數漏未初始化宣告,頁面在 DOMContentLoaded 第一時間呼叫 renderHotelChips() 時立即拋出 ReferenceError: currentHotelSortBy is not defined,導致渲染中斷。Set 與 Array,導致在計算 selectedHotelIds.length 時取得 undefined(呈現 已選 undefined / 2 家),且 Array.includes 與 Set.has 語法衝突。populateDepartureDropdown 等函式宣告,觸發連鎖中斷。selectedHotelIds 100% 統一宣告為原生陣列 [],所有新增、移除、長度讀取全面使用陣列標準 API(length, includes, push, filter, splice)。currentHotelSortBy = 'rating'、hotelCountLimit = 2 等狀態變數,杜絕任何 ReferenceError。populateDepartureDropdown、onDepartureDateChange 等出發日互動函式。DOMContentLoaded 生命週期內 100% 零錯誤執行。hotelChipsGrid 正常渲染所有官方指標飯店與自訂飯店 Badges(含名稱、價錢、評分、離車站距離與勾選狀態「✓ 已加入」/「+ 加入」)。已選 2 / 2 家)。verify_hotel_list_fixed)驗證通過:
已選 2 / 2 家」(無 undefined)。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html。🌿 破盤 -35.9%),卻未顯示實際每晚金額;使用者無法一眼得知當日到底每晚多少錢。!item.is_weekday(週五亦非純平日)直接硬編碼輸出 tagText = 週六 ${priceStr},導致日曆中「週五」欄位(如 12-04、12-11、12-18)全部被錯誤標為「週六 2.4萬」,造成使用者嚴重困惑。🌿 超值破盤 (折扣 ≥ 20%)、⚪ 常態平日、🟡 週五微調、🟠 週六加價、🔴 🔥 跨年旺季。12-04 週五)。¥1.2萬、¥1.7萬、¥2.2萬、¥2.8萬、¥5.0萬)。🌿 省 36%、週五微調、週六週末、🔥 跨年旺季)。Solaria 舊道廳、JR Tower)。Date.getDay() 精確判定 0=週日、5=週五、6=週六,徹底修正週五誤植為週六的硬編碼 Bug。.is-selected),出發日選單與方案列表即時同步篩選重排。heatmap_matrix_final 與 heatmap_matrix_december_proof 截圖證據):
~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html。🌟 自由選 (1~5家),加上畫面初始僅 5 間飯店,導致使用者誤以為系統有「只能列出 5 間飯店」的硬性上限。DESTINATIONS_MAP['rmq_sapporo'] 正式登錄:
👑 Hotel Mahoroba (登別溫泉まほろば)(雙人約 35,000 JPY、4.6★、新千歲特急專車直達、三大蟹吃到飽百匯與源泉私湯)。♨️ 第一瀧本館 (登別地獄谷名湯)(地獄谷第一泉天國、32,000 JPY、4.5★)。🌟 自由選 (全選/無上限),計數徽章支援動態無上限計算(例如 已選 8 家 (無上限)),向使用者明確展示系統完全無數量上限。localStorage,使用者自行輸入之任何飯店(如自訂特色民宿)均自動常駐記憶於瀏覽器,重新整理頁面依然存在。✕ 刪除按鈕,隨時可乾淨移除。hotel_mahoroba_in_list_proof 截圖證據):
Hotel Mahoroba 高居第一位獨立 Badge 完美呈現,價錢、星級、交通一目了然且點選自由勾選加入比對。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html。.hotel-dropdowns-container。🏨 旅館 1 (前段住宿) 與 🏨 旅館 2 (後段住宿) 兩個獨立卡片。<select class="hotel-slot-select">。-- 請選擇旅館 (點擊取消/換選) --,並包含各飯店之價格、星級與步行時間等標記。✕ 取消選擇」按鈕,點擊立即清空該槽位(進入虛線未選擇狀態),右上方狀態徽章即時同步(如 已選 1 / 2 家)。~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html。hotel_radar_service.py 之 detect_multi_hotel_split_stays 與 detect_split_stay_spots。1+3 晚、2+2 晚、3+1 晚,並將雙向換宿排序(A在前B在後、B在前A在後)全部納入運算。na、nb、nc)注入 seen 鍵值與 hotel_id,確保不同晚數分配之方案並存且獨立計價。🌙 住宿夜數 下拉選單:
🌟 彈性探索 (1~3 晚全部組合)(預設全比對)🌙 住 1 晚 (搭配另一家 3 晚)🌙 住 2 晚 (搭配另一家 2 晚)🌙 住 3 晚 (搭配另一家 1 晚)1 晚 時,「旅館 2」自動同步連動為 3 晚(總晚數 4 晚自動平衡)。🌙 彈性夜數分配:第1段 1晚 ⇄ 第2段 3晚 [自由分配]。🧭 訂房 1:Hotel M (1晚)、🧭 訂房 2:JR Tower (3晚))。5 天 快速選鈕,並於變更天數時自動重新校正各槽位可選夜數。(1, 3)、(2, 2)、(3, 1) 全部 3 種夜數組合。slot_1_plus_3_nights_verified 與 final_system_overview 截圖證據):
~/Gemini-local/。scripts/generate_worklog_html.py 產出最新 WORKLOG.html。~/Gemini-local 至外接硬碟 /Volumes/Samsung,並評估是否需要備份位於 Google Drive 的 ~/Gemini 專案目錄。~/Gemini-local 所有資料庫 Dump、媒體與容器設定,且已備份 ~/Gemini 的核心維運腳本;為達到 100% 脫離 Google Drive 連線亦能獨立離線還原的極致災難復原能力,決定將 ~/Gemini 專案目錄全量封裝納入每日備份。tar czf - --exclude=".git" --exclude="logs" --exclude="*.gdoc" --exclude="__pycache__" --exclude=".DS_Store" -C "$WORKSPACE_DIR" .。backup_pipe 自動生成 gemini-workspace-code.tar.gz,同步雙寫至本機外接硬碟 /Volumes/Samsung/gemini-media-stack-backup/ 與異地 NAS1 (/volume1/Backup/gemini-media-stack-data/)。/Users/authur/Gemini-local/nas-backup-central-orbstack.sh。gemini-workspace-code.tar.gz 封裝項目。/Users/authur/Gemini-local/DISASTER-RECOVERY-RUNBOOK.md。/Volumes/Samsung/gemini-media-stack-backup/2026-10-10/gemini-workspace-code.tar.gz。tar tzf 檢驗確認已乾淨排除 .git、logs、快取與暫存檔,完整保留所有腳本、設定與文檔。gemini-workspace-code.tar.gz 納入每日中央備份,使用者指示於復原管線完整支援專案代碼還原,確保在免聯網或未登入 Google Drive 下可由外接硬碟秒級離線接手。restore_workspace_code() 函式,支援自動偵測解壓 gemini-workspace-code.tar.gz 至 Google Drive 專案目錄。GEMINI.md 符號連結帶有 uchg 旗標,解壓時安全略過鎖定檔案,杜絕 tar 報錯中止。--target workspace-code,互動選單同步增加第 [6] 項;--target all 時自動涵蓋專案代碼還原。restore-orbstack.sh --target workspace-code。restore-orbstack.sh 2026-10-10 --from-local --target workspace-code -y 驗證,成功通過並正確還原 Google Drive 工作區目錄,全流程 exit code 0。wallos.db(ID: 6)建立並維護 NordVPN 項目,設定品牌 Icon(1791600615-nordvpn.png)。2025-03-28,記錄首期購買 2 年增強方案(實付 NT$ 3,090.15,含贈期共 27 個月至 2027-06-28)。2027-06-14,續約金額標註為原價年費 NT$ 5,148,並於備忘欄完整記錄合約歷程、綁定信用卡資訊與取消自動續訂建議。NordVPN(Match: nord nordvpn nordpass)。consume/ 佇列:
Nord Account 帳單與訂閱.pdf(Document ID: 7,標籤:subscription)。NordVPN 2年增強方案 帳單收據 (2025-03-28).pdf(Document ID: 8,標籤:receipt、invoice、subscription,日期校正為 2025-03-28)。usenet-black-friday-2026-reminder 活動,將「Proton Unlimited vs NordVPN Plus」2 年期費用試算、功能差異(P2P Port Forwarding、瑞士隱私、Proton Mail 全家桶)與取消自動續約警訊寫入行事曆備忘錄。vdirsyncer 雙向同步推播至 Google Calendar 及所有端點設備。SELECT id, name, price, start_date, next_payment FROM subscriptions WHERE id = 6 正確回傳設定值。NordVPN 與對應標籤。vdirsyncer-sync.sh 執行成功且正確將更新推播至 Google Calendar。9558882,到期日由原先誤記之 2026-11-08 正確校正為 2027-02-08(auto_renew = 0,cancellation_date = 2027-02-08)。02-03-2027 11:51 UTC (143 days),將到期日由誤植之 2027-11-29 校正為 2027-03-02(auto_renew = 0,cancellation_date = 2027-03-02)。Cancelled,帳號有效至 2027-04-29(auto_renew = 0,cancellation_date = 2027-04-29)。2027-08-28(auto_renew = 0,cancellation_date = 2027-08-28)。UsenetServer (ID: 5)、NewsDemon (ID: 6)、Eweka (ID: 7)。Eweka 退訂與帳戶確認 (2026-10-10).pdf(Document ID: 9,標籤:subscription)。NewsDemon 退訂與帳戶確認 (2026-10-10).pdf(Document ID: 10,標籤:subscription)。UsenetServer 退訂與到期確認 (2026-10-10).pdf(Document ID: 11,標籤:subscription)。usenet-black-friday-2026-reminder 活動內容,補齊校正後的正確到期時間表與官方退訂憑證單號。vdirsyncer-sync.sh 雙向同步推播至 Google Calendar 與全設備行事曆。wallos.db 確認 4 筆訂閱項目之 auto_renew = 0,且 UNS (2027-02-08) 與 Eweka (2027-03-02) 到期日均已準確更新。subscription 標籤。vdirsyncer 雙向同步無衝突完成。wallos.db 的 currencies 資料表全量 34 種幣別匯率,並於 last_exchange_update 註記今日更新戳記。settings 資料表將 convert_currency 旗標調整為 1。wallos-orbstack 容器內執行 stats_calculations.php 統計驗證:
1791603909-google-one.png)。Google AI Pro (5 TB)、分類 Cloud Services (ID: 16)、付款方式 Credit Card (ID: 2)。NT$ (TWD / ID: 34)、金額 NT$ 3,250.00、週期 1 年(起算日 2025-12-26,下期扣款日 2026-12-26)。Google (ID: 8,匹配詞包含 google googleone "google one" "google ai")。Google AI Pro (5 TB) 訂閱憑證 (2025-12-26).pdf(Document ID: 12)。subscription、receipt,發生日期校準為 2025-12-26。wallos.db 確認新紀錄(ID: 7)正確寫入,有效訂閱數增至 7。Google。upcoming_payments_limit 限制為 3 筆,導致排在 2027 年的 NordVPN 未在首頁呈現。NordVPN (2 年增強方案)。NT$ 3,090.15,計費週期設定為 每 2 年 (frequency = 2, cycle = 4)。cancellation_date = 2027-06-28、auto_renew = 0,使退訂倒數與近期付款雙向涵蓋。settings 中將 upcoming_payments_limit 由預設 3 調整為 10,使現存 7 項有效訂閱(含 Google AI Pro 與 NordVPN)全數直觀呈現在首頁即將付款清單中。osascript 調用 Apple 捷徑 mac-pro-on 與 drives-on 控制 Tapo 智慧插座通電,依靠 SMC autorestart=1 自動啟動主機。shortcuts list),完全缺失 mac-pro-on、mac-pro-off、drives-on、drives-off 捷徑,調用拋出 Can’t get shortcut "mac-pro-on" (-1728)。>/dev/null 2>&1 || true 靜默吞錯,導致插座未通電卻盲目進入 8 分鐘 SSH 輪詢,終因超過 Telegram Bot 360 秒非同步限制而超時中斷。shortcuts list | grep -E '^mac-pro-on$'),若捷徑不存在則於 0.2 秒內以 ExitCode 1 立即中斷並明確提示「找不到 Apple 捷徑『mac-pro-on』,請先在捷徑 App 建立控制 Tapo 插座通電捷徑」,徹底終結無效的 8 分鐘盲等。mac-pro-off 與 drives-off 加入預檢防呆,若捷徑缺失即時拋出警告,提示手動關閉插座。~/Gemini-local/。handle_macpro_status() 函式:即時探測 LAN (192.168.88.88) 與 Tailscale (mac-pro.tail9ccc63.ts.net) SSH 連線能力。若離線則清楚回報「🔴 Mac Pro 當前狀態:離線 (關機中)」並提示開機與插座捷徑檢查;若在線則回報系統 Uptime、運行中 Docker 容器數與原生影音服務數量。is_query 關鍵字(含「狀態」、「如何」、「有沒有」、「報告」、「回報」、「查看」、「檢查」、「進度」、「是否」、「調查」、「為什麼」等),凡帶有詢問意圖者一律導向 handle_macpro_status(),徹底杜絕詢問被當成重啟命令。/macpro_status、自然語言「回報 mac-pro 狀態」、「查詢狀態」;並擴充 /status 關鍵字涵蓋「回報狀態」、「狀態」等。~/Gemini-local/scripts/telegram_agent_bot.py,將開機超時放寬至 600 秒(10 分鐘),避免多硬碟旋轉開機與映像檔檢查造成提前逾時。OWC 硬碟已改連接至 mac-mini-pro,從 [docker-compose-macpro.yml](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/docker-compose-macpro.yml) 徹底移除 /Volumes/OWC 條目。TARGET_DRIVES=12),拉長輪詢至 3 分鐘,並針對 32TB RAID 陣列加入專屬偵測與超過 60 秒主動執行 diskutil mount STARDOM 之重試機制,徹底解決開機初期大容量陣列延遲掛載被提前中斷跳過的問題。docker-compose-macpro.yml 中 bazarr 與 tdarr 原被註解之 - /Volumes/STARDOM:/data/stardom 取消註解並重新生效。[[ -s "$src" ]] 防呆,防止未完成水合之空檔覆寫本機設定。karakeep, beszel-agent, jellyseerr, docker-socket-proxy, ombi, glances, tautulli, bazarr, tdarr),實測 docker exec bazarr-orbstack ls -la /data/stardom 讀取正常。Plex Media Server, Jellyfin, EmbyServer, Sonarr, Radarr, Prowlarr, SABnzbd, qBittorrent)。launchctl kickstart -k gui/$(id -u)/com.authur.telegram-agent-bot 重新載入守護行程。./mac-pro-on-orbstack.sh,確認預檢成功通過,實體智慧插座通電順利。192.168.88.88) 與 Tailscale (mac-pro.tail9ccc63.ts.net) 均成功 SSH 連線,12 顆外接硬碟全數掛載(含 32TB STARDOM),9 個容器與 8 個 Native Apps 全數正常在線。~/Gemini-local/logs/telegram-agent-bot.log 與暫存錯誤報告 /var/folders/.../gemini-client-error-...json,確認由三重問題疊加導致:
早 往飯店旁邊的Mumble可以退稅嗎?」(「札幌」轉為「早 往」、「mont-bell」轉為「Mumble」)。TerminalQuotaError: You have exhausted your daily quota on this model.,原腳本將 CLI 錯誤堆疊直接作為回覆回傳至 Telegram。build_context_prompt() 將 [AGENTS.md](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/AGENTS.md) 注入提示詞,導致模型誤判需先執行新機引導之終端指令(ls -lO ~/Gemini/GEMINI.md),觸發執行攔截。hokkaido_keys 擴充涵蓋 mont-bell、montbell、mumble、赤れんが、赤連加、退稅、免稅,強化語音同音比對。local_knowledge_fallback):
~/Gemini-local/scripts/telegram_agent_bot.py。launchctl kickstart -k gui/$(id -u)/com.authur.telegram-agent-bot 重新載入守護行程。com.authur.telegram-agent-bot 正常運作中,成功接收並監聽 Telegram updates。netdata 服務映像檔原寫死鎖定於舊版 netdata/netdata:v1.44.3,低於官方推薦之安全性基準版本 v1.46.0。netdata 映像檔調整為官方推薦的穩定維護通道 netdata/netdata:stable(對應最新穩定版本 v2.12.1)。/Users/authur/Gemini-local/docker-compose.yml。/Users/authur/Gemini-local/netdata/config 確保設定無損。docker compose --env-file .env.local -f docker-compose.yml pull netdata 拉取最新穩定映像檔。docker compose --env-file .env.local -f docker-compose.yml up -d netdata 完成無縫重建。docker ps --filter "name=netdata" 確認容器持續為 Up (healthy)。curl -s http://localhost:19999/api/v1/info 確認已成功升級至 v2.12.1,消除低於 v1.46.0 之安全警示。https://mac-mini-pro.tail9ccc63.ts.net:8449/netdata/)與本機 Web UI 實測,驗證 Authelia SSO 防護與儀表板首頁正常載入渲染。netdata-orbstack 讀取 /var/lib/netdata/netdata_random_session_id 金鑰,順利完成 Netdata Cloud 節點認領與連線綁定。komodo 內 User 資料表為全新空白,指導點擊「Sign Up」建立初始最高管理員帳號。komodo-periphery-orbstack 啟動時 passkeys: [] 為空,根因係 [docker-compose.yml](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/docker-compose.yml) 變數名稱誤寫為單數 PERIPHERY_PASSKEY,未能匹配官方變數 PERIPHERY_PASSKEYS。komodo-periphery 環境變數補齊 PERIPHERY_PASSKEYS=${KOMODO_PASSKEY},並保留兼容變數。/Users/authur/Gemini-local/docker-compose.yml。docker compose up -d komodo-periphery 重建容器,日誌確認 passkeys 成功載入。komodo-orbstack 使其連線立即生效。docker logs komodo-periphery-orbstack 顯示 passkeys 已包含有效密鑰,容器健康運作中。authurlin@gmail.com),且因未配置 SMTP 服務導致「Forgot Password」回傳 400 錯誤。read -s 隱蔽輸入杜絕明文洩漏,並透過 bcryptjs 計算標準雜湊值後安全寫入 SQLite 資料庫。.bak)與輸入檢核。~/Gemini-local/scripts/reset-karakeep-password.sh。authurlin@gmail.com 之 password 雜湊值已成功更新且 salt 校準完畢。{"message":"Router not found for request GET /trilium/"}。handle /trilium*,未剝除前綴直接將 /trilium/ 傳入容器,與 Trilium 原生根路徑 / 不匹配。redir /trilium /trilium/ 並改用 handle_path /trilium* 自動剝除路徑前綴。~/Gemini-local/caddy/Caddyfile。/trilium 正確 302 導向 /trilium/。/trilium/ 正確觸發 Authelia SSO 驗證並反向代理轉發至 Trilium 根路徑。~/Gemini-local 本機 SSD、~/Claude Google Drive 雲端、~/Claude-local 本機 SSD)比照先前的 ~/Gemini,同步整合至 Nextcloud 外部儲存 (files_external)。:ro(唯讀保護)掛載,確保本機與雲端檔案絕無誤刪或雙向撞檔風險。nextcloud/docker-compose.yml 之 app 服務 volumes,擴充三大目錄映射:
${GEMINI_LOCAL_HOST_DIR:-/Users/authur/Gemini-local}:/mnt/gemini-local:ro${CLAUDE_HOST_DIR:-/Users/authur/Claude}:/mnt/claude:ro${CLAUDE_LOCAL_HOST_DIR:-/Users/authur/Claude-local}:/mnt/claude-local:rodocker compose --env-file ~/Gemini-local/nextcloud.env.local up -d app,僅花費 2 秒無縫重載 nextcloud-app 容器,PostgreSQL 與 Redis 資料庫全程維持健康運行。Gemini-local(Mount ID: 2,路徑 /mnt/gemini-local)。Claude(Mount ID: 3,路徑 /mnt/claude)。Claude-local(Mount ID: 4,路徑 /mnt/claude-local)。filesystem_check_changes = 1,當使用者於網頁或行動端 App 瀏覽時,自動感知底層檔案異動。php occ files_external:scan 對新增掛載點進行深度元數據掃描與快取建置:
Gemini (ID 1):索引 4,059 目錄與 17,671 檔案。Gemini-local (ID 2):索引 4,602 目錄與 43,539 檔案。Claude (ID 3):索引 12,234 目錄與 18,575 檔案。Claude-local (ID 4):索引 6 目錄與 132 檔案。https://mac-mini-pro.tail9ccc63.ts.net:8443)或 iPhone Nextcloud App 的「檔案」根目錄,即可完整檢視四大工作區目錄(Gemini/、Gemini-local/、Claude/、Claude-local/),實現全端零死角行動文件瀏覽。nextcloud/README.md 擴充四大外部儲存掛載說明。WORKLOG.md,並執行 python3 scripts/generate_worklog_html.py 自動產出最新 WORKLOG.html,同步複製至本機 SSD ~/Gemini-local/。When using Gemini API, you must specify the GEMINI_API_KEY environment variable。com.authur.telegram-agent-bot.plist) 在背景啟動,其執行環境不會自動載入 shell profile(~/.zshrc.local)。scripts/telegram_agent_bot.py](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/scripts/telegram_agent_bot.py) 的 handle_ai_prompt 函式中,呼叫 subprocess.run(["gemini", ...]) 時僅複製了 os.environ.copy(),未將 load_env() 讀取的環境變數傳入子行程。~/.zshrc.local 內存放的是有效的新版 GEMINI_API_KEY(經 API 驗證 HTTP 200),但 ~/Gemini-local/.env.local 內仍留有舊金鑰(HTTP 401),且 bot 未將 ~/.zshrc.local 納入搜尋路徑。scripts/telegram_agent_bot.py](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/scripts/telegram_agent_bot.py) 的 ENV_FILES 增列 ~/.zshrc.local,支援解析 export 前綴與優先載入 GEMINI_API_KEY。os.environ.update(ENV),並在 handle_ai_prompt 啟動 gemini CLI 前明確執行 env.update(ENV),保證 API Key 100% 傳入推論行程。~/Gemini-local/scripts/telegram_agent_bot.py。~/.zshrc.local 生效之 GEMINI_API_KEY 安全同步至 ~/Gemini-local/.env.local。AGENTS.md 工作區規範為 ~/Gemini/GEMINI.md 補上 chflags -h uchg 鎖定防覆寫保護。launchctl kickstart -k gui/$(id -u)/com.authur.telegram-agent-bot 重新啟動守護程序。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並雙路徑同步至本機 SSD ~/Gemini-local/。/macpro_on 指令,Mac Pro 實體主機與 12 顆外接硬碟陣列順利通電掛載。telegram_agent_bot.py 之 handle_macpro_on 逾時設定為 180 秒(3 分鐘),但完整開機流程(含智慧插座 30 秒放電、主機板冷開機、12 顆外接硬碟通電自檢掛載)通常需約 3.5 ~ 4 分鐘,導致剛好在 180 秒時觸發超時中斷,使後續的 OrbStack 容器與原生影音服務未能即時啟動。start-work-orbstack.sh,成功拉起 glances、docker-socket-proxy、bazarr、ombi、jellyseerr、tautulli、karakeep、tdarr、beszel-agent 容器叢集與本機 7 個 Python 背景微服務。scripts/telegram_agent_bot.py](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/scripts/telegram_agent_bot.py),將 handle_macpro_on 的非同步執行 timeout 從 180 秒調整為 300 秒(5 分鐘),預留充足時間容納硬碟自檢與容器拉起。~/Gemini-local/scripts/telegram_agent_bot.py,並以 launchctl kickstart 重新啟動守護程序。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並雙路徑同步至本機 SSD ~/Gemini-local/。Allowed Hosts is not configured, Sonarr will accept requests for any hostname or IP address. Set Allowed Hosts in General settings to restrict which hostnames can be used to reach Sonarr.。~/.config/Sonarr/config.xml 與 ~/Library/Application Support/Radarr/config.xml,發現 AllowedHosts 欄位均為空,導致兩者均觸發 AllowedHostsCheck 警訊。localhost, 127.0.0.1, 192.168.88.88, 100.77.134.80, mac-pro.tail9ccc63.ts.net, *.tail9ccc63.ts.net, host.docker.internal, sonarrlocalhost, 127.0.0.1, 192.168.88.88, 100.77.134.80, mac-pro.tail9ccc63.ts.net, *.tail9ccc63.ts.net, host.docker.internal, radarr/api/v3/health 端點驗證,Sonarr(Port 8989)與 Radarr(Port 7878)健康度全數回歸 100% HEALTHY(0 warnings / 0 errors),警訊徹底消除。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並雙路徑同步至本機 SSD ~/Gemini-local/。mac-pro-on-orbstack.sh 開機序列中,整合自動升級容器的功能,並拍板採預設每次開機均自動升級。mac-pro-on-orbstack.sh](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/mac-pro-on-orbstack.sh):
DO_UPDATE=true,並支援 --no-update / --skip-update 覆寫略過選項。start-work-orbstack.sh 時自動帶入 --update 參數,開機同時自動執行 docker compose pull、原地熱重載與舊映像檔清理。~/Gemini-local/mac-pro-on-orbstack.sh。scripts/telegram_agent_bot.py](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/scripts/telegram_agent_bot.py):
handle_macpro_on 提示文字更新為「正在執行 Mac Pro 開機與容器升級序列」,並將超時時間由 300 秒進一步擴充至 360 秒(6 分鐘),確保映像檔下載不被超時攔截。~/Gemini-local/scripts/telegram_agent_bot.py,並以 launchctl kickstart 重新加載常駐行程。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並雙路徑同步至本機 SSD ~/Gemini-local/。./start-work-orbstack.sh --update 後反映容器 jellyseerr 仍停留在舊版,未升級至最新版本 v3.5.0。fallenbagel/jellyseerr 與 Overseerr 已正式合併為全新統一專案 Seerr (seerr-team/seerr)。fallenbagel/jellyseerr:latest 停止維護並永久凍結在 2025 年 8 月的 v2.7.3,導致 docker compose pull 誤判為最新。v3.5.0(2026-09-28 發布)已全面轉移至 Docker Hub seerr/seerr:latest 與 GitHub Container Registry ghcr.io/seerr-team/seerr:latest。docker-compose-macpro.yml、docker-compose.yml、docker-compose-macair.yml 中的 jellyseerr 服務 image 為 seerr/seerr:latest。server.py 之 SERVICES 註冊表定義(ID: jellyseerr),全面改用 seerr/seerr:latest。docker-compose-macpro.yml 至 Mac Pro 本機目錄 ~/Gemini-local/docker-compose-macpro.yml。linux/amd64) 架構。linux/amd64 專用架構之 seerr/seerr:latest,藉由區網 1Gbps 無損直推(docker save | SSH docker load)至 Mac Pro。docker compose up -d --force-recreate jellyseerr,成功原地拉起容器。/Users/authur/Gemini-local/jellyseerr/config:/app/config,順利完成 8 項設定資料庫平滑遷移(0001_migrate_hostname.js 至 0008_migrate_blacklist_to_blocklist.js)。docker image prune -f,成功在 Mac Pro 上釋放 1.04GB 磁碟空間。Starting Seerr version 3.5.0 與 Server ready on port 5055。http://192.168.88.88:15055/api/v1/status 回傳驗證:
{"version":"3.5.0","commitTag":"e2f24cb46079746936516c723b09820360f95113","updateAvailable":false,"commitsBehind":0,"restartRequired":false}。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並雙路徑同步至本機 SSD ~/Gemini-local/。mac-mini-pro 與 mac-air 不會像 mac-pro 每次開機自動執行啟動腳本,詢問如何在 Homepage 服務儀表板新增介面或腳本以一鍵更新/重啟容器,並釐清 Apple Silicon M 系列晶片在拉取 Docker 映像檔時之架構匹配機制。docker compose pull 時,會透過多架構清單(Multi-Platform Manifest)自動且精準拉取原生的 linux/arm64 映像檔,完全不需手動指定 --platform。Native App Upgrader 模式,在 macOS 本機架構專屬的 Python Web 管理微服務。upgrade-containers-web.py・Port 8898):
mac-mini-pro(本機)、mac-air(遠端節點)、mac-pro(遠端節點)。docker ps -a 狀態、健康檢查與通訊埠映射。docker compose pull ➔ up -d ➔ image prune -f,並支援在網頁終端機視窗即時串流輸出執行 Log。caddy/Caddyfile](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/caddy/Caddyfile),新增 /container-upgrader/ 反向代理路由導向 host.docker.internal:8898,受 Authelia SSO 雙重保護。caddy-orbstack 使路由即時生效。homepage/config/services.yaml](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/homepage/config/services.yaml),在「跨主機共用 - 效能監控與營運」區塊新增 Container Upgrader 卡片(Port 8898)。homepage-orbstack,卡片即時顯示在線綠燈。start-work-orbstack.sh](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/start-work-orbstack.sh),將 upgrade-containers-web.py 納入開機自動拉起微服務清單與健康度檢查。scripts/telegram_agent_bot.py](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/scripts/telegram_agent_bot.py),新增 /update_containers [mini|air|pro] 指令與自然語言關鍵字匹配(「更新容器」),手機可非同步一鍵觸發更新並接收進度推播。launchctl kickstart 重新加載常駐守護行程。http://127.0.0.1:8898/api/status?host=mac-mini-pro 與 host=mac-pro 均秒級回傳各容器清單與健康狀態。https://mac-mini-pro.tail9ccc63.ts.net:8449/container-upgrader/ 順利載入 Authelia SSO 驗證與管理儀表板。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並雙路徑同步至本機 SSD ~/Gemini-local/。mac-mini-pro 全量容器升級時,因容器數量龐大(近 40 個服務)且 Docker Hub 海外 CDN 匿名拉取限速,整個拉取過程耗時較長。mac-mini-pro 為 7×24 恆開主機,是否建議加入自動排程於離峰時段自動拉取更新?upgrade-containers-web.py,建立 HOST_STATES 字典,每台主機配有專屬的 Lock、logs 隊列與 is_updating 標記。☑ 核取方塊(支援獨立勾選與點擊卡片本體分頁檢視隔離)。☑️ 全選 / 反選」快捷按鈕。🚀 更新所選主機 (X 台)」動態批次更新按鈕,並保留「🌐 一鍵更新全叢集」全域更新能力。POST /api/update-batch 端點,接收多台設備陣列並各自啟動非同步執行緒。mac-mini-pro 包含 open-webui、immich-server、immich-machine-learning、paperless-ngx、caddy 等全量容器拉取與原地無縫重載。docker image prune -f 成功釋放高達 7.907 GB 磁碟空間!Up (healthy) 狀態。scripts/upgrade-containers-cron.sh):
docker compose pull ➔ up -d ➔ docker image prune -f。scripts/telegram.sh,在升級與舊映像清理完成後,自動向使用者 Telegram 推播釋放空間與完成通知。com.authur.containers-upgrade.plist):
StartCalendarInterval 為每日凌晨 05:00(避開 04:00 Nextcloud 資料庫備份與 04:30 Gemini 每日同步之巔峰時段)。logs/container-upgrade-cron.log。~/Library/LaunchAgents/com.authur.containers-upgrade.plist 並以 launchctl load 成功啟動註冊。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並雙路徑同步至本機 SSD ~/Gemini-local/。關機mac-pro」或發送錄音語音訊息,反映助理沒有任何動作反饋。~/Gemini-local/logs/telegram-agent-bot.log 與原始碼排查定位:
message.voice),原程式碼僅解析 message.text,導致語音二進位檔案未被處理直接略過。關機mac-pro」(無空格),原比對邏輯如 text == "/macpro_off" 或以空白分詞未能精準匹配。http://127.0.0.1:18094/asr)。voice 訊息時,透過 Telegram Bot API getFile 下載語音二進位音訊(OGG),以 multipart/form-data 傳遞至 Whisper API 自動完成中文語音轉文字 (task=transcribe&language=zh&output=txt)。norm = re.sub(r'[\s\-_]', '', text.lower()),去除所有空格、破折號與底線。關機macpro」、「開機macpro」、「同步日曆」、「系統狀態」等任意口語化與緊湊型文字。~/Gemini-local/mac-pro-off-orbstack.sh,完成容器關閉、外接硬碟安全卸載與智慧插座斷電。ssh 連線逾時驗證確認 Mac Pro 主機已完全斷電離線。~/Gemini-local/scripts/telegram_agent_bot.py。launchctl kickstart -k gui/$(id -u)/com.authur.telegram-agent-bot 重新啟動守護行程並確認日誌正常。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並雙路徑同步至本機 SSD ~/Gemini-local/。https://mac-mini-pro.tail9ccc63.ts.net:8449/container-upgrader/)上各主機按鈕狀態標籤仍固定顯示為「🟢 在線」。upgrade-containers-web.py 之 /api/poll-state 端點中,cluster_status[h]["online"] 先前寫死為常數 True。前端每 1.5 秒輪詢時,固定將所有主機標籤覆寫為 🟢 在線。execute_cmd() 在主要連線失敗嘗試 Tailscale 備用主機時,誤將 ssh_cmd[6](BatchMode=yes)替換為主機名稱,導致產生命令列語法錯誤。is_host_online(cfg, timeout=1.0) 函式,針對遠端主機(Mac Pro / Mac Air)之 Port 22 進行快速 TCP Socket 握手測試(關機時僅需 0.003 秒即判定失敗,絕不卡頓主執行緒)。online_monitor_loop(),每 5 秒自動重新探測並刷新 HOST_STATES[h]["online"]。/api/poll-state 與 /api/status 端點,真實回傳各主機之即時在線/離線狀態。execute_cmd() 之備用 SSH 指令建構邏輯,徹底根除參數索引位移問題。~/Gemini-local/upgrade-containers-web.py 並重啟 Port 8898 微服務。mac-mini-pro 正常回傳 online: true;關機之 mac-air 與 mac-pro 秒級回傳 online: false 與離線提示。🔴 離線 / 休眠,開機後亦能於 5 秒內自動復原為 🟢 在線。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並雙路徑同步至本機 SSD ~/Gemini-local/。komodo-db-orbstack 容器呈現紅色 exited 異常狀態,未正常運行。ExitCode: 62)與詳細啟動日誌:
komodo-db 在 docker-compose.yml 中設定為浮動標籤 image: mongo:latest。mongo:latest 更新至最新 MongoDB 9.0.2。~/Gemini-local/komodo/db 內部之現存資料庫檔案為 MongoDB 8.2 格式(featureCompatibilityVersion: "8.2")。UPGRADE PROBLEM: Found an invalid featureCompatibilityVersion document in admin.system.version: { _id: "featureCompatibilityVersion", version: "8.2" }(錯誤代碼 Location4926900)並強制關閉退出。docker-compose.yml,將 komodo-db 服務映像檔由 mongo:latest 釘選為與現存資料庫完全相容之 mongo:8.2。~/Gemini-local/docker-compose.yml。docker compose --env-file .env.local up -d --force-recreate komodo-db,成功重新建立並啟動容器。mongod startup complete,成功在 27017 連接埠監聽連線,komodo_core 行程第一時間完成身分認證並建立通訊。komodo-db-orbstack 順利恢復為綠色 running 狀態。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並雙路徑同步至本機 SSD ~/Gemini-local/。mac-mini-pro 萬一需要重新安裝 macOS 或是使用全新 Mac mini 硬體時之「無痛快速接手」恢復機制,並探討現有 Time Machine 與外接硬碟 /Volumes/Samsung 在該體系中的具體定位與價值。/Applications 大型應用程式,省去 90% 基礎環境重配時間;但因檔案層快照具資料庫熱寫入損壞風險(Dirty DB State)且預設排除外接硬碟,故不宜作為資料庫與媒體庫的唯一依賴。/Volumes/Samsung 定位:作為本地極速冷備份庫,每天清晨自動同步乾淨的 PostgreSQL / SQLite dump、Native App 資料庫與 Immich 媒體庫。新機接手時直接物理插拔,數分鐘內即可完成全量本機極速匯入,無需等待網路下載。~/Gemini) 定位:版本控制程式碼、Docker Compose 配置與災難引導腳本雲端金庫。scripts/system-snapshot.sh](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/scripts/system-snapshot.sh)):
Brewfile(涵蓋 191 個 Formulae 與 11 個 Casks)。LaunchAgents 常駐守護程式為 launchagents.tar.gz。crontab.txt 定時排程與 Shell 組態(dotfiles.tar.gz)。nas-backup-central-orbstack.sh](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/nas-backup-central-orbstack.sh) & [restore-orbstack.sh](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/restore-orbstack.sh)):
nextcloud.sql.gz) 與雙向還原機制。system-snapshot 於每日備份時自動觸發,同步保存至 NAS1 與 /Volumes/Samsung/gemini-media-stack-backup/。DOCKER_DIRS 清單納入 nextcloud、nextcloud-data、system-snapshot、vdirsyncer 與 www-travel。bootstrap-new-mac.sh](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/bootstrap-new-mac.sh)):
restore-orbstack.sh 極速還原資料庫、LaunchAgents 註冊載入與服務健全檢查。DISASTER-RECOVERY-RUNBOOK.md](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/DISASTER-RECOVERY-RUNBOOK.md)):
python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並雙路徑同步至本機 SSD ~/Gemini-local/。age key - media-stack 係過去針對 ~/Claude/media-stack/ 所建置,且 env-encrypt.sh 仍殘留指向舊 Claude 路徑;應重構生成 Gemini 專屬金鑰,並直接存放至外接硬碟 /Volumes/Samsung/age-key.txt (權限 600) 以實現插上即用的極速解密。/Volumes/Samsung/age-key.txt,並第一時間加固為 chmod 600。~/.age/gemini-key.txt (chmod 600)。age13eg74c8c96f0qgu4x47gqadw75nlaa0qan04x2l2mfgnl46yu9cqyvm2zz。env-encrypt.sh](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/env-encrypt.sh)):
~/Gemini/.env.local 與 ~/.ssh/nas1_ed25519。~/Gemini/.env-backups/;本機 SSD 儲存至 ~/Gemini-local/backups/env-backups/。AGE_PUBKEY。~/Gemini-local/env-encrypt.sh。bootstrap-new-mac.sh](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/bootstrap-new-mac.sh)) 與手冊同步升級:
/Volumes/Samsung/age-key.txt,插上硬碟即 0 秒自動解密。Gemini/.env-backups。bash ~/Gemini/env-encrypt.sh,成功在 Google Drive ~/Gemini/.env-backups/ 與本機 SSD 生成 .env.local.age 與 .ssh-nas1_ed25519.age 最新加密備份。age -d -i /Volumes/Samsung/age-key.txt 執行解密測試,並以 cmp 與原版 ~/Gemini/.env.local 進行字節級比對,確認 100% 吻合(DECRYPT_VERIFIED_MATCH)!python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並雙路徑同步至本機 SSD ~/Gemini-local/。DISASTER-RECOVERY-RUNBOOK.md](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/DISASTER-RECOVERY-RUNBOOK.md) 轉換為行動端專屬 HTML 格式,並正式整合登錄至 Gemini Docs Hub。scripts/build_runbook_html.py](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/scripts/build_runbook_html.py)):
markdown-it-py 解析引擎,自動適配 Mermaid 11 原生繪圖語法。~/Gemini/DISASTER-RECOVERY-RUNBOOK.html 與 ~/Gemini-local/DISASTER-RECOVERY-RUNBOOK.html。scripts/travel-plan-web.py](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/scripts/travel-plan-web.py)):
CUSTOM_METADATA 註冊專屬卡片:
Mac Mini 災難復原與無痛接手操作手冊 (DR Runbook)🛡️ / DR Runbook (琥珀金色 #f59e0b)/runbook、/dr、/recovery、/disaster-recovery。⬅ 文件目錄」。launchctl kickstart 重啟常駐微服務 com.authur.travel-plan-web。scripts/auto_build_html.sh](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/scripts/auto_build_html.sh)):
build_runbook_html.py,未來只要更新 Runbook Markdown 即自動即時重編。http://127.0.0.1:8896/,成功載入 🛡️ DR Runbook 專屬卡片與描述。http://127.0.0.1:8896/runbook 與公網 Funnel https://mac-mini-pro.tail9ccc63.ts.net/runbook,均回傳 HTTP 200 OK,Mermaid 四大防線架構圖與代碼複製功能完美渲染。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並雙路徑同步至本機 SSD ~/Gemini-local/。nas-backup-central-orbstack.sh 與 macOS 原生 com.apple.TimeMachine 偏好設定:
smb://timemachine@Home918.../Time Machine)最後一次快照時間停留在 2026-09-10 07:58。backupd 根本無足夠時間掛載網路稀疏映像檔進行備份。M4 Mini Backup 承擔高頻率日常 Time Machine 快照(今日 08:15 剛完成)。nas1-on-orbstack.sh 整合 Time Machine 排程:
[[ $(date +%u) -eq 7 || "${FORCE_TM:-0}" == "1" ]])。tmutil startbackup --destination 31B4A9FB-6BD0-40B7-92EC-44D7C2A10112 --block。timeout 2700 包覆執行,若遇網路卡頓或檔案巨量變動,超時自動執行 tmutil stopbackup 並安全關機,確保絕不撞到 07:02 的每日定時關機排程。FORCE_TM=1 ~/Gemini-local/nas1-on.sh 手動即時測試模式。~/Gemini-local/nas1-on-orbstack.sh,通過 zsh -n 語法檢測。DISASTER-RECOVERY-RUNBOOK.md](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/DISASTER-RECOVERY-RUNBOOK.md) 與重新編譯其 HTML。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並雙路徑同步至本機 SSD ~/Gemini-local/。~/Gemini-local 並修復 zsh glob 異常~/Gemini-local/passwords-export/,並要求將舊有 ~/Claude-local/import-passwords-export.sh 及其自動化備份功能全面遷移至 ~/Gemini-local/。~/Gemini-local/passwords-export/Passwords.csv(44,723 bytes,09:10 建立)後,第一時間執行 chmod 600,杜絕明文密碼被未授權行程讀取。ls -t "$EXPORT_DIR"/*.csv 在目錄無 CSV 時因 zsh 預設 nomatch 機制會直接噴錯 no matches found 並中斷;於 pattern 補上 (N) (nullglob) 修飾符,確保目錄無檔案時能平順走入防呆提示,且避免 LaunchAgent 輪詢日誌堆積報錯。~/Gemini-local/import-passwords-export.sh:將匯出目錄、環境變數檔、日誌目錄與通知腳本全面指向 ~/Gemini-local/,並加入 *.csv(N) 防呆。~/Gemini-local/notify-passwords-export.sh 與 ~/Gemini-local/remind-passwords-export.sh,統一對齊 Gemini-local 環境。chmod 700 執行權限。com.authur.passwords-export-watch.plist 之 WatchPaths 指向 ~/Gemini-local/passwords-export,腳本與日誌對齊新路徑。com.authur.passwords-export-reminder.plist 腳本與日誌路徑。launchctl unload 與 load 重新載入,確認狀態碼為 0 正常監聽。~/Gemini-local/import-passwords-export.sh,互動輸入主密碼後以 safaricsv 格式順利匯入 Vaultwarden。~/Gemini-local/logs/import-passwords-export.log 記錄:2026-10-07 09:15:22 匯入成功:/Users/authur/Gemini-local/passwords-export/Passwords.csv(format=safaricsv)。bw status 同步時間更新為 2026-10-07T01:15:19.087Z,狀態回歸 locked 鎖定保護。Passwords.csv 已由腳本安全銷毀,~/Gemini-local/passwords-export/ 實體驗證目錄已清空(0 檔案),杜絕任何明文外洩風險。WORKLOG.md,並執行 python3 scripts/generate_worklog_html.py 同步最新版至 ~/Gemini-local/。2026-YEAR.md 與 scripts/build_2026_year_html.py。2026-YEAR.html(94,445 bytes,具備 Safe Area、iOS 毛玻璃卡片與 Tab 導航),並同步更新至 /Users/authur/Gemini/、~/Gemini-local/ 及本機端點。scripts/travel-plan-web.py 之 CUSTOM_METADATA,設定 ❄️ 主題圖標、紫色「黃金升級版 v2.0」徽章、完整行程特色描述與短網址別名(/hokkaido、/year、/2026-year)。~/Gemini-local/scripts/travel-plan-web.py,經使用者確認後透過 launchctl kickstart -k 重新載入 com.authur.travel-plan-web。http://127.0.0.1:8896/)精準渲染專屬卡片,短網址解析 200 OK,頁面頂部自動注入「⬅ 文件目錄」浮動導航鈕。http://127.0.0.1:8896/2026-YEAR.html)回傳 HTTP 200 OK 運作正常。python3 scripts/generate_worklog_html.py 產出最新 WORKLOG.html,並完成雙路徑同步。http://mac-pro.tail9ccc63.ts.net:16767/bazarr/ 出現 Unable to connect (Firefox can’t connect to the server at mac-pro.tail9ccc63.ts.net:16767)。/Volumes/TOSHIBA1)尚未完成系統自動掛載程序。Created 狀態:
bazarr-orbstack(與 tdarr-orbstack)因宣告依賴外接硬碟(needs_drives: True),Docker 啟動時偵測到宿主機路徑 /Volumes/TOSHIBA1 缺失,企圖在受 macOS 系統保護之 /Volumes 底下自動建立目錄,遭遇 mkdir /Volumes/TOSHIBA1: permission denied(ExitCode 128)。Created 狀態未運行,Mac Pro 之 16767 埠號無服務監聽,導致連線直接被拒。/Volumes/TOSHIBA1 在內之所有外接磁碟已全數就緒掛載。ssh mac-pro "/usr/local/bin/docker start bazarr-orbstack tdarr-orbstack"。Up,後端成功載入設定檔並完成與 Sonarr / Radarr 之 SignalR 連線。curl -I http://mac-pro.tail9ccc63.ts.net:16767/bazarr/ 回傳 HTTP 200 OK,網頁介面完全恢復正常存取。tdarr-orbstack(埠號 18265)亦回傳 HTTP 200 OK 運作正常。opensubtitles.com 又出現 AuthenticationError(顯示 12 小時節流冷卻計時)。ERROR:secret_store.migration:Failed to decrypt secret at rest: ValueError; continuing with the value unchanged so the rest of bazarr can boot.opensubtitlescom.username 與 password 在 config.yaml 中儲存的密文(enc:v1:...)無法被當前本機之 secrets_encryption_key 解密。AuthenticationError 並寫入 throttled_providers.dat 強制進入 12 小時懲罰性節流。401 {"message":"Error, invalid username/password..."}。POST /bazarr/api/providers?action=reset,成功清除 Provider 節流狀態。throttled_providers.dat 已重置為空 {},Provider 狀態已即時恢復為 🟢 Good(gestdown: Good, opensubtitlescom: Good),網頁介面警示已清除。/config/config/config.yaml 之 general.secrets_encryption_key 主金鑰,並加入解密斷言檢驗(assert decrypt_secret == plaintext),確保密文與主金鑰 100% 綁定且日後啟動能正常解密。getpass 隱藏輸入(終端螢幕不回顯、歷史紀錄無痕)或 --from-env 自 ~/.env.local 靜默載入,並支援 --host all 一鍵更新雙端設備。python3 set_opensubtitles.py all --from-env 順利完成 Mac Mini 與 Mac Pro 雙端自動更新與重啟。Failed to decrypt secret at rest: ValueError 錯誤已徹底消失,密鑰在庫解密完全順暢。gestdown: Good、opensubtitlescom: Good,連線與檢索能力全數恢復正常 🟢。brew 升級 Sonarr、Radarr、Prowlarr。brew install --cask 不可用)。sonarr.txt、radarr.txt、prowlarr.txt),發現三個服務在點擊「Install」後,後端 .NET 升級模組均於發起下載 300 秒(5 分鐘)時觸發超時中斷:
System.Threading.Tasks.TaskCanceledException: The operation was canceled.release-assets.githubusercontent.com),在台灣連線速度僅約 100~300 KB/s,而安裝包約 90~100 MB,下載耗時遠超 .NET HttpClient 硬編碼之 300 秒 Timeout 限制,導致每次下載在完成約 30%~70% 時被強制中斷,無法進入解壓縮與更新流程。v4.0.20.3014 (Sonarr.main.4.0.20.3014.osx-x64-app.zip)v6.4.4.10685 (Radarr.master.6.4.4.10685.osx-app-core-x64.zip)v2.6.5.5623 (Prowlarr.master.2.6.5.5623.osx-app-core-x64.zip)/Applications/Sonarr.app、/Applications/Radarr.app、/Applications/Prowlarr.app。xattr -dr com.apple.quarantine /Applications/{Sonarr,Radarr,Prowlarr}.app,確保原生二進位檔正常啟動。4.0.20.3014(原為 4.0.19.2979)。6.4.4.10685(原為 6.3.0.10514)。2.6.5.5623(原為 2.5.2.5491)。HTTP 401 Unauthorized(Kestrel 服務與安全認證健全),應用程式資料庫與組態設定完整無損。mac-mini-pro 之 Sonarr、Radarr 與 Prowlarr 原生服務。mac-mini-pro 採用 Apple Silicon (arm64) 架構,需精確匹配官方 osx-arm64 封裝包。~/Library/LaunchAgents/ 下之 com.authur.{sonarr,radarr,prowlarr}.plist 管理並開啟 KeepAlive,需透過 launchctl unload/load 確保平順替換。OS_REASON_EXEC(Launchd job spawn failed, Unknown error: 163)阻擋,經查原生 Mach-O 二進位檔未帶有代碼簽名。codesign --force --deep -s - 補齊 Ad-Hoc 本地安全簽章,徹底解除 macOS 核心對未簽名 arm64 執行檔之阻擋。v4.0.20.3014 (Sonarr.main.4.0.20.3014.osx-arm64-app.zip)v6.4.4.10685 (Radarr.master.6.4.4.10685.osx-app-core-arm64.zip)v2.6.5.5623 (Prowlarr.master.2.6.5.5623.osx-app-core-arm64.zip)/Applications/ 下之三大應用程式目錄。codesign --force --deep -s -)。4.0.20.3014(原為 4.0.19.2979)。6.4.4.10685(原為 6.3.0.10514)。2.6.5.5623(原為 2.5.2.5491)。python3 scripts/generate_worklog_html.py 同步最新版至 ~/Gemini-local/。2026-YEAR.md 中 Day 2(12/16)「索拉利亞西鐵飯店 札幌」官方網站超連結(https://solaria-nishitetsu.jp/sapporo/)無法開啟。solaria-nishitetsu.jp 已失效廢棄(no such host)。nnr-h.com,札幌分館最新官網首頁為 https://nnr-h.com/solaria/sapporo/(連線測試回傳 HTTP 200 正常);官方線上訂房系統網址(https://go-nishitetsu.reservation.jp/ja/hotels/nishitetsu-sapporo)則依然有效。2026-YEAR.md 中表格與精選飯店清單之官網連結。scripts/build_2026_year_html.py 中「官網首頁」按鈕超連結。python3 scripts/build_2026_year_html.py,重新產生 2026-YEAR.html。~/Gemini-local/2026-YEAR.md 與 ~/Gemini-local/2026-YEAR.html。solaria-nishitetsu.jp 已全數替換清除。https://nnr-h.com/solaria/sapporo/ 點擊測試正常直達。python3 scripts/generate_worklog_html.py 產出最新 WORKLOG.html 並完成雙路徑同步。nextcloud-app(nextcloud:apache):主應用程式,僅綁定宿主機 127.0.0.1:8090,絕不暴露於外部或局域網。nextcloud-db(postgres:16-alpine):高效能關聯式資料庫。nextcloud-redis(redis:alpine):記憶體快取與分散式鎖定。~/Gemini/nextcloud/(Google Drive 雲端同步維護)。~/Gemini-local/nextcloud.env.local(本機 SSD,權限 600,嚴格禁止上傳雲端)。~/Gemini-local/nextcloud-data/{html,postgres,redis}(本機高效能 SSD,避開雲端檔案鎖定衝突)。https://mac-mini-pro.tail9ccc63.ts.net:8443。overwriteprotocol=https、overwritehost=mac-mini-pro.tail9ccc63.ts.net:8443 與 trusted_proxies,精準滿足 iOS / macOS CalDAV/CardDAV 嚴苛之 TLS/SSL 與 HSTS 規範。com.authur.nextcloud-cron.plist](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/nextcloud/scripts/com.authur.nextcloud-cron.plist),每 300 秒自動以 www-data 身分執行 cron.php,日誌輸出至 ~/Gemini-local/nextcloud-cron.log。HTTP 429 Too Many Requests,導致 Apple 設備出現「Unable to verify account name or password」或「無法使用 SSL 連線」之誤導性提示。docker exec nextcloud-app php occ security:bruteforce:reset 及時重置清空阻擋名單,恢復正常認證。mac-mini-pro.tail9ccc63.ts.net:8443,搭配專屬 App 密碼驗證。HTTP 207 Multi-Status,成功同步個人日曆 Personal 與通訊錄聯絡人。mac-mini-pro.tail9ccc63.ts.net、Port: 8443、啟用 SSL。/remote.php/dav/principals/users/authurlin/。macOS accountsd 與 AddressBookCore 順利完成探索與資料傳輸(單次 REPORT 成功傳輸 289KB 通訊錄數據),日曆與聯絡人雙向同步完全通暢。nextcloud/scripts/backup-db.sh](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/nextcloud/scripts/backup-db.sh) 並同步至 ~/Gemini-local/scripts/nextcloud-backup-db.sh。docker exec nextcloud-db pg_dump 線上安全串流 gzip 壓縮匯出至 ~/Gemini-local/nextcloud-backups/,檔案權限設為 600,並自動輪替保留最新 14 份歷史 dump。nextcloud/scripts/com.authur.nextcloud-db-backup.plist](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/nextcloud/scripts/com.authur.nextcloud-db-backup.plist),配置每日凌晨 04:00 自動執行,日誌寫入 ~/Gemini-local/logs/nextcloud-backup.log。~/Library/LaunchAgents/ 並載入;透過 launchctl start 實測觸發成功,產出 578K 之備份檔,ExitCode 為 0。python3 scripts/generate_worklog_html.py 產出最新 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),落實同步至 ~/Gemini-local/。caldav.googleapis.com)。~/Gemini-local/vdirsyncer/google_client_secret.json(嚴格配置權限 600,杜絕進雲端)。vdirsyncer 建立專屬 App 密碼,存於 ~/Gemini-local/vdirsyncer/nextcloud_app_password.txt(權限 600)。vdirsyncer 核心特性 .fetch 動態取值(password.fetch = ["command", "cat", "..."] 與 client_secret.fetch = ["command", "python3", "..."]),確保所有金鑰與密碼零寫死、終端執行無任何明文參數外洩。pipx 安裝 vdirsyncer 0.21.0,並注入 Google OAuth 所需之非同步認證擴充庫 aiohttp-oauthlib(have_oauth2: True)。~/Gemini-local/vdirsyncer/config(範本維護於 [nextcloud/vdirsyncer.conf.example](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/nextcloud/vdirsyncer.conf.example))。authurlin@gmail.com(Google 主日曆)與 personal(Nextcloud 主日曆),設定衝突解決機制為 conflict_resolution = "a wins"。vdirsyncer discover,成功觸發本機瀏覽器 Google OAuth 同意授權並寫入 Token 快取。vdirsyncer sync:Google 日曆數百筆歷史行程完整下載寫入 Nextcloud;Nextcloud 原生事件亦即時上傳推送至 Google 日曆,雙向通訊機制完美驗證,進入零差異穩定態(Steady State)。nextcloud/scripts/vdirsyncer-sync.sh](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/nextcloud/scripts/vdirsyncer-sync.sh)(本機副本 ~/Gemini-local/scripts/vdirsyncer-sync.sh),內含 Nextcloud 容器健康檢核與狀態時間戳記輸出。nextcloud/scripts/com.authur.vdirsyncer-sync.plist](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/nextcloud/scripts/com.authur.vdirsyncer-sync.plist),配置每 15 分鐘(900 秒)定期背景自動同步,日誌輸出至 ~/Gemini-local/logs/vdirsyncer-sync.log。~/Library/LaunchAgents/ 並以 launchctl load 載入;實測觸發成功,回傳 ✅ Google Calendar <-> Nextcloud 雙向同步完成,ExitCode 為 0。python3 scripts/generate_worklog_html.py 產出最新 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),落實同步至 ~/Gemini-local/。~/Gemini 目錄(包含旅遊計畫、工作日誌、架構圖與專案 Markdown 文件)。~/Gemini/nextcloud/docker-compose.yml 之 app 服務 volumes 宣告 ${GEMINI_HOST_DIR:-/Users/authur/Gemini}:/mnt/gemini:ro。docker compose --env-file ~/Gemini-local/nextcloud.env.local up -d app 僅無縫重建 nextcloud-app 容器,資料庫 nextcloud-db 與快取 nextcloud-redis 維持常駐健全運行。files_external 模組:php occ app:enable files_external。Gemini:php occ files_external:create "Gemini" "local" "null::null" -c datadir=/mnt/gemini(分配 Mount ID: 1,對所有使用者生效)。filesystem_check_changes = 1,當使用者於 Nextcloud 網頁端或 App 瀏覽目錄時,即時感知底層檔案異動,免除手動重掃快取之困擾。php occ files_external:scan 1:於 24 秒內完成 4,059 個資料夾與 17,671 個檔案之深度元數據掃描與快取建置。authurlin 檔案樹:透過 occ files:scan authurlin --path="authurlin/files/Gemini/2026-YEAR.md" 驗證單一檔案索引與即時檢索能力。https://mac-mini-pro.tail9ccc63.ts.net:8443)或行動端 App,即可在「檔案 (Files)」根目錄直接看到 Gemini/ 資料夾,並順暢檢視、預覽與搜尋所有本機文檔。nextcloud/README.md 補充外部儲存掛載說明。WORKLOG.md,並執行 python3 scripts/generate_worklog_html.py 自動產出最新 WORKLOG.html,同步複製至本機 SSD ~/Gemini-local/。tasks(v0.18.1)已常駐啟用。authurlin 已具備專屬 VTODO 集合(UUID: AA1994DD-C928-4E49-8C2C-0FDE7C58FD94,預設名稱代碼為 DEFAULT_TASK_CALENDAR_NAME)。remindd/4046.21)即時發起 CalDAV 探測與屬性更新:
PROPPATCH /remote.php/dav/calendars/authurlin/AA1994DD.../ HTTP/1.1 -> 207 Multi-Status
自動將待辦清單顯示名稱由代碼校準為 Reminders。PUT /remote.php/dav/calendars/authurlin/AA1994DD.../FA334DC7-B360-4D05-AE7F-82A6CFF0F352.ics -> 201 Createdoc_calendarobjects,確認完整承載 BEGIN:VTODO 規格:
SUMMARY: Nextcloud測試、STATUS: NEEDS-ACTION、DUE: 2026-10-07。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並落實同步複製至本機 SSD ~/Gemini-local/。.md) 與專屬編譯 HTML 檔案 (.html) 之美觀度與體驗差異評估。https://mac-mini-pro.tail9ccc63.ts.net:8449。透過 Tailscale Serve 端對端 TLS 憑證直連 Caddy,經由 Authelia SSO 單一簽入認證,兼顧完整資料傳輸加密與安全性。http://mac-mini-pro.tail9ccc63.ts.net:3005(或 Tailscale IP http://100.81.183.49:3005)。於 Tailnet 內網環境直接命中容器 Port 3005,跳過 Authelia 登入驗證,秒開總覽。.md 在手機窄螢幕容易排版破碎或被迫橫向溢出;客製 .html 具備卡片自適應化與平滑慣性滑動。.html 嚴格宣告 viewport-fit=cover 與 Safe Area Insets(避開動態島、瀏海與 Home Bar 遮擋)。2026-YEAR.html 具備「Day 1~5 分頁 Tab 切換」與地圖/官網直達鈕;WORKLOG.html 具備「即時全文搜尋」與「日期/Session 收合折疊」,大幅免除數千行連續滾動的指尖疲勞。*.md(資料核心):作為 Single Source of Truth,保持純文字乾淨度,專注於本機編輯、Git 版本控管及 AI Agent 存取維護。*.html(行動消費):專門服務外出、旅行與通勤場景,透過 Docs Hub(Port 8896)或本地 Safari 提供最流暢極致的閱讀呈現。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並落實同步複製至本機 SSD ~/Gemini-local/。.md 檔案並連動重編 HTML。~/Gemini-local/telegram.local.env 之憑證,僅允許授權之 TELEGRAM_CHAT_ID 存取,杜絕任何未授權操作。gemini CLI(以 gemini-2.5-flash 執行,響應速度極快)。AGENTS.md(資安規範)、2026-YEAR.md(完整北海道行程、飯店房型與門到門交通)、2026-TRAVEL.md(九州旅遊計畫)與 WORKLOG.md(維運手冊),使隨身特助具備 100% 精準回答行程細節與預算數值之零幻覺全知能力。/macpro_on / /macpro_off,以非同步守護執行緒(threading.Thread)調用 mac-pro-on-orbstack.sh(智慧插座序列通電)或 mac-pro-off-orbstack.sh,非同步回報完成狀態,不阻塞 Bot 訊息輪詢。/sync_cal,觸發 vdirsyncer-sync.sh 雙向同步。/macpro_on / /macpro_off:Mac Pro 開關機序列調用。/rebuild:一鍵觸發所有 HTML 重編並回傳耗時與直達預覽連結。/sync_cal:Google ⇄ Nextcloud 日曆雙向同步。/status:即時回報 Mac Mini 系統負載、可用磁碟與 Docker 容器運行數量。/year <文字> 與 /travel <文字>:極速追加隨手筆記至行程文件末端並自動編譯。2026-YEAR.html、2026-TRAVEL.html、WORKLOG.html 並雙路徑同步至 ~/Gemini-local/。~/Gemini-local/scripts/。com.authur.telegram-agent-bot.plist](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/scripts/com.authur.telegram-agent-bot.plist)(常駐守護,KeepAlive: true)。com.authur.gemini-file-watcher.plist](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/scripts/com.authur.gemini-file-watcher.plist)(事件監聽,WatchPaths 覆蓋三大核心 .md 文件)。launchctl list 確認雙服務均以 ExitCode 0 正常監聽,Python 行程(PID 30400)於背景穩定運行。🚀 Mac Mini 隨身 AI 助理已就緒在線! 歡迎訊息。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並落實同步複製至本機 SSD ~/Gemini-local/。gemini -m gemini-2.5-flash -y -p ... 時,因當前目錄尚未於交談模式信任且缺少 --skip-trust,被 Gemini CLI 安全機制攔截返回 Exit Code 55。scripts/telegram_agent_bot.py 發現 handle_ai_prompt 函式重複定義,後方的 AI 調用蓋過了前方的自動化運維腳本意圖識別(開機/關機/同步/重編)。build_context_prompt(),根據使用者提問關鍵字,動態即時載入 AGENTS.md(資安與架構)、2026-YEAR.md(北海道行程細節)、2026-TRAVEL.md(九州旅遊計畫)與 WORKLOG.md(核心維運手冊)。--skip-trust 參數並注入 GEMINI_CLI_TRUST_WORKSPACE=true 環境變數,徹底解決 Exit Code 55 攔截。Warning: Basic terminal... 與 YOLO mode 等系統提示行,回傳乾淨專業文字。~/Gemini-local/scripts/telegram_agent_bot.py。launchctl kickstart -k gui/$(id -u)/com.authur.telegram-agent-bot 重新載入守護程序,日誌驗證正常運行。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並同步至本機 SSD ~/Gemini-local/。.md / .html 文件時,隨身助理如何自動感知並保持最新狀態。build_context_prompt():動態掃描本地 ~/Gemini-local/ 目錄下所有現存之 *.md 文件清單,作為大腦認知索引。2027-YEAR.md、PROJECT-A.md),只要使用者提問命中該檔名或關鍵字,AI 自動將該檔案完整內容注入上下文,徹底告別手動硬編碼。~/Gemini-local/scripts/telegram_agent_bot.py 並以 launchctl kickstart 重啟常駐服務。auto_build_html.sh 重新編譯所有 HTML。chmod +x 權限並部署至 ~/Gemini-local/scripts/daily_sync_mirror.sh。04:30(避開 04:00 Nextcloud 資料庫備份)自動觸發鏡像同步與重編。~/Library/LaunchAgents/ 並以 launchctl load 載入,登記為系統常駐服務 No.30。daily_sync_mirror.sh,日誌確認 rsync 增量鏡像、auto_build_html.sh 重新編譯均成功執行,ExitCode 為 0。launchctl list 確認 com.authur.gemini-daily-sync 服務狀態碼為 0 正常監聽。telegram_agent_bot 背景日誌確認即時在線,大腦已涵蓋全目錄 Markdown 檔案。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並同步至本機 SSD ~/Gemini-local/。ls -al ~/Gemini/*.md 發現 GEMINI.md 顯示為 GEMINI.md -> (箭頭後方為空字串,大小為 0 位元組),詢問是否可以刪除。AGENTS.md 規範與歷史工作日誌,確認 GEMINI.md 係專案規則唯一來源 AGENTS.md 之重要符號連結(供 Gemini CLI / Antigravity 自動讀取)。先前因 Google Drive 雲端同步無法完整保留 Unix symlink 屬性,導致 target 被洗成空字串,且鎖於 uchg 狀態。chflags -h nouchg ~/Gemini/GEMINI.md 解除旗標鎖定。ln -sf AGENTS.md ~/Gemini/GEMINI.md。chflags -h uchg ~/Gemini/GEMINI.md(以 -h 參數確保鎖定 symlink 本身,絕不影響 AGENTS.md 內容可讀寫性)。~/Gemini-local/ 同步建立 GEMINI.md -> AGENTS.md 並施加 uchg 鎖定。ls -al ~/Gemini/GEMINI.md 正確顯示:lrwxr-xr-x@ 1 authur staff uchg GEMINI.md -> AGENTS.md。ls -lO ~/Gemini/AGENTS.md 旗標欄位確認為 -(完全未受影響,維持正常讀寫)。python3 scripts/generate_worklog_html.py 自動更新產出 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html),並同步至本機 SSD ~/Gemini-local/。https://mac-mini-pro.tail9ccc63.ts.net:8449/miniflux 出現「無法連線(無法連接到伺服器)」。tailnet only(僅限內網),公網 Tailscale Funnel 僅支援 Port 443 等特定連接埠。100.100.100.100)。103.84.155.217),因公網節點未開放 8449 埠,連線直接 Timeout,Safari 顯示無法連線。使用者關閉私密轉送與限制 IP 位址追蹤後,Safari 即恢復正常。miniflux-orbstack 容器日誌,確認 NetNewsWire 於 22:57 發起認證時帳密成功通過([GoogleReader] User authenticated successfully username=authurlin)。/reader/api/0/* 與 /accounts/ClientLogin 發送請求。/accounts/ClientLogin*:被 Plex 之 /accounts* 規則搶先攔截,Plex 回傳 404 Not Found。/reader/api/0/* 與 /api/greader.php*:未帶 /miniflux 前綴,被 Caddy 落入預設 Authelia SSO 保護區塊,回傳 302/303 重定向至 HTML 登入頁,導致 NetNewsWire 解析失敗中斷同步。/accounts* 規則前新增 handle /accounts/ClientLogin*,以 rewrite * /miniflux{uri} 優先轉發給 miniflux-orbstack:8080,確保不被 Plex 搶走。handle /reader*(以 rewrite * /miniflux{uri})與 handle /api/greader.php*(以 uri replace /api/greader.php /miniflux),全數穿透 Authelia SSO 白名單並直達 Miniflux 容器。caddy/Caddyfile 與本機 SSD ~/Gemini-local/caddy/Caddyfile。docker exec caddy-orbstack caddy validate --config /etc/caddy/Caddyfile 校驗通過 (Valid configuration)。docker restart caddy-orbstack 重啟生效。POST /accounts/ClientLogin:成功穿透,回傳 401 Unauthorized(由 Miniflux 回應,徹底根絕 Plex 404)。GET /reader/api/0/user-info:成功穿透,回傳 401 Unauthorized(由 Miniflux 回應,徹底根絕 Authelia 302)。POST /api/greader.php/accounts/ClientLogin:成功穿透,由 Miniflux 接收處理。/accounts 原生功能不受影響(維持 Plex 401 響應)。/miniflux 依然維持 Authelia SSO 302 防護。cp WORKLOG.md ~/Gemini-local/WORKLOG.md。python3 scripts/generate_worklog_html.py 更新 WORKLOG.html。scripts/com.authur.travel-plan-web.plist,要求進行 XML 語法與常駐運行狀態全面排查。plutil -lint 驗證回傳 OK,XML 結構與結尾標籤 </plist> 100% 完整無誤。~/Library/LaunchAgents/com.authur.travel-plan-web.plist 比對,內容 100% 一致無差異。launchctl list 確認常駐進程正常運行中(PID 1026),本機 http://127.0.0.1:8896/ 響應 HTTP 200 OK,檔案與服務狀態確認無損健康。WORKLOG.html 與 2026-YEAR.html 之外,2026-TRAVEL 是否有獨立的 HTML 自動轉檔程式碼。經盤點確認先前九州旅遊計畫係由 Agent 直接雙向對齊維護 2026-TRAVEL.html,尚未建立獨立的 Python 構建腳本。scripts/build_2026_travel_html.py](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/scripts/build_2026_travel_html.py),自動讀取當前最新的毛玻璃卡片互動式 HTML 應用,自動校驗 HTML 必要標籤結構,並自 2026-TRAVEL.md 動態抓取對應版本號(v5.7)。~/Gemini/2026-TRAVEL.html)、本機 SSD(~/Gemini-local/2026-TRAVEL.html)與離線端點(~/2026-TRAVEL.html)。~/Gemini-local/scripts/ 並賦予執行權限;實測執行成功更新 3/3 個端點(160,915 位元組),經 curl -sI http://127.0.0.1:8896/travel 驗證回傳 HTTP 200 OK 正常伺服。cp WORKLOG.md ~/Gemini-local/WORKLOG.md。python3 scripts/generate_worklog_html.py 更新 WORKLOG.html。VERSION: 5.6,修改重點新增第 49 項,備忘錄同步增列 LECLERC 可麗露重點。scripts/travel-plan-web.py 元數據標籤為 最新 v5.6,描述加入 LECLERC 可麗露,重啟 launchd 常駐服務。~/Gemini-local/ 與 GoogleDrive.../Gemini/)全面鏡像同步更新。VERSION: 5.7,修改重點新增第 50 項。[!CAUTION] 警示區塊特別點名努努雞等冷炸雞肉製品嚴禁攜帶入境台灣,務必在當地飯店享用完畢。section-food 新增 Food Item 13 努努雞毛玻璃卡片(含「⚠️ 禁帶回台・在地宵夜神物」醒目標籤、特色吃法、門市資訊、檢疫紅字警示與マイング介紹按鈕)。section-souvenir 頂部紅色警示框加入努努雞嚴禁入境回台提醒。section-notes 備忘錄區塊加入努努雞特色與檢疫警示。scripts/travel-plan-web.py 元數據標籤為 最新 v5.7,描述加入努努雞冷炸雞,重啟 launchd 常駐服務。~/Gemini-local/ 與 GoogleDrive.../Gemini/)全面鏡像同步更新。VERSION: 5.5,修改重點新增第 48 項,備忘錄同步更新。scripts/travel-plan-web.py 元數據標籤為 最新 v5.5,重啟 launchd 常駐服務熱生效。~/Gemini-local/ 與 GoogleDrive.../Gemini/)全面鏡像同步更新。scripts/usenet_bf_monitor.py):
urllib.request, xml.etree.ElementTree, json, hashlib),無需額外安裝 pip 套件,具備極致開箱即用與穩定性。site:reddit.com/r/usenet "black friday"、"megathread" 與提供商關鍵字,以秒級速度擷取社群驗證之最新隱藏優惠連結。data/usenet_monitor_state.json):
seen_deals 狀態池與偵測時間戳記。.env.local 讀取 TELEGRAM_BOT_TOKEN 與 TELEGRAM_CHAT_ID(零明文外洩),排版發送包含提供商、骨幹類別、角色定位、歷史標竿價、WORKLOG 評估建議與直達連結之 HTML 美化通知。display notification 與 Glass 音效,第一時間於 Mac Mini / 桌面螢幕彈出提示。python3 scripts/usenet_bf_monitor.py --check:手動立即執行一次全量巡檢。python3 scripts/usenet_bf_monitor.py --test-notify:發送模擬測試卡片以驗證推播鏈。python3 scripts/usenet_bf_monitor.py --status:檢視狀態檔案、已記錄情報數量與供應商清單。python3 scripts/usenet_bf_monitor.py --force:強制重發通知。python3 scripts/usenet_bf_monitor.py --daemon --interval 3600:常駐守護行程模式。scripts/com.authur.usenet-bf-monitor.plist](file:///Users/authur/Library/LaunchAgents/com.authur.usenet-bf-monitor.plist)。StartInterval 為 3600 秒 (每小時),開機自動加載 (RunAtLoad: true),日誌自動輸出至 logs/usenet-bf-monitor.log。~/Library/LaunchAgents/ 並以 launchctl load 成功加載(實測執行代碼為 0,順利推播模擬測試與首次巡檢情報)。python3 scripts/generate_worklog_html.py 重新生成最新 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html)。~/Gemini-local/ 與 GoogleDrive.../Gemini/)全面鏡像同步更新。usenet_bf_web.py・Port 8895) 與開機常駐守護 (LaunchAgent No.33)KeepAlive: true / RunAtLoad: true),確保主機重啟後零延遲自動提供服務。scripts/usenet_bf_web.py):
http.server.ThreadingHTTPServer,提供高並發非阻塞處理,完全支援 GET、POST、HEAD(適配 Uptime Kuma 與健康探針)。#0b0f19 搭配 #38bdf8 霓虹光暈)。GET /:載入毛玻璃響應式 Web 儀表板。GET /health 或 /api/health:回傳 {"status": "ok", "service": "usenet-bf-web"},供 Uptime Kuma 服務探針。GET /api/status:回傳系統完整狀態、監控供應商清單、Telegram 密鑰就緒狀態。GET /api/deals:回傳目前已追蹤之所有特惠資訊 JSON,自動附帶指南建議。POST /api/scan:非同步背景發起即時全網特惠掃描,並以 Toast 即時回饋使用者。POST /api/notify-test:即時發送一則模擬特惠卡片至 Telegram Bot 與 macOS 桌面通知。scripts/com.authur.usenet-bf-web.plist](file:///Users/authur/Library/LaunchAgents/com.authur.usenet-bf-web.plist)。KeepAlive: true(若進程異常自動拉起重啟)與 RunAtLoad: true(開機登入立即啟動)。logs/usenet-bf-web.log。~/Library/LaunchAgents/ 並以 launchctl load 成功啟動註冊(實測 curl http://127.0.0.1:8894/health 回傳 200 OK,為避免與 Port 8895 ext-checker 衝突,專屬埠號定為 8894)。restaurant-booking・Port 8899) 反向代理空白頁面問題與開機常駐守護 (LaunchAgent No.34)https://mac-mini-pro.tail9ccc63.ts.net:8449/restaurant-booking/ 出現空白頁面。caddy-orbstack 日誌發現關鍵錯誤紀錄:dial tcp 0.250.250.254:8899: connect: connection refused (HTTP 502)。restaurant_booking_web.py,未納入 macOS launchctl 常駐託管。當遠端 Terminal 離線或主機重開機後,進程自動終止,導致 Caddy 反向代理無效上游回傳空內容(Safari 渲染為全白頁面)。BookingRequestHandler 新增 _normalize_path() 輔助函式,自動剝離 /restaurant-booking 前綴(相容反向代理 handle_path 與直接存取模式)。do_HEAD 存活探針支援,相容 Homepage 與 Uptime Kuma 探針檢測。scripts/com.authur.restaurant-booking.plist](file:///Users/authur/Library/LaunchAgents/com.authur.restaurant-booking.plist)。RunAtLoad: true 與 KeepAlive: true,確保任何異常崩潰或重開機自動秒級拉起。logs/restaurant-booking.log。~/Gemini-local/restaurant_booking_web.py) 與 Google Drive。com.authur.restaurant-booking.plist(PID: 34309 穩定運行中)。curl http://host.docker.internal:8899/ 回傳 HTTP 200 OK,頁面自動輪詢日誌與任務狀態均正常回傳 200,空白頁面問題徹底根除。python3 scripts/generate_worklog_html.py 產出最新 [WORKLOG.html](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/WORKLOG.html)。~/Gemini-local/ 與 GoogleDrive.../Gemini/)全面鏡像同步更新。check-browser-extensions-web.py)於 Homepage 儀表板更換為適當之專屬圖示,並修正健康檢測探針狀態。python.png 升級為 mdi-puzzle-#8b5cf6。#8b5cf6)色彩,與儀表板其他服務形成清晰視覺對比。check-browser-extensions-web.py):
do_HEAD 探針支援:原程式碼僅支援 do_GET,致使 Homepage ping: http://host.docker.internal:8895 發送 HEAD 探針時回傳 HTTP 501,導致 Homepage 顯示離線紅燈。補齊 do_HEAD 後實測回傳 HTTP 200 OK,恢復綠燈常亮。~/Library/Application Support/BraveSoftware/ 時可能引發 PermissionError: [Errno 1],加入安全例外攔截與日誌提示,防止 HTTP 處理執行緒未回覆即崩潰斷線(curl 52)。do_GET 加入全域 try...except 封裝,保障服務即使遇到特定瀏覽器設定異常亦能回傳完整 HTML 結構。Gemini-local 與 Claude/media-stack),並透過 launchctl kickstart -k gui/501/com.authur.check-browser-extensions 成功重啟進程(PID: 35548)。homepage/config/services.yaml](file:///Users/authur/Gemini-local/homepage/config/services.yaml),重啟 homepage-orbstack 容器,實測內部 /api/services 與容器內探針 wget --spider http://host.docker.internal:8895 均已回傳 200 OK。~/Gemini-local/ 與 GoogleDrive.../Gemini/)全面鏡像同步更新。建立日期:2026-10-13
說明:彙整 Gemini 工作區內 Markdown 文件自動化發布至 Doc Hub 的通用架構、ghtml 命令列工具、iOS 深色毛玻璃排版規範、iPhone「加入主畫面」PWA 運作原理與 AI 溝通 Prompt 範式。
WORKLOG.md、DISASTER-RECOVERY-RUNBOOK.md、2026-YEAR.md 等各自依賴獨立 Python 腳本(generate_worklog_html.py, build_runbook_html.py, build_2026_year_html.py),新增 Markdown 文件無法通用轉檔。scratch/md_to_html.py 係為其他系統 (Jetski) 設計,輸出至 Jetski_Docs_Hub/ 且為舊版白底風格,與當前 Gemini Doc Hub 脫節。cp 到 ~/Gemini-local/、手動確認 Doc Hub,常因少做一步導致「未同步到 Doc Hub」。flowchart TD
MD["任意 Markdown 筆記<br/>(~/Gemini/*.md)"] -->|ghtml add| CLI["通用轉檔工具<br/>(scratch/md_to_html.py)"]
CLI --> PARSER["MarkdownIt 語法解析<br/>+ GFM Alerts + Mermaid 11<br/>+ 一鍵程式碼複製 + 表格響應"]
PARSER --> TPL["iOS 18 深色毛玻璃模板<br/>(#0a0f1d 雙向氛圍漸層光<br/>+ 返回 Doc Hub 導航鈕)"]
TPL --> DUAL["雙路徑自動同步 (Dual-Path Sync)<br/>~/Gemini/*.html ⇄ ~/Gemini-local/*.html"]
DUAL --> HUB["Doc Hub 常駐微服務<br/>(Port 8896 / travel-plan-web.py)<br/>自動即時掃描並上架首頁卡片"]
HUB --> TS["Tailscale Serve 內網穿透<br/>(mac-mini-pro.tail9ccc63.ts.net)"]
TS --> PWA["iPhone iOS Standalone PWA<br/>(加入主畫面・全螢幕原生體驗)"]
ghtml) 完整操作手冊已於 ~/.zshrc.local 配置全域別名:alias ghtml='python3 ~/Gemini/scratch/md_to_html.py '。
| 指令 | 說明 | 適用情境與行為 |
|---|---|---|
ghtml add <檔案.md> |
編譯並發布至 Doc Hub | 解析指定 Markdown,產出深色毛玻璃 HTML,雙路徑同步至 ~/Gemini 與 ~/Gemini-local,Doc Hub 首頁自動生成卡片。 |
ghtml add f1.md f2.md |
批次轉檔多個檔案 | 一次性處理多份 Markdown。 |
ghtml delete <檔案> |
從 Doc Hub 移除文件 | 自雙路徑目錄安全刪除對應的 .html(具備 WORKLOG 防誤刪保護)。 |
ghtml list (或 ls) |
檢視 Doc Hub 文件庫 | 表格化列出目前 Doc Hub 收錄的所有 HTML 檔案、容量大小、更新時間與標題。 |
ghtml (無參數) |
批次重新編譯全量核心文件 | 一鍵重新編譯 WORKLOG.md、2026-YEAR.md、DISASTER-RECOVERY-RUNBOOK.md 等核心文件並雙路徑同步。 |
ghtml help |
顯示說明手冊 | 輸出指令用法與特色清單。 |
所有由 ghtml 產出的文件均自動具備一致的 Apple 原生高階排版:
#0a0f1d(黑曜夜空深色底)。radial-gradient(左上天空青 #38bdf8 + 右下星空紫 #c084fc 柔和擴散)。rgba(17, 24, 39, 0.78) 搭配 backdrop-filter: blur(20px) 與細微光感邊框 rgba(255, 255, 255, 0.08)。linear-gradient(90deg, #38bdf8, #818cf8, #c084fc)。H1 作為大標,支援 YAML Frontmatter 自訂 Badge(如 ❄️ 北海道冬日 或 🛡️ DR RUNBOOK)與修改時間/字數副標。H2/H3 生成平滑滾動膠囊跳轉按鈕。[!NOTE] 青藍、[!TIP] 翡翠綠、[!WARNING] 琥珀橘、[!CAUTION] 霓虹紅。#111827)、等寬 Fira Code 字體、右上角一鍵複製按鈕(帶 Copy Toast 反饋)。❮ Doc Hub」,點擊直達入口首頁。<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="Doc Hub">
<meta name="theme-color" content="#0a0f1d">
https://mac-mini-pro.tail9ccc63.ts.net/。black-translucent)。| 情境 | 建議 Prompt 語句 | 說明 |
|---|---|---|
| 最省力(日常首選) | 「請幫我把 xxx.md 用 ghtml 加入 Doc Hub。」 |
核心邏輯已全面封裝,AI 看到此句會直接調用 ghtml add 完成全套排版與雙路徑發布。 |
| 指定新需求 | 「請使用 ghtml 通用轉檔工具,將指定 Markdown 編譯為 iOS 深色毛玻璃 HTML,並雙路徑同步發布至 Doc Hub。」 |
適合在全新工作區或跨節點時明確宣示完整規格。 |
| 批次刷新 | 「請執行 ghtml 刷新所有 Doc Hub 文件。」 |
AI 會直接執行無參數 ghtml 重新編譯所有核心 Markdown。 |
建立日期:2026-10-10
說明:彙整自 ~/Claude/media-stack/WORKLOG.md 與 ~/Gemini/WORKLOG.md 關於 Usenet News Server 訂閱選擇策略、骨幹多樣性防護、黑五採購建議,以及跨三台節點 (Mac Pro / Mac Mini / Mac Air) 的 SABnzbd 連線數與優先級安全架構。
避免向同一骨幹的多家分銷商 (Reseller) 重複訂閱吃到飽帳號,造成資費浪費與單點故障(當該骨幹被 DMCA 或掛掉時全部一起失效)。
| 角色定位 | 推薦 Provider | 建議方案 | 底層骨幹 (Backbone) | 用途與定位 |
|---|---|---|---|---|
| 主力 (Primary) | Newshosting | Unlimited(包月/年吃到飽) | Highwinds (Omicron, 美系) | 每日重度下載主力,單帳號 100 連線。 |
| 備用 1 (Fill 1) | TweakNews | Block account(計量買斷) | Dutch backbone (荷蘭/歐系) | 當 Newshosting 找不到檔案或遭 DMCA 下架時自動補漏 (fill)。 |
| 備用 2 (Fill 2) | UsenetFarm | Block account(計量買斷) | 完全獨立骨幹 | 極端情況兜底防線,保留天數(retention)達 15,000+ 天。 |
| 伺服器角色 | 建議方案 | 決策理由與成本分析 |
|---|---|---|
| 主力 (Newshosting) | Unlimited | 每日高頻下載,固定月費/年費具有最高成本效益。 |
| 備用 (TweakNews / UsenetFarm) | Block account | 偶爾補漏專用(單月實際用量通常僅約 5~20 GB)。買一次計量包可支撐 1~3 年,CP 值遠高於每月支付固定月費。 |
💡 Black Friday(黑色星期五)採購策略:
檢視現有備用 server(NewsDemon / Eweka / UsenetServer)是否仍在扣繳 Unlimited 固定月費/年費;若是,建議於黑五特惠時全面轉換為 Block account 計量包,避免為罕見補漏付出高額固定成本。
針對多節點環境(Mac Pro 原生 App、Mac Mini LaunchAgent 原生服務、Mac Air Docker 容器)同時下載情境,避免單一伺服器故障卡死佇列或觸發 502 Too many connections。
Priority = 0:將目前持有的吃到飽伺服器(Newshosting、NewsDemon、Eweka、UsenetServer)全部設為同一優先級(0),享受多源並行加速與故障無感轉移(單一伺服器異常其餘三家立即接手,不會卡死下載佇列)。Priority = 1:計量備用帳號(如 Bulknews)設為次級優先,僅在主力找不到區塊時才消耗計量額度兜底。避免三台機器各自開滿連線導致總和破 200~300 條遭服務商拒載(502 報錯):
| Provider | 單帳號總上限 | Mac Pro (下載主力) | Mac Mini (核心常駐) | Mac Air (筆電節點) | 跨機配置總和 |
|---|---|---|---|---|---|
| Newshosting | 100 | 40 | 30 | 20 | 90 (<=100) 🟢 |
| NewsDemon | 50 | 20 | 15 | 10 | 45 (<=50) 🟢 |
| Eweka | 50 | 20 | 15 | 10 | 45 (<=50) 🟢 |
| UsenetServer | 60 | 20 | 15 | 10 | 45 (<=60) 🟢 |
建立日期:2026-10-07
說明:整理透過 iPhone Telegram 隨身 AI 助理(@mediastack_authur_bot)遠端維運 Mac Mini 與 Mac Pro,以及搭配 macOS LaunchAgent 檔案變更自動重新編譯 HTML 文件之完整架構、指令清單與日常操作規範。
本架構由三大常駐守護服務協同運作:
com.authur.telegram-agent-bot・No.28):
TELEGRAM_CHAT_ID,其餘存取一律拒絕。com.authur.gemini-file-watcher・No.29):
2026-YEAR.md、2026-TRAVEL.md、WORKLOG.md。com.authur.gemini-daily-sync・No.30):
flowchart TB
subgraph ClientLayer["📱 iPhone 行動端(外出情境)"]
IPHONE_VOICE["🗣️ 語音 / 文字指令<br><i>「幫我開機 mac-pro」<br>「登別溫泉早餐有螃蟹嗎?」</i>"]
IPHONE_EDIT["📝 Nextcloud / 檔案 App<br><i>直接編輯 2026-YEAR.md</i>"]
IPHONE_SAFARI["🌐 Safari 行動閱讀<br><i>Docs Hub / YEAR.html / WORKLOG.html</i>"]
end
subgraph MacMini["🖥️ Mac Mini 本機常駐自動化中樞 (~/Gemini-local)"]
direction TB
subgraph BotService["1️⃣ 隨身 AI 助理:com.authur.telegram-agent-bot (LaunchAgent No.28)"]
TG_POLL["Telegram API 長輪詢<br>(Long Polling / 白名單校驗)"]
ROUTER{"意圖識別分流器"}
subgraph OpsBranch["⚙️ 系統運維自動化 (非同步守護線程)"]
MACPRO_ON["🚀 Mac Pro 開機<br>(Tapo 插座序列 ➔ OrbStack)"]
MACPRO_OFF["🛑 Mac Pro 關機<br>(容器卸載 ➔ 安全關機)"]
SYNC_CAL["🔄 雙向日曆同步<br>(vdirsyncer Google ⇄ Nextcloud)"]
REBUILD_CMD["🔨 一鍵重編 HTML<br>(auto_build_html.sh)"]
end
subgraph BrainBranch["🧠 動態領域大腦 (方案 A:0 秒即時探索)"]
DIR_SCAN["動態掃描本地知識庫<br><i>(AGENTS.md, 2026-YEAR, 2026-TRAVEL, WORKLOG, 新增.md)</i>"]
CONTEXT_LOAD["按需動態讀入硬碟檔案<br>(Zero Delay 即時硬碟讀取)"]
GEMINI_CLI["Google Gemini 2.5 Flash<br><i>(100 萬 Token 上下文・秒級零幻覺推論)</i>"]
end
end
subgraph WatcherService["2️⃣ 文件變更監聽:com.authur.gemini-file-watcher (LaunchAgent No.29)"]
WATCH_EVENT["macOS 核心事件監聽<br>(WatchPaths: 核心 .md 文件)"]
DEBOUNCE["防抖計時器 (3 秒鎖定)"]
AUTO_BUILD["自動觸發重編腳本<br>(auto_build_html.sh)"]
end
subgraph DailySyncService["3️⃣ 每日定時鏡像:com.authur.gemini-daily-sync (LaunchAgent No.30)"]
DAILY_CRON["每日凌晨 04:30 排程觸發"]
RSYNC_MIRROR["rsync 雙路徑增量鏡像<br>(Google Drive ➔ 本機 SSD)"]
TRIGGER_BUILD["全量重新編譯所有 HTML"]
end
end
subgraph OutputLayer["📄 知識產出與發布層"]
MD_FILES["核心 Markdown 庫<br>(Single Source of Truth)"]
HTML_OUTPUT["美化行動網頁 HTML<br>(YEAR.html, TRAVEL.html, WORKLOG.html)"]
DOCS_HUB["Docs Hub Web 服務<br>(Port 8896 / Tailscale Serve HTTPS)"]
end
%% 呼叫與控制流
IPHONE_VOICE -->|"Telegram Bot API"| TG_POLL
TG_POLL --> ROUTER
ROUTER -->|"運維指令<br>(開關機/同步/重編)"| OpsBranch
ROUTER -->|"行程詢問 / 知識查詢 / 文件修改"| BrainBranch
DIR_SCAN --> CONTEXT_LOAD
MD_FILES --> CONTEXT_LOAD
CONTEXT_LOAD --> GEMINI_CLI
GEMINI_CLI -->|"即時精準繁中回覆"| TG_POLL
TG_POLL -->|"推播回傳 iPhone"| IPHONE_VOICE
OpsBranch -->|"背景執行完成"| TG_POLL
IPHONE_EDIT -->|"WebDAV 存檔"| MD_FILES
MD_FILES -->|"觸發檔案異動"| WATCH_EVENT
WATCH_EVENT --> DEBOUNCE --> AUTO_BUILD
DAILY_CRON --> RSYNC_MIRROR
RSYNC_MIRROR --> MD_FILES
RSYNC_MIRROR --> TRIGGER_BUILD
AUTO_BUILD --> HTML_OUTPUT
TRIGGER_BUILD --> HTML_OUTPUT
REBUILD_CMD --> HTML_OUTPUT
HTML_OUTPUT --> DOCS_HUB
DOCS_HUB -->|"Tailscale 內網加密直達"| IPHONE_SAFARI
| 指令 / 語音語意 | 執行動作 | 運作說明與耗時 |
|---|---|---|
/macpro_on🗣️ 「幫我開機 mac-pro」 |
啟動 Mac Pro 開機序列 | 觸發 Tapo 智慧插座序列放電與通電,等待開機後自動喚醒 OrbStack 容器與原生服務(耗時約 1~2 分鐘,多執行緒非同步執行並主動回報)。 |
/macpro_off🗣️ 「幫我關機 mac-pro」 |
安全關閉 Mac Pro | 遠端安全卸載容器、執行中央服務備份,並安全關閉主機與智慧插座電源。 |
/rebuild🗣️ 「重新編譯」 |
一鍵重編所有 HTML | 重新執行 build_2026_year_html.py、build_2026_travel_html.py 與 generate_worklog_html.py,完成雙路徑同步並回傳線上預覽連結(耗時約 1.5 秒)。 |
/sync_cal🗣️ 「同步日曆」 |
雙向日曆同步 | 觸發 vdirsyncer 執行 Google Calendar ⇄ Nextcloud 日曆雙向同步。 |
/update_containers [mini|air|pro]🗣️ 「更新容器」 |
批次更新容器叢集 | 觸發指定主機(mini/air/pro)拉取最新映像檔、熱重載並清理舊映像。 |
/status |
系統狀態診斷 | 回報 Mac Mini CPU 負載、可用磁碟容量、Docker 運行容器數量與目前時間。 |
/year <內容> |
追加筆記至北海道行程 | 極速將備忘註記追加至 2026-YEAR.md 末端,並自動觸發 HTML 重編。 |
/travel <內容> |
追加筆記至旅遊計畫 | 極速將備忘註記追加至 2026-TRAVEL.md 末端,並自動觸發 HTML 重編。 |
| 🎙️ 錄音語音訊息 | 本機 Whisper 語音轉譯 | 支援 Telegram 原生語音錄音訊息,自動經由本機 Faster-Whisper ASR 轉譯中文並無縫執行指令或推論。 |
/help |
功能說明選單 | 顯示指令列表與操作說明。 |
2026-YEAR.md。最後更新日期:2026-09-23(原建立:2026-09-22)
說明:整理台灣各家銀行信用卡免費道路救援服務規則,涵蓋「完全免消費門檻」(持卡並事先登錄即享)、「低消費門檻(小資友善)」以及各大主流銀行「有消費門檻(月刷/年刷達標)」卡別清單、拖吊里程限制、重要排除卡別與避坑守則。
| 發卡銀行 | 適用卡別 | 免費次數與里程 | 權益細節與登錄規定 |
|---|---|---|---|
| 玉山銀行 | 玉山世界卡 (含南山世界卡等指定頂級卡) |
• 每年上限 6 次 • 同縣市不限里程 • 跨縣市 50 公里 內免費 |
• 完全免檢核刷卡消費門檻 • 歸戶登錄生效日起享權益,每卡最多登錄 2 台車 • 需於使用前 3 個營業日完成車號登錄 |
| 國泰世華 | 世界卡 / 無限卡 (如國泰世界卡、長榮極致無限卡、亞萬世界卡等;注意:不含 CUBE 卡) |
• 每年最高 2 次 • 每次 50 公里 免費拖吊 |
• 免檢核前月/前期消費(一般卡需前 3 個月滿 2 萬,世界/無限卡豁免) • 需事先完成車號登錄 • 需透過國泰世華專屬特約專線報修 |
| 華南銀行 | 領航極致尊榮卡 | • 每月 1 次(全年最高 12 次) • 每次 50 公里 免費拖吊 |
• 無消費門檻 • 需事先向華南銀行完成車號登錄程序 |
| 聯邦銀行 | 珍鑽悠遊無限卡 / 理財型無限卡 / 國旅卡(指定頂級卡別) | • 每年最高 3 次 • 每次 100 公里 免費拖吊 |
• 持卡期間免消費門檻 • 需至官網完成車號登錄(第 4 個營業日生效) |
備註:以上卡別多屬於頂級卡(世界卡/無限卡等級),享有免消費檢核之專屬禮遇,多數需具備銀行特定理財會員身分或繳納正卡年費。
若未持有上述免門檻頂級卡,以下為目前市場上門檻最低、最容易達成的替代方案:
| 發卡銀行 | 適用卡別 | 消費門檻要求 | 免費次數與里程 |
|---|---|---|---|
| 中國信託 | 鼎極卡 / LEXUS 聯名卡 | • 前 1 個月新增一般消費滿 NT$3,000,或 • 前 3 個月累計新增一般消費滿 NT$9,000 |
• 每年最高 3 次 • 每次最高 100 公里 • 需事先登錄車號(3 個工作天生效) |
| 中國信託 | 一般卡(鈦金卡 / 御璽卡 / 晶緻卡等) | • 前 1 個月新增一般消費滿 NT$3,000,或 • 前 3 個月累計新增一般消費滿 NT$9,000 |
• 每年最高 3 次 • 每次最高 50 公里 • 需事先登錄車號(3 個工作天生效) |
| 渣打銀行 | 優先理財無限卡 | • 使用服務前 3 個月內,新增一般消費滿 NT$3,000 | • 每次起吊點起 50 公里 內免費 • 無須事先登錄車號(持卡期間符合消費即享) |
| 聯邦銀行 | 聯邦世界卡 / 聯邦無限卡 | • 使用服務前 1 年內新增一般消費不限金額(有刷即可) | • 每年最高 3 次 • 每次最高 100 公里 • 需事先登錄車號(第 4 個營業日生效) |
大多數主流銀行之主力流通卡(包含一般御璽卡、鈦商卡、聯名卡),均設有前期新增消費或年度消費門檻:
| 發卡銀行 | 適用卡別 | 消費門檻要求 | 免費次數與里程 | 登錄與生效規定 |
|---|---|---|---|---|
| 台北富邦 | 尊御世界卡 | 前期帳單新增一般消費滿 NT$10,000 以上 | • 每年最高 6 次 • 每次 50 公里 免費拖吊 |
需事先透過網銀/客服登錄車號,登錄後 3 個營業日 生效 |
| 台北富邦 | 世界卡 / 無限卡 / Costco聯名卡 / 御璽卡 / 鈦金卡 / J卡 等 | 前期帳單新增一般消費滿 NT$20,000 以上 | • 每年最高 3 次 • 每次 50 公里 免費拖吊 |
需事先登錄車號,登錄後 3 個營業日 生效;每卡限登 1 車,歸戶限 2 車 |
| 台新銀行 | 頂級卡(環球/亞洲/昇恆昌無限卡、尊爵世界卡、台新商務卡、雙幣卡等) | 前期帳單消費滿 NT$12,000 以上 | • 每年最高 6 次 • 每次 50 公里 免費拖吊 |
需事先至台新官網登錄車號,登錄後 3 個工作天 生效 |
| 台新銀行 | 一般卡(太陽卡、玫瑰卡、各御璽/鈦金卡等) | 前期帳單消費滿 NT$12,000 以上 (太陽/玫瑰卡須於附加權益中勾選「道路救援」) |
• 每年最高 3 次 • 每次 30 公里 免費拖吊 |
需事先登錄車號(3 個工作天生效);每卡限登 1 車 |
| 永豐銀行 | 永豐世界卡 / 無限卡 | 使用服務前 1 個月帳單新增一般消費滿 NT$10,000 以上 (新卡友核卡後 3 個月內免門檻) |
• 每年最高 3 次 • 每次 50 公里 免費拖吊 |
需至全鋒道路救援網站登錄車號,登錄後 3 個工作日 生效 |
| 永豐銀行 | 55688 聯名卡 | 使用服務前 1 個月帳單新增一般消費滿 NT$20,000 以上 | • 每年最高 3 次 • 每次 50 公里 免費拖吊 |
需事先登錄車號,登錄後 3 個工作日 生效 |
| 兆豐銀行 | 頂級卡(世界卡 / 無限卡 / 美福無限卡)及 一般卡(利多御璽卡、商旅卡等) | 使用權益前 1 個月新增一般消費達 NT$20,000 以上 | • 每年最高 2 次 • 頂級卡 50 公里,一般卡 30~50 公里 |
需透過兆豐網銀或 App 登錄車號,登錄後 3 個營業日 生效;現場限出示實體卡 |
| 玉山銀行 | 一般卡 / 御璽卡 / 鈦金卡 / 各聯名卡(非世界卡等級) | 申請日往前推算 1 年,歸戶累計新增消費滿 NT$100,000 | • 每年最高 6 次 • 同縣市不限里程 • 跨縣市 50 公里 內免費 |
需透過「玉山 Wallet App」完成車號登錄;每卡最多登錄 2 輛車 |
| 聯邦銀行 | 一般卡(幸福M卡、賴點卡、吉鶴卡、各御璽/鈦商卡) | 使用服務前 1 年內,歸戶累計新增一般消費滿 NT$100,000 (大立/微風無限卡滿 6 萬元可使用 1 次) |
• 每年最高 1~2 次 • 每次 50 公里 免費拖吊 |
需事先至官網登錄車號,登錄後 第 4 個營業日 生效;聯邦綠卡御璽卡不適用 |
建立日期:2026-09-13
說明:釐清 ~/Gemini(Google Drive 雲端同步原始碼中心)與 ~/Gemini-local(本機 SSD 執行副本與活體資料庫)的 Git 版本控制邊界,確保不發生跨機同步衝突與機密/資料庫污染。
flowchart TB
subgraph GoogleDrive["雲端同步區:~/Gemini (Google Drive)"]
direction TB
subgraph Tracked["✅ 納入 Git 版控 (Tracked)"]
T1["核心維運腳本<br>(start/stop-work-orbstack.sh,<br>nas-backup-central-orbstack.sh,<br>antigravity-quota-web.py, scripts/*)"]
T2["容器與反向代理配置<br>(docker-compose.yml,<br>docker-compose-macpro.yml,<br>caddy/Caddyfile)"]
T3["Web UI 服務配置<br>(homepage/config/*.yaml,<br>homarr/configs/default.json,<br>authelia/configuration.yml)"]
T4["架構與 Agent 規範文件<br>(ARCHITECTURE.md, AGENTS.md,<br>GEMINI.md, .agents/rules/*)"]
T5["Worklog 快照<br>(.worklog-snapshots/)"]
end
subgraph Ignored["🚫 必須 Ignore 排除 (Ignored)"]
I1["【機密與憑證】<br>*.env.local, *.local.env, *.env<br>caddy/data/**/*.key, *.crt, *.pem<br>passwords-export/"]
I2["【活體資料庫與狀態】<br>*.db, *.sqlite, *.sqlite3<br>*-wal, *-shm, *-journal<br>(如 authelia/db.sqlite3, wallos/db/*)"]
I3["【快取與編譯產物】<br>__pycache__/, *.pyc<br>*-embeddings-cache.json<br>(如 joplin/karakeep cache)"]
I4["【日誌與暫存區】<br>logs/, *.log<br>scratch/<br>.DS_Store"]
I5["【舊服務資料目錄殘留】<br>open-webui/, miniflux/, netdata/<br>grafana/, vaultwarden/, uptime-kuma/<br>caddy/data/, caddy/config/"]
I6["【高頻快速膨脹文件】<br>WORKLOG.md<br>(改由腳本定期產出快照追蹤)"]
end
end
subgraph LocalSSD["本機 SSD 專屬區:~/Gemini-local"]
GITDIR["獨立 Git 儲存庫<br><b>.gemini-git/</b><br>(GIT_DIR - 完全不經雲端同步)"]
RUNTIME["容器活體數據與日誌<br>(bind mounts, logs/, 執行中 DB)"]
BACKUP["外接硬碟備份維運<br>(nas-backup-central-orbstack.sh)"]
end
GITDIR -.->|"GIT_WORK_TREE<br>(追蹤與 checkpoint)"| Tracked
Ignored -.->|"依 .gitignore 隔離<br>不進版本庫"| GITDIR
RUNTIME -.->|"定期快照與 Dump"| BACKUP
~/Gemini 與 ~/Gemini-local 版控職責分工| 維度 | ~/Gemini (Google Drive) |
~/Gemini-local (本機 SSD) |
|---|---|---|
| 定位 | 原始碼與設定檔的單一真相來源 (Source of Truth) | 本機執行副本與容器運行區 (Runtime Workspace) |
| Git 角色 | 作為 GIT_WORK_TREE,完整追蹤所有程式碼與設定檔變更 |
不建立獨立 Git repo(避免雙重維護與版本漂移) |
.git 資料庫存放 |
❌ 嚴禁存於此處(Google Drive 同步微型檔案易損壞) | ✅ 內部資料存在 ~/Gemini-local/.gemini-git(純本地 SSD) |
| 資料復原手段 | auto-checkpoint.sh(每 30 分鐘自動 commit 快照) |
nas-backup-central-orbstack.sh(外接硬碟 DB Dump) |
| 終端機日常操作 | 已設定專屬別名 ggemini(直接敲 ggemini status / diff / log) |
不需要操作 Git |
為了在終端機操作時免輸入冗長參數,已於 ~/.zshrc.local 設定全域別名:
alias ggemini='git --git-dir=$HOME/Gemini-local/.gemini-git --work-tree="$HOME/Gemini"'
在終端機的任何目錄下,直接使用 ggemini 代替 git,指令語法與平常完全相同:
| 常用指令 | 說明 | 適用情境 |
|---|---|---|
ggemini status |
查看工作區狀態與修改中檔案 | 修改設定檔或腳本前後快速確認 |
ggemini diff |
比對尚未暫存的修改細節 | 檢查參數調整、避免手滑改錯 |
ggemini log --oneline -n 5 |
查看最近 5 筆 Commit 與 Checkpoint 快照 | 查詢歷史紀錄或確認自動快照是否正常 |
ggemini add <file> |
將修改檔案加入暫存區 | 準備提交特定檔案 |
ggemini commit -m "msg" |
正式提交變更 | 完成功能修改或修復後留下記錄 |
ggemini checkout -- <file> |
還原某檔案至上一版乾淨狀態 | 改壞時立即恢復原狀 |
ghtml)已於 ~/.zshrc.local 設定通用轉檔別名:
alias ghtml='python3 ~/Gemini/scratch/md_to_html.py '
| 常用指令 | 說明 | 適用情境 |
|---|---|---|
ghtml |
重新編譯所有文件與 Docs Hub 清單 | 批次全面刷新 |
ghtml add <檔案.md> |
將 Markdown 轉成 HTML 並加入 Docs Hub | 建立或更新說明文件時快速產出漂亮網頁 |
ghtml delete <檔案.md> |
從 Docs Hub 移除文件並重新編譯清單 | 刪除過期文件 |
ghtml list |
檢視目前 Docs Hub 內所有收錄的文件 | 快速查閱目前文件庫清單 |
~/Gemini 必須 Ignore 之詳細清單與原因| 分類 | 具體路徑 / Pattern | 排除原因 |
|---|---|---|
| 1. 機密檔案 | .env.local, *.env*, *.local.env |
包含所有 API Keys、SSO 密碼、Token,嚴禁進版控 |
| 2. 私密憑證金鑰 | caddy/data/, *.key, *.pem, *.crt |
Caddy 自動簽署之 ACME/內部 CA 私鑰與憑證,屬運行產物且具敏感性 |
| 3. 活體資料庫 | *.sqlite, *.sqlite3, *.db, *-wal, *-shm |
包含 authelia/db.sqlite3、wallos/db/* 等二進位檔案,避免衝突與鎖定 |
| 4. 快取與 AI 嵌入資料 | __pycache__/, *.pyc, *-embeddings-cache.json |
Python 編譯檔、Joplin/Karakeep 的 vector embeddings 暫存(體積大) |
| 5. 舊資料殘留目錄 | open-webui/, miniflux/, netdata/, grafana/, vaultwarden/, uptime-kuma/ |
容器已全面遷至 ~/Gemini-local,此為 Google Drive 上的舊殘留目錄 |
| 6. 日誌與暫存目錄 | logs/, scratch/, *.log, .DS_Store |
本機日誌與臨時實驗腳本,無版控意義 |
| 7. 快速膨脹紀錄檔 | WORKLOG.md |
常態頻繁編輯且累積極快,由 worklog-snapshot.sh 定期存入快照目錄追蹤 |
依照 AGENTS.md 規範,GEMINI.md 符號連結透過 macOS chflags -h uchg 鎖定以防止 IDE/CLI 自動存檔覆蓋。此鎖定機制對 Git 的影響與異常處置流程如下:
AGENTS.md(未鎖定)。git add / git commit / git diff / git status / auto-checkpoint.sh 均為讀取操作,完全正常。git reset --hard HEAD 若檔案無異動,Git 會自動略過寫入,亦能順利通過。GEMINI.md 尚為實體檔案或不存在的極早期歷史 Commit。unlink() 會觸發核心防護並報錯:error: unable to unlink 'GEMINI.md': Operation not permitted。# 步驟 1:暫時解除 symlink 鎖定
chflags -h nouchg ~/Gemini/GEMINI.md
# 步驟 2:執行所需的 Git 指令(checkout / reset / merge)
git checkout <branch_or_commit>
# 步驟 3:操作完成後立即鎖回保護(⚠️ 務必加 -h 旗標,防止鎖到實體檔案)
chflags -h uchg ~/Gemini/GEMINI.md
建立日期:2026-09-13
說明:記錄由 macOS launchctl(位於 ~/Library/LaunchAgents/)統一託管、開機自動加載或常駐運行的服務清單。
| No. | 服務名稱 (Service Name) | Launchd Label / Plist | 類別 (Category) | 預設埠 (Port) | 啟動模式 (Mode) | 核心職責與說明 (Description) |
|---|---|---|---|---|---|---|
| 01 | Gemini OrbStack Lifecycle | com.authur.gemini-orbstack-lifecycle |
系統守護 | - | 常駐 (KeepAlive) | 開關機生命週期管理員:開機等 OrbStack 就緒後自動執行 start-work-orbstack.sh;關機捕捉 SIGTERM 快速執行 stop-work-orbstack.sh --skip-backup 優雅關閉所有容器。 |
| 02 | Plex Media Server | com.authur.plex |
原生影音串流 | 32400 |
常駐 (KeepAlive) | 核心影音媒體伺服器,負責多媒體庫管理與硬體串流播放。 |
| 03 | Emby Server | com.authur.emby |
原生影音串流 | 8096 |
常駐 (KeepAlive) | 次要多媒體伺服器,提供跨平台串流與外掛播放。 |
| 04 | Jellyfin Server | com.authur.jellyfin |
原生影音串流 | 8097 |
常駐 (KeepAlive) | 開源影音伺服器,提供無授權限制的原生串流支援。 |
| 05 | Sonarr | com.authur.sonarr |
媒體管理與自動化 | 8989 |
常駐 (KeepAlive) | 影集自動追蹤、抓取與整理工具。 |
| 06 | Radarr | com.authur.radarr |
媒體管理與自動化 | 7878 |
常駐 (KeepAlive) | 電影自動追蹤、抓取與整理工具。 |
| 07 | Prowlarr | com.authur.prowlarr |
Indexer 整合 | 9696 |
常駐 (KeepAlive) | Usenet 與 Torrent Indexer 集中管理與同步器。 |
| 08 | SABnzbd | com.authur.sabnzbd |
下載客戶端 | 8080 |
常駐 (KeepAlive) | 主要 Usenet 高速二進位下載客戶端。 |
| 09 | qBittorrent | com.authur.qbittorrent |
下載客戶端 | 8092 |
常駐 (KeepAlive) | 原生 BitTorrent 種子下載客戶端。 |
| 10 | NZBGet | homebrew.mxcl.nzbget |
下載客戶端 | 6789 |
常駐 (KeepAlive) | 輕量高效能 Usenet 下載服務 (Homebrew 託管)。 |
| 11 | File Sync Web | com.authur.file-sync-web |
Python 微服務 | 8892 |
常駐 (KeepAlive) | Google Drive (~/Gemini) 與本地副本 (~/Gemini-local) 雙向同步網頁工具。 |
| 12 | RSS API | com.authur.rss-api |
Python 微服務 | 8891 |
常駐 (KeepAlive) | RSS 聚合、過濾與轉換專用 API 服務。 |
| 13 | RSS NZB Monitor | com.authur.rss |
Python 微服務 | 8890 |
常駐 (KeepAlive) | 自動化 RSS 訂閱源與 NZB 下載串接服務。 |
| 14 | SAB Category UI | com.authur.sab-category |
Python 微服務 | 8889 |
常駐 (KeepAlive) | SABnzbd 下載分類快速切換與管理網頁介面。 |
| 15 | Native App Upgrader | com.authur.upgrade-native-app |
Python 微服務 | 8893 |
常駐 (KeepAlive) | 原生 macOS 影音應用程式 (Sonarr/Radarr 等) 自動化更新微服務。 |
| 16 | Browser Ext Checker | com.authur.check-browser-extensions |
Python 微服務 | 8895 |
常駐 (KeepAlive) | 瀏覽器套件安全與異動監控網頁儀表板。 |
| 17 | Beszel Agent | com.authur.beszel-agent |
系統監控 | 8295 |
常駐 (KeepAlive) | 本機輕量級系統資源與 Docker 數據收集 Agent。 |
| 18 | Ollama | sh.brew.ollama |
本機 AI 模型 | 11434 |
常駐 (KeepAlive) | 本機大型語言模型 (LLM) 推論引擎 (Homebrew 託管)。 |
| 19 | Passwords Export Watch | com.authur.passwords-export-watch |
安全維運 | - | 事件監聽 (Watcher) | 監控密碼庫手動匯出檔案變動並自動處理。 |
| 20 | Passwords Export Reminder | com.authur.passwords-export-reminder |
安全維運 | - | 定期排程 (Scheduled) | 週期性提醒進行密碼庫離線備份。 |
| 21 | Database Local Backup | com.authur.db-backup |
備份任務 | - | 按需/排程 (On-Demand) | 媒體堆疊各項資料庫本機快照備份。 |
| 22 | Vaultwarden Backup | com.authur.vaultwarden-backup |
備份任務 | - | 按需/排程 (On-Demand) | Vaultwarden 數據庫與附件安全備份。 |
| 23 | Nightly Backup & Shutdown | com.authur.nightly-backup-shutdown |
維運維護 | - | 手動觸發 (Manual) | 手動夜間全量備份兼自動安全關機維運腳本。 |
| 24 | Travel Plan Web | com.authur.travel-plan-web |
Python 微服務 | 8896 |
常駐 (KeepAlive) | 2026 九州旅遊計畫專屬靜態服務,銜接 Tailscale Serve 443 端點。 |
| 25 | Nextcloud Cron | com.authur.nextcloud-cron |
背景排程 | - | 定期排程 (300s) | 定期觸發 Nextcloud 後台維護排程 (cron.php)。 |
| 26 | Nextcloud DB Backup | com.authur.nextcloud-db-backup |
備份任務 | - | 定期排程 (每日 04:00) | Nextcloud PostgreSQL 資料庫線上安全快照備份(保留最新 14 份)。 |
| 27 | Google Calendar Sync | com.authur.vdirsyncer-sync |
雙向同步 | - | 定期排程 (900s) | vdirsyncer 引擎執行 Google Calendar 與 Nextcloud 行事曆雙向同步。 |
| 28 | Telegram Agent Bot | com.authur.telegram-agent-bot |
AI 助理 | - | 常駐 (KeepAlive) | 接收 Telegram 語音/文字指令,呼叫 Gemini AI 助理修改 Markdown 並自動重編 HTML。 |
| 29 | Markdown Build Watcher | com.authur.gemini-file-watcher |
自動化構建 | - | 事件監聽 (Watcher) | 監聽 2026-YEAR.md / TRAVEL.md / WORKLOG.md 變更,3秒內自動重編所有 HTML 並雙路徑同步。 |
| 30 | Gemini Daily Sync & Rebuild | com.authur.gemini-daily-sync |
自動化同步 | - | 定期排程 (每日 04:30) | 每日凌晨增量鏡像 Google Drive 至本機 SSD,並全量重編所有 HTML 與更新助理知識庫。 |
| 31 | Containers Daily Upgrade | com.authur.containers-upgrade |
自動化維運 | - | 定期排程 (每日 05:00) | 每日凌晨離峰時段全自動執行 Docker 容器拉取、重載與舊映像清理,並透過 Telegram 推播。 |
| 32 | Usenet BF Deal Radar | com.authur.usenet-bf-monitor |
背景監控 | - | 定期排程 (每小時 3600s) | 監控各大 Usenet News Server (Newshosting/TweakNews/UsenetFarm/Eweka) 與 r/usenet 黑五特惠,自動推播 Telegram 與 macOS 通知。 |
| 33 | Usenet BF Web Dashboard | com.authur.usenet-bf-web |
Web 微服務 | 8894 | 常駐 (KeepAlive) | Usenet 黑五特惠雷達 Web 儀表板與 REST API,開機常駐啟動,支援即時查看優惠、手動觸發全量掃描與 Telegram 測試推播。 |
| 34 | Restaurant Booking Hub | com.authur.restaurant-booking |
Web 微服務 | 8899 | 常駐 (KeepAlive) | 通用型智慧餐廳訂位服務系統後台與排程器,開機常駐啟動,支援 Caddy 反向代理、Safari 自動代填小書籤與秒殺排程。 |
當系統遇到設定檔誤刪、連線異常、認證失敗或組態毀損時,可由本機 Samsung 外接硬碟(/Volumes/Samsung/gemini-media-stack-backup/)或 NAS1 備份目錄完整復原系統。
/Volumes/Samsung/gemini-media-stack-backup/YYYY-MM-DD/ (自動保留近 7 天,獨立於 Docker Desktop)/volume1/Backup/gemini-media-stack-data/YYYY-MM-DD/ (自動保留近 30 天,獨立於 Docker Desktop)系統提供互動式自動還原腳本 [restore-orbstack.sh](file:///Users/authur/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My%20Drive/Gemini/restore-orbstack.sh),可自動掃描本機 Samsung 硬碟與 NAS1 異地備份:
./restore-orbstack.sh --list./restore-orbstack.sh 2026-09-09./restore-orbstack.sh 2026-09-09 --target docker-configs (範疇選項: all, docker-configs, native-apps, databases, worklog)./restore-orbstack.sh 2026-09-09 --from-nas1./restore-orbstack.sh| 異常情境 / 故障組件 | 備份檔案來源位址 (以 2026-09-09 備份為例) | 復原處置指令 / 步驟 |
|---|---|---|
| Caddy 反向代理 / SSL / 路由異常 | docker-configs/caddy/Caddyfiledocker-configs/caddy/data/ |
cp "/Volumes/Samsung/gemini-media-stack-backup/2026-09-09/caddy/Caddyfile" "$HOME/Gemini-local/caddy/Caddyfile"cp "$HOME/Gemini-local/caddy/Caddyfile" "$WORKSPACE_DIR/caddy/Caddyfile"docker restart caddy-orbstack |
| Karakeep 密碼與 DB 驗證失效 | karakeep/data/db.dbchange_karakeep_password.sh |
cp "/Volumes/Samsung/gemini-media-stack-backup/2026-09-09/karakeep/data/db.db" "$HOME/Gemini-local/karakeep/data/db.db"docker restart karakeep-orbstack(或在 Terminal 重新執行 ./change_karakeep_password.sh 重新計算帶有 Salt 的 bcrypt Hash) |
| Authelia / SSO 帳密與權限失效 | authelia/users_database.ymlauthelia/db.sqlite3update_authelia_pass.py |
cp "/Volumes/Samsung/gemini-media-stack-backup/2026-09-09/authelia/users_database.yml" "$HOME/Gemini-local/authelia/"cp "/Volumes/Samsung/gemini-media-stack-backup/2026-09-09/authelia/db.sqlite3" "$HOME/Gemini-local/authelia/"docker restart authelia-orbstack |
| Docker Compose 設定檔損毀 | docker-configs/docker-compose.ymldocker-configs/docker-compose-macpro.yml |
cp "/Volumes/Samsung/gemini-media-stack-backup/2026-09-09/docker-compose.yml" "$HOME/Gemini-local/docker-compose.yml"cp "$HOME/Gemini-local/docker-compose.yml" "$WORKSPACE_DIR/docker-compose.yml" |
| Native macOS Apps 設定與資料庫損毀 (Plex, Sonarr, Radarr, Prowlarr, SABnzbd 等) |
native-app-configs/(含 plist, xml, ini, db 檔) |
覆蓋至 macOS 對應路徑: - Plex: ~/Library/Preferences/com.plexapp.plexmediaserver.plist- Plex XML: ~/Library/Application Support/Plex Media Server/Plug-in Support/Preferences.xml- Sonarr/Radarr: ~/.config/Sonarr/ / ~/.config/Radarr/- Prowlarr/SABnzbd: ~/Library/Application Support/Prowlarr/ / ~/Library/Application Support/SABnzbd/sabnzbd.ini |
| PostgreSQL 資料庫 (Joplin/Miniflux/Paperless) | joplin.sql.gzminiflux.sql.gzpaperless.sql.gz |
gunzip -c joplin.sql.gz | docker exec -i joplin-db-orbstack psql -U joplin joplingunzip -c miniflux.sql.gz | docker exec -i miniflux-db-orbstack psql -U miniflux minifluxgunzip -c paperless.sql.gz | docker exec -i paperless-db-orbstack psql -U paperless paperless |
Apprise 在 Docker Stack 中作為中央警報與通知轉發中心,支援將警報訊息同時轉發至 90+ 種通訊與推播平台(如 Telegram、LINE、Discord、Bark、Email 等)。
http://localhost:3001)。tgram://<bot_token>/<chat_id> 或 line://<token>)。在 docker-compose.yml 的 watchtower 服務環境變數中寫入:
- WATCHTOWER_NOTIFICATION_URL=apprise://apprise-orbstack:8000/notify/apprise?urls=tgram://<bot_token>/<chat_id>
curl -X POST "http://localhost:8000/notify" \
-d "urls=tgram://<bot_token>/<chat_id>" \
-d "title=🚀 系統備份完成" \
-d "body=Mac Mini 每日備份作業已成功完成!"
當 CPU 使用率 > 95% 或硬碟空間不足時,由 Netdata 健康告警模組觸發 Apprise 發送推播。
| 通訊平台 | Apprise URL 格式範例 |
|---|---|
| Telegram | tgram://<bot_token>/<chat_id> |
| Discord | discord://<webhook_id>/<webhook_token> |
| LINE Notify | line://<token> |
| Bark (iOS 手機推播) | bark://<device_key> |
| Ntfy | ntfy://<topic> |
| Email (SMTP) | mailto://user:pass@smtp.gmail.com |
Gemini Spark 是由 Google DeepMind 開發的個人智慧 AI 代理(Autonomous Personal AI Agent),深度整合於 macOS 系統環境,並與 Google Workspace 雲端生態系無縫串接。能夠協助使用者自動化處理本機檔案、執行終端機任務、管理日常工作流與雲端協作。
Gemini Spark 的運作劃分為三個核心範疇:
建立日期:2026-09-11
說明:記錄自 Docker Desktop 遷移至 OrbStack 後,系統 crontab 任務排程、環境變數與相關自動化備份腳本之完整配置與轉換表。
| 觸發時間 (Schedule) | 任務名稱 / 功能 | 執行指令 / 腳本 | 容器名稱 (Container) | Context / 環境 | 日誌與備註 |
|---|---|---|---|---|---|
0 3 1 * * |
TRaSH Guides 設定同步 | /opt/homebrew/bin/docker --context orbstack exec recyclarr-orbstack recyclarr sync |
recyclarr-orbstack |
orbstack |
~/Gemini-local/logs/recyclarr.log每月 1 日 03:00 執行同步 |
0 4 1 * * |
Tailscale 憑證自動更新 | /bin/zsh -l -c '~/Gemini/scripts/renew-tailscale-cert.sh' |
caddy-orbstack |
orbstack |
~/Gemini-local/logs/tailscale-cert-renew.log每月 1 日 04:00 續約並重啟 Caddy |
0 0 * * * |
Mac Pro 保險安全關機 | /bin/zsh -l -c '~/Gemini-local/mac-pro-off-orbstack.sh' |
Shell / SSH | Host | ~/Gemini-local/logs/macpro-off-cron.log每日午夜安全關閉 Mac Pro |
0 1 * * * |
.env.local 加密備份 |
/bin/zsh -l -c 'bash ~/Gemini/env-encrypt.sh' |
Shell | Host | ~/Gemini-local/logs/env-encrypt.log每日 01:00 自動加密備份敏感變數 |
55 23 * * * |
NAS2 自動關機 | /bin/zsh -l -c '~/Gemini/nas2-off.sh' |
Shell / SSH | Host | ~/Gemini-local/logs/nas2-off-cron.log每日 23:55 排程關閉 NAS2 主機 |
0 9 * * * |
OpenRouter 用量監控 | /Users/authur/Claude/openrouter/check_usage.sh |
Shell / API | Host | ~/Claude/openrouter/logs/usage_YYYY-MM-DD.log每日 09:00 統計 API 用量 |
*/30 * * * * |
SABnzbd 重複下載監控 | /bin/zsh -l -c 'bash ~/Gemini/monitor-sabnzbd.sh' |
Shell / API | Host | ~/Gemini-local/logs/sabnzbd-monitor.log每 30 分鐘自動監控 Sabnzbd 狀態 |
7 5 * * * |
NAS1 自動喚醒與中央服務備份 | /Users/authur/Gemini-local/cron-retry.sh "NAS1 開機+備份 (nas1-on.sh)" /bin/zsh -l -c '~/Gemini-local/nas1-on.sh' |
joplin-db-orbstackminiflux-db-orbstackpaperless-db-orbstackwallabag-orbstack |
orbstack |
~/Gemini-local/logs/nas1-on-cron.logWOL 喚醒 NAS1,備份 PG/SQLite/檔案至 NAS1 與外接硬碟 ( /Volumes/Samsung) |
37 6 * * * |
備份 Watchdog 檢查 | /Users/authur/Gemini-local/cron-retry.sh "備份 watchdog (backup-watchdog.sh)" /bin/zsh -l -c '~/Gemini-local/backup-watchdog.sh' |
Shell / Telegram API | Host | ~/Gemini-local/logs/backup-watchdog.log每日 06:37 檢查備份完成 marker,失敗發 Telegram 警報 |
2 7 * * * |
NAS1 自動關機 | /Users/authur/Gemini-local/cron-retry.sh "NAS1 關機 (nas1-off.sh)" /bin/zsh -l -c '~/Gemini-local/nas1-off.sh' |
Shell / SSH | Host | ~/Gemini-local/logs/nas1-off-cron.log每日 07:02 關閉 NAS1 主機 |
5,25,45 * * * * |
WORKLOG 快照進 Git | /bin/zsh -l -c 'bash ~/Gemini/worklog-snapshot.sh' |
Shell / Git | Host | ~/Gemini-local/logs/worklog-snapshot.log每 20 分鐘快照 WORKLOG.md 進 Git |
15,35,55 * * * * |
media-stack 自動 Checkpoint | /bin/zsh -l -c 'bash ~/Gemini/auto-checkpoint.sh' |
Shell / Git | Host | ~/Gemini-local/logs/auto-checkpoint.log每 20 分鐘自動 Git Checkpoint |
10 * * * * |
Karakeep 書籤語意搜尋同步 | /opt/homebrew/bin/python3 ~/Gemini/scripts/karakeep-semantic-search.py --sync |
Python / SQLite | Host | ~/Gemini-local/logs/karakeep-embed-sync.log每小時 10 分增量同步 Embedding |
20 * * * * |
Joplin 筆記語意搜尋同步 | /opt/homebrew/bin/python3 ~/Gemini/scripts/joplin-semantic-search.py --sync |
Python / Joplin API | Host | ~/Gemini-local/logs/joplin-embed-sync.log每小時 20 分增量同步 Joplin 筆記 |
40 * * * * |
瀏覽器套件變更通知 | /opt/homebrew/bin/python3 ~/Gemini/scripts/check-browser-extensions.py --notify-changes |
Python | Host | ~/Gemini-local/logs/browser-ext-notify.log每小時 40 分檢查瀏覽器套件異動 |
| 項目分類 | Docker Desktop 舊配置 | OrbStack 新配置 | 處置內容與關鍵修復說明 |
|---|---|---|---|
| Crontab 備份 | - | /Users/authur/Gemini-local/backups/crontab.docker-desktop.bak |
原 crontab -l 完整快照備份(含時間戳記備份檔) |
| Shell 環境變數 | DOCKER_CONTEXT=desktop-linux |
DOCKER_CONTEXT=orbstack |
已更新 ~/.zprofile 與 ~/.zshrc.local,並設置 docker context use orbstack |
| Crontab 最上層環境 | 未宣告預設 Context | SHELL=/bin/zshPATH=/opt/homebrew/bin:...DOCKER_CONTEXT=orbstack |
寫入 crontab 檔頭,確保 cron 背景執行的 Shell 與 Docker Context 100% 正常 |
| Recyclarr 任務 | recyclarr |
recyclarr-orbstack |
Crontab 改用 /opt/homebrew/bin/docker --context orbstack exec recyclarr-orbstack |
| Tailscale 憑證更新 | caddy / desktop-linux |
caddy-orbstack / orbstack |
更新 renew-tailscale-cert.sh 容器名稱與 DOCKER_CONTEXT |
| 中央服務備份腳本 | open -a Docker硬編碼舊容器名稱 |
open -a OrbStack動態自動對應 get_container() (如 joplin-db-orbstack) |
更新 nas-backup-central.sh (本機與 media-stack 同步),經 --local-only 實測 100% 成功 |
| 工作區指令腳本 | export DOCKER_CONTEXT=desktop-linux |
export DOCKER_CONTEXT=orbstack |
已更新 start-work.sh, stop-work.sh, backup.sh, docker-up.sh 等 10+ 支腳本 |
目前在 OrbStack 容器引擎中部署維護之容器通訊埠 (Ports) 對照表(獨立維護、新增 Containers 前務必先查詢 Docker Desktop Used Ports 避免 Port 衝突):
| 埠號 (Port) | 服務 / 容器名稱 | 說明 / 用途 | 傳輸協定 | 狀態 / 備註 |
|---|---|---|---|---|
3001 |
uptime-kuma-orbstack |
Uptime Kuma 服務監控與狀態面板 | TCP | 已部署運行 (對應內部 3001) |
3005 |
homepage-orbstack |
Homepage 現代化服務儀表板面板 | TCP | 已部署運行 (對應內部 3000) |
3081 |
open-webui-orbstack |
Open WebUI 私有 AI 介面面板 | TCP | 已部署運行 (對應內部 8080) |
7576 |
homarr-orbstack |
Homarr 服務首頁 Portal 面板 | TCP | 已部署運行 (對應內部 7575) |
8000 |
apprise-orbstack |
Apprise 通用通知與警報轉發 API | TCP | 已部署運行 (對應內部 8000) |
8088 |
watchtower-orbstack |
Watchtower HTTP API 觸發端點 | TCP | 已部署運行 (對應內部 8080) |
8089 |
caddy-orbstack |
OrbStack 專屬 Caddy HTTP 代理 | TCP | 已部署運行 (對應內部 80) |
8295 |
beszel-agent-orbstack |
Beszel 輕量化系統資源效能監控 Agent | TCP | 已部署運行 (對應內部 8295) |
8449 |
caddy-orbstack |
OrbStack 專屬 Caddy HTTPS 代理 | TCP | 已部署運行 (對應內部 443) |
9095 |
authelia-orbstack |
OrbStack 專屬 Authelia SSO 登入驗證 | TCP | 已部署運行 (對應內部 9091) |
12283 |
immich-server-orbstack |
Immich 相片與影片大容量備份庫 | TCP | 已部署運行 (對應內部 2283) |
12300 |
joplin-orbstack |
Joplin Server 筆記同步服務 | TCP | 已部署運行 (對應內部 22300) |
13000 |
grafana-orbstack |
Grafana 數據監控視覺化面板 | TCP | 已部署運行 (對應內部 3000) |
13333 |
karakeep-orbstack |
Karakeep 書籤卡片管理服務 | TCP | 已部署運行 (對應內部 3000) |
13579 |
ombi-orbstack |
Ombi 影音點片申請系統 | TCP | 已部署運行 (對應內部 3579) |
15055 |
jellyseerr-orbstack |
Jellyseerr 影音點片系統 | TCP | 已部署運行 (對應內部 5055) |
15678 |
n8n-orbstack |
n8n 工作流自動化平台 | TCP | 已部署運行 (對應內部 5678) |
16767 |
bazarr-orbstack |
Bazarr 字幕自動下載服務 | TCP | 已部署運行 (對應內部 6767) |
17777 |
plex-dupefinder-orbstack |
Plex 重複影片查找工具 | TCP | 已部署運行 (對應內部 7777) |
18010 |
paperless-orbstack |
Paperless-ngx 無紙化文件庫 | TCP | 已部署運行 (對應內部 8000) |
18082 |
miniflux-orbstack |
Miniflux 輕量 RSS 閱讀器 | TCP | 已部署運行 (對應內部 8080) |
18085 |
vaultwarden-orbstack |
Vaultwarden 密碼管理器 | TCP | 已部署運行 (對應內部 80) |
18090 |
trilium-orbstack |
Trilium Notes 階層筆記服務 | TCP | 已部署運行 (對應內部 8080) |
18094 |
subgen-orbstack |
Subgen OpenAI Whisper ASR 服務 | TCP | 已部署運行 (對應內部 9000) |
18120 |
komodo-periphery-orbstack |
Komodo Monitoring Agent | TCP | 已部署運行 (對應內部 8120) |
18181 |
tautulli-orbstack |
Tautulli Plex 數據統計分析 | TCP | 已部署運行 (對應內部 8181) |
18265-18266 |
tdarr-orbstack |
Tdarr 影片轉碼自動化 | TCP | 已部署運行 (對應內部 8265-8266) |
18282 |
wallos-orbstack |
Wallos 個人訂閱費用管理服務 | TCP | 已部署運行 (對應內部 80) |
18484 |
wallabag-orbstack |
Wallabag 稍後閱讀服務 | TCP | 已部署運行 (對應內部 80) |
19000 |
portainer-orbstack |
Portainer Docker 視覺化管理介面 | TCP | 已部署運行 (對應內部 9000) |
19090 |
prometheus-orbstack |
Prometheus 系統指標監控 | TCP | 已部署運行 (對應內部 9090) |
19120 |
komodo-orbstack |
Komodo Docker 部署與監控平台 | TCP | 已部署運行 (對應內部 9120) |
19273 |
telegraf-orbstack |
Telegraf 數據收集 Agent | TCP | 已部署運行 (對應內部 9273) |
19999 |
netdata-orbstack |
Netdata 即時效能與系統指標監控 | TCP | 已部署運行 (對應內部 19999) |
61208 |
glances-orbstack |
Glances v3 Mac Pro 系統效能監控 REST API | TCP | 已部署運行 (對應內部 61208) |
目前系統 (Docker Desktop 及本機服務) 已佔用的通訊埠 (Ports) 彙整表:
| 埠號 (Port) | 服務 / 容器名稱 | 說明 / 用途 | 傳輸協定 |
|---|---|---|---|
80 |
caddy |
Caddy Web Server (HTTP) | TCP |
443 |
caddy |
Caddy Web Server (HTTPS) | TCP |
2283 |
immich-server |
Immich 相片管理服務 | TCP |
3000 |
grafana |
Grafana 數據監控面板 | TCP |
3080 |
open-webui |
Open WebUI 私有 AI 介面 (Docker Desktop 原始對外埠) | TCP |
3333 |
karakeep |
Karakeep 書籤/卡片管理 | TCP |
3579 |
ombi |
Ombi 影音點片申請系統 | TCP |
5055 |
jellyseerr |
Jellyseerr 影音點片系統 | TCP |
5678 |
n8n |
n8n 工作流自動化平台 | TCP |
6767 |
bazarr |
Bazarr 字幕自動下載服務 | TCP |
6789 |
nzbget (Host) |
NZBGet Usenet 下載器 | TCP |
7575 |
homarr |
Homarr 個人儀表板 | TCP |
7777 |
plex-dupefinder |
Plex 重複影片查找工具 | TCP |
8010 |
paperless-ngx |
Paperless-ngx 文件無紙化管理 | TCP |
8080 |
SABnzbd (Host) |
SABnzbd Usenet 下載器 | TCP |
8082 |
miniflux |
Miniflux RSS 閱讀器 | TCP |
8085 |
vaultwarden |
Vaultwarden 密碼管理器 (Host/Docker Desktop) | TCP |
8090 |
trilium |
Trilium Notes 筆記服務 | TCP |
8092 |
qBittorrent (Host) |
qBittorrent Web UI | TCP |
8094 |
subgen (Whisper ASR) |
OpenAI Whisper 語音轉文字 | TCP |
8096 |
EmbyServer (Host) |
Emby 媒體伺服器 | TCP |
8097 |
jellyfin (Host) |
Jellyfin 媒體伺服器 | TCP |
8120 |
komodo-periphery |
Komodo Monitoring Agent | TCP |
8181 |
tautulli |
Tautulli Plex 數據統計分析 | TCP |
8265-8266 |
tdarr |
Tdarr 影片轉檔自動化 | TCP |
8282 |
wallos |
Wallos 訂閱費用管理服務 | TCP |
8295 |
beszel-agent |
Beszel 系統效能監控 | TCP |
8443 |
caddy |
Caddy 自訂 HTTPS 管理 | TCP |
8484 |
wallabag |
Wallabag 稍後閱讀服務 | TCP |
8888 |
vaultwarden |
Vaultwarden 密碼管理器 | TCP |
8894 |
usenet-bf-web (Host) |
Usenet 黑五特惠雷達 Web 儀表板與 REST API | TCP |
8895 |
ext-checker (Host) |
瀏覽器擴充功能檢查 Web 服務 | TCP |
8897 |
antigravity-quota-web (Host) |
Antigravity IDE 模型配額與流速監控 Web 微服務 | TCP |
8899 |
restaurant-booking (Host) |
通用型智慧餐廳訂位服務系統後台與排程器 | TCP |
8989 |
Sonarr (Host) |
Sonarr 電視劇集自動追劇 | TCP |
9000 |
portainer |
Portainer Docker 視覺化管理介面 | TCP |
9091 |
authelia |
Authelia SSO 驗證服務 | TCP |
9090 |
prometheus |
Prometheus 系統指標監控 | TCP |
9120 |
komodo |
Komodo Docker 部署與監控平台 | TCP |
9273 |
telegraf |
Telegraf 數據收集 Agent | TCP |
9696 |
Prowlarr (Host) |
Prowlarr Indexer 索引管理 | TCP |
11434 |
ollama (Host) |
Ollama 本機大型語言模型 API | TCP |
22300 |
joplin |
Joplin Server 筆記同步服務 | TCP |
32400 |
Plex (Host) |
Plex Media Server 影音串流 | TCP |
獨立 Session 待追蹤與處理之系統任務:
| No. | 狀態 | 任務分類 | 任務項目 / 說明 | 建立日期 | 優先權 | 備註 / 目前進度與後續處理步驟 |
|---|---|---|---|---|---|---|
| 1 | ✅ 已完成 | 服務連線優化 | Open WebUI 外網/反向代理連線獨立查修 | 2026-09-08 | 中 | 已完成 Caddyfile 之 route { ... } 顯式順序優化,放行前端 UI (/open-webui*)、API (/api/*) 與 WebSocket (/ws*) 轉發,並通過 Tailscale HTTPS 存取驗證。 |
| 2 | ✅ 已完成 | 生活與出遊決策 | 智慧訂房平日低價雷達與出遊決策系統 (Gemini Hotel Price Radar) | 2026-10-11 | 高 | 【全系統定稿設計與實戰成果 (2026-10-13 完工驗收)】: • 服務端點: http://mac-mini-pro.tail9ccc63.ts.net:8887/(hotel_radar_web.py / hotel_radar_service.py)• 1. 核心定稿設計原則(以日本官網為主,特殊訂房才用 PayEasy 或是易遊網): - 一般標準訂房(Default 預設):一律以日本官網價格為核心基準。實測證實一般標準房型日本官網壓倒性便宜 30%~36%(如登別 Mahoroba 標準房官網僅約 JPY 24,170 / NT$ 5,200,比 OTA 便宜數千元),系統預設一律採用日本官網真房價。 - 特殊訂房(如頂規套房):才採用 PayEasy 特約或易遊網 (ezTravel)。實測證實唯有高階套房(如登別 Mahoroba 頂規【NIRE 楡】洋式私湯套房)PayEasy 特約價 (NT$ 22,464) 確實比日本官網 (NT$ 24,080) 便宜 NT$ 1,616;當上傳特殊訂房截圖時,系統自動將卡片主價格切換為特殊訂房總價並列出省額。 • 2. 易遊網 (ezTravel) 公開行情與深層直達查價整合: - 實測證實 PayEasy 價格與易遊網僅差 3 元台幣(如札幌 Solaria 3 晚易遊網 NT$ 17,070 vs PayEasy NT$ 17,073),證實其底層貨源一致。 - 卡片提供深層帶參數連結直達按鈕 🇹🇼 易遊網直達查價 ↗,無需繁瑣登入截圖即可秒看台灣 OTA 公開行情。• 3. ✈️ 星宇航空機票依出遊方案日期獨立綁定與截圖 OCR: - 後端支援 /api/ocr_starlux,直接拖曳或 Cmd+V 貼上星宇截圖即可自動辨識雙人/單人票價與航線。- 各方案卡片獨立儲存實查票價並提供彈窗登記,徹底擺脫全域單一票價限制。 • 4. 防機票高價陷阱與雙人機+酒最低價預設排序: - 預設排序採用 💎 機+酒總價最低優先 (防機票高價陷阱) (flight_hotel_asc),保護出遊總預算最省組合。• 5. 首發實戰拍板驗收成果(方案二 2026/12/13~12/17,5天4夜): - 機票實查 NT$ 40,300 + 登別【NIRE 楡】私湯一泊二食 NT$ 22,464 + 札幌 Solaria 3 晚 NT$ 17,073 = 雙人機+酒總額 NT$ 79,837(帳戶擁 100,000 點 PayEasy 點數全額折抵 4 晚住宿 NT$ 39,537 後自付住宿現金 NT$ 0,點數尚餘 60,463 點;整趟實付現金僅星宇機票 NT$ 40,300,每人約 NT$ 20,150,比原預估自付現金暴省 NT$ 55,958)。- 已全面同步更新至 2026-YEAR.md 與 2026-YEAR.html。 |
~/Gemini/WORKLOG-2026-09.md)~/Gemini/WORKLOG-2026-09.html)~/Gemini-local SSD 與 Google Drive 雙路徑鏡像同步。~/Gemini/Cluade_WORKLOG.md)mac-mini-pro、mac-pro 與 mac-air 跨機維運之完整歷史紀錄。內容包含:
~/Gemini-local) 分離方案。nas-backup-central.sh)、SSH Key 遷移、Crontab 排程與自動快照。