랭그래프 활용한 주식 정보 도출 프로젝트
- 투자 의견 조회
ㄴ 전반적인 주식 판단 기준(ex. 채무, 리스크 등등)을 기준으로 판단하여 도출
- 투자 추천
ex)
{
"tickers": [
"NVDA", "GOOGL", "AAPL"
],
"risk_type": "aggressive"
}
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import DeclarativeBase, sessionmaker
|
||||
from pathlib import Path
|
||||
|
||||
Path("db").mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# echo sql 구문 출력시키는
|
||||
engine = create_engine('sqlite:///db/stock.db', echo=True)
|
||||
|
||||
# 세션 팩토리 생성
|
||||
SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False)
|
||||
|
||||
# Base = declarative_Base()
|
||||
class Base(DeclarativeBase):
|
||||
pass
|
||||
|
||||
# session 을 다른 모듈에서 사용할 수 있도록 제공
|
||||
def get_db():
|
||||
db = SessionLocal()
|
||||
try:
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
@@ -0,0 +1,28 @@
|
||||
from backend.repository.db_init import Base
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
from datetime import datetime
|
||||
from sqlalchemy import JSON, ForeignKey, String
|
||||
|
||||
class StockAnalysis(Base):
|
||||
__tablename__ = "stock_analysis"
|
||||
|
||||
analysis_id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
|
||||
ticker:Mapped[str]
|
||||
company_name:Mapped[str]
|
||||
analysis_json: Mapped[dict] = mapped_column(JSON)
|
||||
report:Mapped[str]
|
||||
created_at:Mapped[datetime] = mapped_column(default=datetime.now, nullable=False)
|
||||
opinion = relationship("InvestmentOpinion", back_populates="analysis", uselist=False)
|
||||
|
||||
class InvestmentOpinion(Base):
|
||||
__tablename__ = "investment_opinion"
|
||||
|
||||
opinion_id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
|
||||
analysis_id: Mapped[int] = mapped_column(ForeignKey("stock_analysis.analysis_id"), unique=True)
|
||||
opinion: Mapped[str]
|
||||
# 투자의견 : Buy, sell.....
|
||||
rating:Mapped[str] = mapped_column(String(20), nullable=True)
|
||||
score:Mapped[int] = mapped_column(default=0)
|
||||
created_at:Mapped[datetime] = mapped_column(default=datetime.now, nullable=False)
|
||||
analysis = relationship("StockAnalysis", back_populates="opinion")
|
||||
|
||||
Reference in New Issue
Block a user