""" 期货智析数据模型 """ from datetime import datetime from sqlalchemy import Column, String, Integer, Float, Text, DateTime, Boolean, Index, UniqueConstraint, JSON from app.analysis_db import AnalysisBase class FuturesAnalysis(AnalysisBase): """期货分析报告表""" __tablename__ = "futures_analysis" id = Column(Integer, primary_key=True, autoincrement=True) symbol = Column(String(32), nullable=False, index=True, comment="品种合约代码") analysis_time = Column(DateTime, nullable=False, default=datetime.now, index=True, comment="分析时间") period = Column(String(16), nullable=False, default="15min", comment="分析周期") # 分析结果 suggestion = Column(String(32), nullable=True, comment="交易建议: 逢低做多/逢高做空/观望等待") suggestion_type = Column(String(16), nullable=True, comment="建议类型: up/down/neutral") entry_price = Column(Float, nullable=True, comment="建议入场价") target_price = Column(Float, nullable=True, comment="目标价位") stop_loss = Column(Float, nullable=True, comment="止损价位") risk_level = Column(String(16), nullable=True, comment="风险等级: 低/中/高") # 技术指标 macd_signal = Column(String(16), nullable=True, comment="MACD信号") rsi_value = Column(Float, nullable=True, comment="RSI值") boll_signal = Column(String(16), nullable=True, comment="布林带信号") kdj_signal = Column(String(16), nullable=True, comment="KDJ信号") # 趋势评分 trend_score = Column(Integer, nullable=True, comment="趋势评分 0-100") success_rate = Column(Float, nullable=True, comment="交易成功率") # 关键点位 resistance_levels = Column(JSON, nullable=True, comment="压力位列表") support_levels = Column(JSON, nullable=True, comment="支撑位列表") # 多周期趋势 period_trends = Column(JSON, nullable=True, comment="各周期趋势") def __repr__(self): return f"" class WatchedSymbol(AnalysisBase): """用户关注品种表""" __tablename__ = "watched_symbols" id = Column(Integer, primary_key=True, autoincrement=True) symbol = Column(String(32), nullable=False, unique=True, comment="品种合约代码") name = Column(String(64), nullable=True, comment="品种名称") note = Column(Text, nullable=True, comment="备注") created_at = Column(DateTime, nullable=False, default=datetime.now) updated_at = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now) def __repr__(self): return f"" class AIModelConfig(AnalysisBase): """AI模型配置表""" __tablename__ = "ai_model_configs" id = Column(Integer, primary_key=True, autoincrement=True) provider = Column(String(32), nullable=False, comment="AI提供商: openai/anthropic/google等") model_name = Column(String(64), nullable=False, comment="模型名称") api_key = Column(String(256), nullable=False, comment="API密钥") api_base = Column(String(256), nullable=True, comment="API基础URL") model_id = Column(String(64), nullable=True, comment="模型ID") temperature = Column(Float, nullable=True, default=0.7, comment="温度参数") max_tokens = Column(Integer, nullable=True, default=2000, comment="最大输出token") enabled = Column(Boolean, nullable=False, default=True, comment="是否启用") is_active = Column(Boolean, nullable=False, default=False, comment="是否为当前活跃模型") created_at = Column(DateTime, nullable=False, default=datetime.now) updated_at = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now) def __repr__(self): return f"" class AnalysisSettings(AnalysisBase): """分析设置表(单例配置)""" __tablename__ = "analysis_settings" id = Column(Integer, primary_key=True, autoincrement=True) key = Column(String(64), nullable=False, unique=True, comment="配置键") value = Column(JSON, nullable=False, comment="配置值") updated_at = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now) def __repr__(self): return f"" class AIAnalysisCache(AnalysisBase): """AI分析缓存表""" __tablename__ = "ai_analysis_cache" id = Column(Integer, primary_key=True, autoincrement=True) symbol = Column(String(32), nullable=False, index=True, comment="品种合约代码") analysis_data = Column(JSON, nullable=False, comment="AI分析结果数据") kline_timestamp = Column(DateTime, nullable=True, comment="分析时K线数据的时间戳") created_at = Column(DateTime, nullable=False, default=datetime.now, index=True, comment="分析时间") def __repr__(self): return f""