From e611702bb9fd3702e35252eafd9e95c182e2442d Mon Sep 17 00:00:00 2001 From: ogt Date: Mon, 27 Apr 2026 21:27:20 +0800 Subject: [PATCH] refactor: unify 4 isolated SQLAlchemy Base instances to database.models.Base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - database/import_models.py: 移除 ext.declarative.declarative_base,改用 from database.models import Base - database/notification_models.py: 同上 - database/ppt_reports.py: 移除 orm.declarative_base,改用共用 Base - database/vendor_models.py: 同上 - database/manager.py: 加入 4 個模型的 noqa import,確保 Base.metadata 完整管理所有資料表 Co-Authored-By: Claude Sonnet 4.6 --- database/import_models.py | 5 +---- database/manager.py | 4 ++++ database/notification_models.py | 3 +-- database/ppt_reports.py | 4 +--- database/vendor_models.py | 5 ++--- 5 files changed, 9 insertions(+), 12 deletions(-) diff --git a/database/import_models.py b/database/import_models.py index 3d4a973..3f1e607 100644 --- a/database/import_models.py +++ b/database/import_models.py @@ -5,7 +5,7 @@ """ from sqlalchemy import Column, Integer, String, DateTime, Text, Float -from sqlalchemy.ext.declarative import declarative_base +from database.models import Base from datetime import datetime import pytz @@ -18,9 +18,6 @@ def taipei_now(): return datetime.now(TAIPEI_TZ).replace(tzinfo=None) -Base = declarative_base() - - class ImportJob(Base): """匯入任務模型""" __tablename__ = 'import_jobs' diff --git a/database/manager.py b/database/manager.py index 1fd720a..61f1666 100644 --- a/database/manager.py +++ b/database/manager.py @@ -9,6 +9,10 @@ from .edm_models import PromoProduct # V-Fix: 確保 EDM 模型被註冊,以 from .trend_models import TrendRecord, TrendKeyword, TrendAnalysis, WebSearchCache, TelegramUser # noqa: F401 - 趨勢資料表 from .ai_models import AgentContext, ActionPlan, ActionOutcome, AgentStrategyWeights # noqa: F401 - AI agent 模型 from .autoheal_models import Incident, Playbook, HealLog # noqa: F401 - ADR-013 AIOps 自動修復表 +from .import_models import ImportJob # noqa: F401 - 確保 import_jobs 表被 Base.metadata 管理 +from .notification_models import NotificationTemplate # noqa: F401 - 確保 notification_templates 表被 Base.metadata 管理 +from .ppt_reports import PPTReport # noqa: F401 - 確保 ppt_reports 表被 Base.metadata 管理 +from .vendor_models import VendorStockout # noqa: F401 - 確保 vendor_stockout 表被 Base.metadata 管理 # 🚩 導入優化後的日誌管理模組 from services.logger_manager import SystemLogger diff --git a/database/notification_models.py b/database/notification_models.py index 58da3a4..39d90b6 100644 --- a/database/notification_models.py +++ b/database/notification_models.py @@ -6,10 +6,9 @@ """ from sqlalchemy import Column, Integer, String, Text, Boolean, DateTime -from sqlalchemy.ext.declarative import declarative_base +from database.models import Base from datetime import datetime, timezone, timedelta -Base = declarative_base() TAIPEI_TZ = timezone(timedelta(hours=8)) diff --git a/database/ppt_reports.py b/database/ppt_reports.py index b93622a..5a6c092 100644 --- a/database/ppt_reports.py +++ b/database/ppt_reports.py @@ -4,11 +4,9 @@ PPT 簡報資料庫持久化模型 """ from sqlalchemy import Column, Integer, String, DateTime, Text, Float -from sqlalchemy.orm import declarative_base +from database.models import Base from datetime import datetime -Base = declarative_base() - class PPTReport(Base): """PPT 簡報記錄表""" __tablename__ = 'ppt_reports' diff --git a/database/vendor_models.py b/database/vendor_models.py index 261b339..cffb093 100644 --- a/database/vendor_models.py +++ b/database/vendor_models.py @@ -6,11 +6,10 @@ """ from sqlalchemy import Column, Integer, String, DateTime, Boolean, ForeignKey, Numeric, Date, Text -from sqlalchemy.orm import relationship, declarative_base +from sqlalchemy.orm import relationship +from database.models import Base from datetime import datetime -Base = declarative_base() - class VendorStockout(Base): """廠商缺貨表 - 儲存匯入的缺貨資料""" __tablename__ = 'vendor_stockout'