45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
"""催化事件领域模型。"""
|
|
|
|
from datetime import datetime
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class CatalystTheme(BaseModel):
|
|
theme_id: str
|
|
theme_name: str
|
|
relevance: float = Field(default=0, ge=0, le=100)
|
|
reason: str = ""
|
|
|
|
|
|
class CatalystInput(BaseModel):
|
|
title: str
|
|
content: str = ""
|
|
source: str = "manual"
|
|
url: str = ""
|
|
published_at: datetime | None = None
|
|
|
|
|
|
class CatalystAnalysis(BaseModel):
|
|
title: str
|
|
summary: str = ""
|
|
source: str = "manual"
|
|
url: str = ""
|
|
published_at: datetime | None = None
|
|
catalyst_type: str = "news"
|
|
strength: float = Field(default=0, ge=0, le=100)
|
|
freshness: float = Field(default=0, ge=0, le=100)
|
|
confidence: float = Field(default=0, ge=0, le=100)
|
|
themes: list[CatalystTheme] = []
|
|
raw_text: str = ""
|
|
llm_reason: str = ""
|
|
generated_by: str = "rules"
|
|
|
|
|
|
class ThemeCatalystScore(BaseModel):
|
|
theme_id: str
|
|
theme_name: str
|
|
catalyst_score: float = 0
|
|
catalyst_count: int = 0
|
|
top_reasons: list[str] = []
|
|
generated_by: str = "rules"
|