| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- """
- 分析模型
- """
- from datetime import datetime
- from typing import Optional, List, Dict, Any
- from pydantic import BaseModel, Field
- from sqlalchemy import Column, Integer, String, DateTime, Text, Boolean, Float, JSON
- from sqlalchemy.ext.declarative import declarative_base
- Base = declarative_base()
- class AnalysisDB(Base):
- """分析数据库模型"""
- __tablename__ = "analysis"
-
- id = Column(Integer, primary_key=True, index=True)
- title = Column(String(200), nullable=False)
- analysis_type = Column(String(50), nullable=False)
- paper_ids = Column(JSON) # 分析的论文ID列表
- methodology = Column(Text)
- findings = Column(JSON) # 分析发现
- insights = Column(Text)
- limitations = Column(Text)
- recommendations = Column(Text)
- confidence_score = Column(Float, default=0.0)
- novelty_score = Column(Float, default=0.0)
- impact_score = Column(Float, default=0.0)
- metadata = Column(JSON)
- user_id = Column(Integer, index=True)
- task_id = Column(Integer, index=True)
- created_at = Column(DateTime, default=datetime.utcnow)
- updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
- class Analysis(BaseModel):
- """分析响应模型"""
- id: int
- title: str
- analysis_type: str
- methodology: Optional[str] = None
- findings: Dict[str, Any] = {}
- insights: Optional[str] = None
- limitations: Optional[str] = None
- recommendations: Optional[str] = None
- confidence_score: float = 0.0
- novelty_score: float = 0.0
- impact_score: float = 0.0
- created_at: datetime
-
- class Config:
- from_attributes = True
- class AnalysisCreate(BaseModel):
- """分析创建模型"""
- title: str = Field(..., min_length=1, max_length=200)
- analysis_type: str = Field(..., regex=r'^(comprehensive|methodology|findings|gap|trend)$')
- paper_ids: List[int] = []
- methodology: Optional[str] = None
- class AnalysisUpdate(BaseModel):
- """分析更新模型"""
- title: Optional[str] = None
- methodology: Optional[str] = None
- findings: Optional[Dict[str, Any]] = None
- insights: Optional[str] = None
- limitations: Optional[str] = None
- recommendations: Optional[str] = None
- confidence_score: Optional[float] = Field(None, ge=0.0, le=1.0)
- novelty_score: Optional[float] = Field(None, ge=0.0, le=1.0)
- impact_score: Optional[float] = Field(None, ge=0.0, le=1.0)
- class ComprehensiveAnalysis(BaseModel):
- """综合分析结果"""
- summary: str
- key_findings: List[str]
- methodological_trends: List[str]
- research_gaps: List[str]
- future_directions: List[str]
- quality_assessment: Dict[str, float]
- citation_network: Dict[str, Any]
- class MethodologyAnalysis(BaseModel):
- """方法论分析结果"""
- common_methods: List[str]
- method_comparison: Dict[str, Any]
- strengths_weaknesses: Dict[str, List[str]]
- best_practices: List[str]
- class FindingsAnalysis(BaseModel):
- """研究发现分析"""
- consensus_points: List[str]
- controversial_points: List[str]
- emerging_patterns: List[str]
- evidence_strength: Dict[str, float]
- class GapAnalysis(BaseModel):
- """研究缺口分析"""
- identified_gaps: List[str]
- gap_categories: Dict[str, List[str]]
- opportunity_areas: List[str]
- research_questions: List[str]
- class TrendAnalysis(BaseModel):
- """趋势分析结果"""
- temporal_trends: Dict[str, Any]
- topic_evolution: List[str]
- emerging_topics: List[str]
- citation_trends: Dict[str, Any]
|