廠務 🌡️ 溫度監控與警報系統 📌 功能簡介 此專案透過 Flask 網站 + SQLite 資料庫,定時從 210.62.179.209/Data.txt 抓取冷凍冷藏室的即時溫度,並具備 超標警報與 Gmail API 通知功能 。 同時支援歷史查詢、Excel 匯出與排程紀錄。 🔧 系統架構 語言 :Python + Flask 資料庫 :SQLite ( temperatures.db ) 功能模組 : requests :抓取即時溫度 schedule + threading :背景定時任務 pandas :Excel 匯出 googleapiclient :Gmail API 寄送通知 服務監控點 : 1F前室 魚翅保存庫 原物料保存庫 成品保存庫 急速冷凍室 製成品預冷室 2F冷藏室 3F冷藏室 📑 功能說明 1. 定時紀錄與警報 每 10 分鐘自動抓取一次溫度數據並存入資料庫。 若溫度高於設定值(排除除霜時段),會透過 Gmail API 發送異常警報。 記錄冷卻時間 ( alert_cooldown_hours ),避免重複通知。 2. 設定檔 ( config.json ) { "notifications": { "enabled": true, "sender": "zfuntw@gmail.com", "recipients": ["example@mail.com"], "alert_cooldown_hours": 3 }, "temperature_settings": { "1F前室": {"enabled": true, "threshold": 10, "defrost_hours": [3, 15]}, "魚翅保存庫": {"enabled": true, "threshold": -5, "defrost_hours": []} } } 3. 前端介面 / 即時監控頁面,顯示當前溫度 /history 歷史紀錄查詢,可篩選日期區間 /export_excel 將指定日期區間匯出 Excel /settings 設定通知收件人、警報值與除霜時段 4. Gmail API 通知 使用 token.json 儲存授權憑證。 異常時寄送 Email 通知指定人員。 5. 簡易版資料採集程式 另附加 get_temperature_data 腳本: 每 10 秒抓取一次溫度資料 僅儲存前 4 筆溫度數據至資料庫 📂 資料表結構 temperatures 欄位 說明 id 主鍵 timestamp 紀錄時間 temp_front_room 1F前室 temp_shark_fin 魚翅保存庫 temp_raw_material 原物料保存庫 temp_finished_product 成品保存庫 temp_blast_freezer 急速冷凍室 temp_precooling_room 製成品預冷室 temp_2f 2F冷藏室 temp_3f 3F冷藏室 ▶️ 啟動方式 python app.py 網站預設服務於 👉 https://temp.zfun.com.tw/login ⚠️ 注意事項 需先完成 Gmail API OAuth 授權並放置 token.json 。 除霜時間需在設定檔中明確設定,避免誤報。 若無法連線 210.62.179.209 ,會回傳空值並略過紀錄。       冷凍倉儲管理系統 本系統為一套以  Flask + SQLite 為基礎開發的冷凍倉儲管理系統,支援產品管理、庫存進出、位置視覺化與資料匯出入等功能,適合中小型冷鏈倉儲作業使用。 系統功能簡述 📦 商品管理 新增 / 編輯 / 查詢商品(SKU、品名、分類、備註) 匯入/匯出商品資料(CSV) 📍 倉儲位置管理 建立儲位資料(名稱、描述) 支援位置編碼格式解析(如:冷凍A區-A1-L1-前) 🧊 庫存管理 入庫(新增批號或補貨至既有批號) 出庫(支援多批次出貨,加入出庫車、建立出庫單) 庫存轉移(不同儲位間移動批號) 📑 出庫單管理 建立 / 檢視 / 確認 / 取消出庫單 出庫時自動更新庫存數量 📊 倉儲視覺化 依照區域 → 區段 → 層 → 子區 顯示各儲位庫存狀況 支援位置階層資料視覺化呈現 🔍 商品定位查詢 透過 SKU 或品名查詢現有庫存與對應儲位 🧪 API 提供 /api/location_inventory/ :查詢指定儲位之商品庫存清單(JSON 格式) 使用技術 後端 :Flask + SQLAlchemy 資料庫 :SQLite 前端樣板 :Jinja2 + HTML/CSS Session 控制 :Flask Session(儲存出庫購物車) 檔案處理 :CSV 匯入/匯出功能 正航依批號查詢庫存及倉儲管理系統 API 介接 功能概述 本系統整合 正航 ERP 與 倉儲管理系統 (WMS) ,提供以 產品 SKU 與批號 為基準的庫存查詢與儲位管理。 透過 Web 介面與 API,可快速查詢指定商品的批號、庫存數量及所在倉庫,並同步連接倉儲系統取得實際儲位資訊。 查詢來源 資料庫:正航 ERP (MSSQL) 表格: comProduct 、 comBatchAmount 條件: BCQty > 0 且 WareID <> 'B' 外部 API:倉儲管理系統 URL: https://stock.zfun.com.tw/wp-json/batch/v1/get-pallet 參數: sku : 商品代號 (ProdID) batch_number : 批號 (BatchID) 前台查詢顯示欄位 欄位名稱 說明 SKU 商品代號 (ProdID) 品名規格 產品名稱 (ProdName) 批號 批號 (BatchID) 倉庫 倉庫代號 (WareID) 數量 庫存數量 (BCQty) 製造日期 生產日期 (ProduceDate) 有效期限 有效日期 (ValidDate) 儲位 來自倉儲系統 API 的 location 清單 API 介接說明 1. ERP 批號查詢 API 路由 : GET /api/sku/ 回傳格式 : { "SKU001": [   {     "no": "20250801",     "inbound_date": "2025-08-01",     "expiry_date": "2026-08-01",     "quantity": 100   } ] } 2. 倉儲儲位查詢 API 外部 API URL : { "success": true, "data": [ { "product_name": "烏骨雞1.1-1.2K(12隻/箱)", "sku": "R07-001-00", "batch_number": "20250730", "pallet_number": "20250730132412", "quantity": 600, "unit": "隻", "location": "B11-1-1" } ] } 整合顯示 : B11-1-1 B11-1-2 B11-1-3 系統流程 使用者輸入 SKU 或產品名稱 。 系統從 正航 ERP 查詢符合條件的批號與庫存。 針對每一個批號,系統再呼叫 WMS API ,取得儲位資訊。 前端頁面自動列出 庫存與儲位對應清單 。 注意事項 倉庫代號 B 不列入查詢。 僅顯示 庫存數量大於 0 的批號。 儲位資訊完全由 外部倉儲管理系統 API 提供。 建議設定 API timeout 機制,避免查詢卡死。 正航批號管理功能 Plus(加增儲位版) 版本定位:在原本「依批號查庫存」基礎上, 加上「儲位管理」與「異動總帳」 。 資料源: 正航 ERP(MSSQL) + 本地儲位資料庫(SQLite) 。 一、系統目標 以 SKU(ProdID)+批號(BatchID) 為主軸查詢庫存。 僅顯示 庫存數量 > 0 且 排除倉庫 B(WareID <> 'B') 的批號。 透過 SQLite 擴充「儲位(Location)」管理,並提供: 儲位新增 / 編輯 / 刪除 儲位庫存異動單(暫存 → 執行) 異動總帳(Inventory Ledger)追蹤每筆更動 二、系統架構 1) 後端 Flask (port: 5202 ) MSSQL(正航 ERP) :查 SKU/批號/數量/日期 主要表: comProduct 、 comBatchAmount 查詢條件: BCQty > 0 且 WareID <> 'B' SQLite(本地儲位資料庫) :儲位與異動紀錄 batch_locations :儲位主表(以 prod_id + batch_id + location 唯一) inventory_ledger :儲位庫存異動總帳 2) 前端頁面(Jinja2 模板) / :依商品關鍵字查批號庫存(含各批號的儲位清單) /locations :儲位管理(可切換以「商品」或「儲位」關鍵字查) /transfer_slip :異動單檢視(暫存清單) /history :異動總帳查詢 /edit_location/ :儲位編輯頁 三、資料表(SQLite) 1) batch_locations 欄位 型別 說明 id INTEGER PK 儲位記錄主鍵 prod_id TEXT SKU(對應正航 ProdID ) batch_id TEXT 批號(對應正航 BatchID ) location TEXT 儲位(例:A20-1-1) quantity INTEGER 此儲位現有量(可為空) remark TEXT 備註 created_at TIMESTAMP 建立時間(預設 NOW) 外鍵 : FOREIGN KEY(location_id) REFERENCES batch_locations(id) ON DELETE CASCADE 四、主要業務規則 ERP 查詢條件 只抓 庫存 > 0( BCQty > 0 ) 的批號 排除倉庫 B ( WareID <> 'B' ) 只顯示欄位:SKU(ProdID)、品名規格(ProdName)、批號(BatchID)、倉庫(WareID)、數量(BCQty)、製造日期(ProduceDate)、有效期限(ValidDate) 儲位管理 新增儲位:若同 SKU+批號+儲位 不存在,建立記錄;若有初始量會同時寫入總帳( INITIAL_STOCK )。 編輯儲位:若 數量變動 ,寫入總帳( MANUAL_EDIT )。 刪除儲位:僅允許 庫存=0 時刪除,否則阻擋。 異動單(Transfer Slip) 可從搜尋結果將儲位加入「待處理異動」。 執行異動時,每筆會: 驗證目前量是否足夠扣減 更新儲位量、寫入總帳( TRANSFER_DEDUCTION ) 產生參考單號: MV-YYYYMMDDHHMMSS 總帳(Ledger) 任何造成儲位量變化的操作都寫入此表。 可於 /history 依時間序檢視。