fix: 修复复盘计划失败问题

refactor3.0
Lxy 1 week ago
parent 0ee6a3dab7
commit f663435843

@ -7,9 +7,6 @@ from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base from sqlalchemy.orm import sessionmaker, declarative_base
from datetime import datetime from datetime import datetime
from app.mysql_database import MySQLSessionLocal
from app.storage_manager import get_storage_manager
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
# 数据目录 # 数据目录
@ -31,33 +28,9 @@ AnalysisBase = declarative_base()
def get_analysis_db(): def get_analysis_db():
"""获取期货智析数据库会话。 """获取期货智析数据库会话。
根据 MySQL 可用性动态选择后端 分析数据量较小复盘计划评分等始终使用 SQLite 以保证稳定性
- MySQL 可用时返回 MySQL Session AnalysisBase 绑定的是 analysis_engine (SQLite)ORM 模型均基于此定义
- MySQL 不可用时返回 SQLite Session兜底
""" """
storage = get_storage_manager()
if MySQLSessionLocal is not None and storage.check_mysql():
db = None
try:
db = MySQLSessionLocal()
yield db
except Exception as e:
logger.warning(f"创建 MySQL analysis session 失败,降级到 SQLite: {e}")
if db is not None:
try:
db.close()
except Exception:
pass
db = AnalysisSessionLocal()
yield db
finally:
if db is not None:
try:
db.close()
except Exception:
pass
else:
db = AnalysisSessionLocal() db = AnalysisSessionLocal()
try: try:
yield db yield db

@ -626,6 +626,7 @@ def save_plan_to_db(db: Session, plan_data: dict) -> int:
review_date_str = plan_data["review_date"] review_date_str = plan_data["review_date"]
week_day = plan_data["week_day"] week_day = plan_data["week_day"]
try:
# 清理旧数据 # 清理旧数据
existing = db.query(ReviewPlanV2).filter_by(review_date=review_date_str).first() existing = db.query(ReviewPlanV2).filter_by(review_date=review_date_str).first()
if existing: if existing:
@ -741,6 +742,10 @@ def save_plan_to_db(db: Session, plan_data: dict) -> int:
db.commit() db.commit()
logger.info(f"交易计划已保存: {review_date_str}, ID={review_plan_id}") logger.info(f"交易计划已保存: {review_date_str}, ID={review_plan_id}")
return review_plan_id return review_plan_id
except Exception as e:
db.rollback()
logger.exception(f"保存交易计划失败: {e}")
raise
def get_plan_data(db: Session, review_plan_id: int) -> Optional[dict]: def get_plan_data(db: Session, review_plan_id: int) -> Optional[dict]:

Binary file not shown.
Loading…
Cancel
Save