CleanFrame
삼성 The Frame용 개인 홈 화면, 포크와 맞춤을 위한 시작점
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗航空地勤 / 出差旅行用的一站式工具站,Flask + Vanilla JS,iOS 毛玻璃風格 UI,行動裝置優先(393px)。
/api/thsr/tg-webhook 接收,只接受設定的聊天室;首次部署後打一次 /api/thsr/tg-setup?key=THSR_TICK_KEY 設定回呼),同一班不重複推、被搶光不通知。最多 5 筆任務,條件為起訖站 + 日期 + 發車時段 + 可選最晚抵達 + 可選指定車次(選好起訖站與日期後,表單列出當天全部班次並標出目前有早鳥/大學生優惠的班次與折數,點選即可;只盯選到的那幾班,發車時段自動不適用);表單可開「加回程」一次建立去程+回程兩筆任務(回程起訖站自動對調、各自選日期與車次、共用優惠,卡片與通知會標去程/回程);任務卡片有「編輯」可把條件帶回表單修改(保留暫停狀態與去程/回程標記,儲存後照新條件重新判斷通知);過了時段自動結束,超過 28 天的日期顯示開賣倒數。由 cron-job.org 每分鐘呼叫 /api/thsr/tick?key=THSR_TICK_KEY 查一輪,任務與通知紀錄存 KV;連續失敗 10 輪推故障通知、恢復再推一則。只查得到優惠,一般車廂座位需過驗證碼故不支援。環境變數:THSR_TICK_KEY、TELEGRAM_BOT_TOKEN、TELEGRAM_CHAT_ID。/wb 是同一頁、同一份資料的獨立 app 版,有自己的 W&B 名稱與 AirAsia 紅色圖示、沒有返回鍵,可從 Safari「加入主畫面」放到手機桌面(舊網址 /lt 自動轉到 /wb)。介面仿 Airbus Flysmart+ Loadsheet(配色、漸層、框線取自官方 app 的 colorCode.plist 與介面圖檔實測:拉絲金屬底、淺灰標題條、深色欄位群組、選中欄位藍灰、白色按鈕;青色輸入值、黃色帶入值、綠色計算結果、紅色超限)。落地 LDM 航班查詢(預設今天,可往前查、最多往後看到明天,日期顯示為 23OCT2026 格式;點 Notion 圖片可放大檢視,檢視時可雙指/滾輪縮放到 6 倍、放大後單指拖曳移動、點兩下放大或還原),輸入組員行李/Toolbox/轉機行李/垃圾/貨物的艙位與件數重量,加上出發行李總件數與總重,自動建議各艙件數(A321 上限 HOLD1 50/HOLD2 90/HOLD3 90/HOLD4 50 件,填艙順序 3 → 4 → 2 → 1,有貨的艙(貨物有填件數或重量)不分配行李、改貨物艙位會自動重算,HOLD2、HOLD3 先各裝 80 件,全部艙都滿了才補到 90;HOLD5 BULK 不分配、塞小件)。每艙重量 = 行李(件數 × 平均重;件數全部分配完時最後一艙改用總重減其他艙吸收誤差)+該艙組員/Toolbox/垃圾/貨物,卡片列出完整公式與明細;這幾項只算重量、件數不佔艙位上限,貨物另外不算進該艙超重判斷,且只能放 A320 HOLD3/A321 HOLD2、HOLD3(自行選擇),結果與總重合計以橘色標示、只顯示重量;貨物只裝一部分時可填 LOADED PCS(實際裝的件數,留空代表全裝),下方顯示已裝與未裝的件數和重量(已裝重量 = 件數 × 貨物 KG ÷ PCS 四捨五入到整數,未裝 = 總重 − 已裝,全裝時直接用總重),超過貨物件數會標紅;TOTAL LOAD 總表同步顯示「Cargo loaded 已裝/總件數」與已裝重量,未裝的件數重量以刪除線另列,TOTAL 只加已裝重量;各艙卡片的艙重也改算已裝重量,標籤顯示「Cargo loaded 已裝/總件數 · 重量」;這欄不影響行李件數分配;選 LDM 航班時讀 Notion 的 CGO 欄位,在貨物旁標示「有貨/NIL/未標示 · 航班」,NIL 時貨物欄顯示 NIL 並清空(仍可手動輸入),有貨則不動;轉機行李已含在出發行李內,不重複加重但件數佔上限;轉機行李單獨放一艙(沒混一般行李)時,該艙用轉機實重,其他艙改用扣掉轉機後的平均重,混裝則照平均重算。按 COMPUTE 前會先檢查:特殊項目有數字沒選艙位、選了艙位沒填 KG(轉機行李是件數)、出發行李總件數/總重沒填,會跳出 CHECK INPUT 警示框(FIX 跳到第一個問題/COMPUTE ANYWAY 照樣計算),並在欄位標紅框紅字,填好即時消失。點數字框會跳出 FlySmart 樣式的數字鍵盤彈窗(不叫出系統鍵盤):第一個數字取代舊值、⌫ 從後面刪、ⓧ 清空、↺ 還原成上一次按 Done 的數字、Next 跳下一格、Done 或點旁邊完成;手機鍵盤不能輸入小數點(電腦實體鍵盤可以),各艙件數按 Done 才重算。同步碼跨裝置同步:開頁先顯示本機資料、雲端有資料再覆蓋,CLEAR 會在雲端留下標記,其他裝置下次開頁也跟著清空。改轉機艙位或件數會自動重算分配(會蓋掉手動改過的各艙件數),改其他特殊項目不重算;換機型時新機型沒有的艙位會被清掉並標紅提醒重選。LDM 沒有續程項目時有按鈕可一鍵清掉上一班的特殊項目。從背景切回來時,跨日或超過 5 分鐘會自動刷新航班清單。LDM 日期以台灣時間計算。選航班後由 Gemini 讀 Notion 附件,辨識落地後留機續飛的組員行李/Toolbox/轉機行李/垃圾(件數、重量、艙位),每項附 LDM 原文供核對;機型不再用航班號猜(同航班可能換機),改由 Gemini 讀 LDM 航班行的機號與座位配置判斷(例如 FD230/24.HSBBX.Y180 → 180 座 A320、186 座 A320neo(艙位設定同 A320,只在標題標示 neo),230 座以上 A321,原文直接寫 A320/A321 時以原文為準),航班列表也顯示 Notion 的機號,航班代碼方塊用航空公司所屬國國旗配色(FD 泰國、AK 馬來西亞、Z2 菲律賓,不代表機型);LDM 看不出機型時標示 Type unknown、不自動切換,請手動選 A320/A321。按「套用」才會寫入特殊項目並切換到 LDM 判斷出的機型(換機型時會照新機型重新分配艙位);LDM 尚未上傳的航班不快取,之後可重新辨識;辨識結果與 AI 摘要的快取跟著附件內容走,附件重傳就會重新辨識。附件超過 8 個時,LDM 辨識只讀最後 8 個、AI 摘要只讀前 8 個。查詢「任一國籍護照 → 目的地」的簽證需求,不再侷限台灣護照。
python3 -m flask --app app run --port 5001
部署於 Vercel(見 vercel.json)。
/loadsheet 的樣式與程式拆在 static/loadsheet.css、static/loadsheet.js;模板用 asset_ver() 在網址後加內容雜湊(?v=),檔案一改網址就變,不會被 Service Worker 的舊快取卡住。