All checks were successful
Build and Push Docker Image / build (push) Successful in 34s
67 lines
1.8 KiB
Python
67 lines
1.8 KiB
Python
from dataclasses import dataclass
|
|
from typing import Optional, List
|
|
|
|
@dataclass
|
|
class DividendsData:
|
|
previous_payment: Optional[str] = None
|
|
previous_pay_date: Optional[str] = None
|
|
previous_ex_date: Optional[str] = None
|
|
frequency: Optional[str] = None
|
|
annual_dividend_rate: Optional[str] = None
|
|
annual_dividend_yield: Optional[str] = None
|
|
|
|
@dataclass
|
|
class MorningstarPdfData:
|
|
fair_value: Optional[str] = None
|
|
economic_moat: Optional[str] = None
|
|
capital_allocation: Optional[str] = None
|
|
rating: Optional[int] = None
|
|
one_star_price: Optional[str] = None
|
|
five_star_price: Optional[str] = None
|
|
assessment: Optional[str] = None
|
|
range_52_week: Optional[str] = None
|
|
dividend_yield: Optional[str] = None
|
|
investment_style: Optional[str] = None
|
|
report_url: Optional[str] = None
|
|
report_date: Optional[str] = None
|
|
|
|
@dataclass
|
|
class ScrapeResult:
|
|
ticker: str
|
|
company_name: Optional[str]
|
|
dividends: DividendsData
|
|
morningstar: MorningstarPdfData
|
|
source: str # "live" | "cache"
|
|
|
|
|
|
# -------------------- Transactions Feature --------------------
|
|
|
|
@dataclass
|
|
class AccountInfo:
|
|
account_type: str # e.g., "Joint", "IRA", "Individual"
|
|
account_ending: str # e.g., "604", "197", "873"
|
|
full_description: str # e.g., "Joint …604 (Account ending in 6 0 4)"
|
|
is_selected: bool = False
|
|
|
|
|
|
@dataclass
|
|
class TransactionRecord:
|
|
date: str
|
|
action: str
|
|
symbol: Optional[str]
|
|
description: str
|
|
quantity: Optional[str]
|
|
price: Optional[str]
|
|
fees_comm: Optional[str]
|
|
amount: Optional[str]
|
|
|
|
|
|
@dataclass
|
|
class TransactionData:
|
|
account_info: AccountInfo
|
|
transactions: List[TransactionRecord]
|
|
date_range: str
|
|
export_date: str
|
|
total_transactions: int
|
|
source: str # "live" | "cache"
|