Initial commit
This commit is contained in:
98
backend/app/models.py
Normal file
98
backend/app/models.py
Normal file
@ -0,0 +1,98 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Literal
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
Sentiment = Literal["看多", "看空", "中性"]
|
||||
|
||||
|
||||
class Account(BaseModel):
|
||||
id: str
|
||||
name: str
|
||||
description: str
|
||||
|
||||
|
||||
class DailyInputAccountPayload(BaseModel):
|
||||
account_id: str
|
||||
links: list[str] = Field(default_factory=list)
|
||||
|
||||
|
||||
class DailyInputUpsertPayload(BaseModel):
|
||||
accounts: list[DailyInputAccountPayload] = Field(default_factory=list)
|
||||
|
||||
|
||||
class DailyInputAccount(BaseModel):
|
||||
account_id: str
|
||||
account_name: str
|
||||
links: list[str] = Field(default_factory=list)
|
||||
|
||||
|
||||
class DailyInputDocument(BaseModel):
|
||||
date: str
|
||||
updated_at: str
|
||||
accounts: list[DailyInputAccount] = Field(default_factory=list)
|
||||
|
||||
|
||||
class OpinionArticle(BaseModel):
|
||||
id: str
|
||||
account_id: str
|
||||
account_name: str
|
||||
title: str
|
||||
published_at: str
|
||||
summary: str
|
||||
source_url: str
|
||||
sectors: list[str] = Field(default_factory=list)
|
||||
sentiment: Sentiment
|
||||
article_type: str
|
||||
|
||||
|
||||
class ReportDocument(BaseModel):
|
||||
date: str
|
||||
generated_at: str
|
||||
summary: str
|
||||
focus_sectors: list[str] = Field(default_factory=list)
|
||||
article_count: int
|
||||
account_count: int
|
||||
articles: list[OpinionArticle] = Field(default_factory=list)
|
||||
|
||||
|
||||
class ReportListItem(BaseModel):
|
||||
date: str
|
||||
generated_at: str
|
||||
summary: str
|
||||
article_count: int
|
||||
focus_sectors: list[str] = Field(default_factory=list)
|
||||
|
||||
|
||||
class ClsNewsItem(BaseModel):
|
||||
id: str
|
||||
title: str
|
||||
published_at: str
|
||||
source: str
|
||||
summary: str
|
||||
reference_url: str
|
||||
sectors: list[str] = Field(default_factory=list)
|
||||
sentiment: Sentiment
|
||||
|
||||
|
||||
class ClsNewsSummary(BaseModel):
|
||||
overview: str
|
||||
hot_topics: str
|
||||
watch_list: list[str] = Field(default_factory=list)
|
||||
|
||||
|
||||
class ClsSectorImpact(BaseModel):
|
||||
sector: str
|
||||
sentiment: Sentiment
|
||||
reason: str
|
||||
related_titles: list[str] = Field(default_factory=list)
|
||||
|
||||
|
||||
class ClsNewsDocument(BaseModel):
|
||||
date: str
|
||||
updated_at: str
|
||||
window_label: str
|
||||
summary: ClsNewsSummary
|
||||
sector_impacts: list[ClsSectorImpact] = Field(default_factory=list)
|
||||
items: list[ClsNewsItem] = Field(default_factory=list)
|
||||
Reference in New Issue
Block a user