import logging import sys import os from sqlalchemy import text # 確保專案根目錄在 sys.path 中 sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from database.manager import DatabaseManager from scheduler import run_edm_task # 設定日誌 logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') def reset_and_scrape(): """ 清空 promo_products 資料表並重新執行 EDM 爬蟲 """ db = DatabaseManager() session = db.get_session() try: print("="*50) logging.info("🗑️ 正在清除所有 EDM (限時搶購) 歷史數據...") # 執行清空指令 (SQLite 使用 DELETE,MySQL/PG 使用 TRUNCATE) session.execute(text("DELETE FROM promo_products")) session.commit() logging.info("✅ 資料庫已清空。") print("="*50) logging.info("🚀 重新啟動 EDM 爬蟲任務 (抓取完整數據)...") # 呼叫 scheduler.py 中的爬蟲函式 run_edm_task() logging.info("🎉 重置與重新抓取完成!請刷新網頁查看結果。") print("="*50) except Exception as e: logging.error(f"❌ 發生錯誤: {e}") session.rollback() finally: session.close() if __name__ == "__main__": # 再次確認提示 confirm = input("⚠️ 警告:這將刪除所有「限時搶購」的歷史價格紀錄,確定要繼續嗎?(y/n): ") if confirm.lower() == 'y': reset_and_scrape() else: print("已取消操作。")