File size: 1,462 Bytes
2755fb0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey
from sqlalchemy.orm import relationship
import datetime

# 2๋‹จ๊ณ„์—์„œ ๋งŒ๋“  database.py ํŒŒ์ผ์—์„œ Base๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
from database import Base 

# 1. 'articles' ํ…Œ์ด๋ธ” ์„ค๊ณ„๋„
class Article(Base):
    __tablename__ = "articles" # ํ…Œ์ด๋ธ” ์ด๋ฆ„

    article_id = Column(Integer, primary_key=True, index=True)
    title = Column(String(500)) # 500์ž๋กœ ๊ธธ์ด ์ œํ•œ
    body = Column(String(10000)) # 10000์ž๋กœ ๊ธธ์ด ์ œํ•œ
    source = Column(String(100), nullable=True) # ์ถœ์ฒ˜ (์—†์„ ์ˆ˜๋„ ์žˆ์Œ)
    collected_at = Column(DateTime, default=datetime.datetime.utcnow)

    # 'analysis_results' ํ…Œ์ด๋ธ”๊ณผ์˜ ๊ด€๊ณ„ ์„ค์ • (1:N)
    results = relationship("AnalysisResult", back_populates="article")

# 2. 'analysis_results' ํ…Œ์ด๋ธ” ์„ค๊ณ„๋„
class AnalysisResult(Base):
    __tablename__ = "analysis_results" # ํ…Œ์ด๋ธ” ์ด๋ฆ„

    result_id = Column(Integer, primary_key=True, index=True)
    # 'articles' ํ…Œ์ด๋ธ”์˜ 'article_id'๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ ํ‚ค
    article_id = Column(Integer, ForeignKey("articles.article_id")) 
    
    aggro_score = Column(Float)
    mismatch_score = Column(Float)
    crossref_score = Column(Float)
    final_risk = Column(Float)
    analyzed_at = Column(DateTime, default=datetime.datetime.utcnow)
    
    # 'articles' ํ…Œ์ด๋ธ”๊ณผ์˜ ๊ด€๊ณ„ ์„ค์ •
    article = relationship("Article", back_populates="results")