- ExtractedEvent 增加 sources 字段(主源居首去重,旧产物兜底 [source_id]) - extract_event(_async) 增加 sources 参数;run_event_extraction 读取 deduped uniques 的 sources 透传 - reporter _load_events_from_dir 读取 sources → EventRow.sources - news_event 建表加 sources TEXT 列;init_schema 幂等迁移旧表(捕获 Duplicate column);save_report INSERT 写 JSON 多源 - 新增测试:ExtractedEvent/EventRow.sources 兜底与保序、_load_events_from_dir 多源
36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
"""日报结构化入库:数据模型。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from datetime import date, datetime
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class EventRow(BaseModel):
|
|
"""一条事件记录,对应 news_event 一行。"""
|
|
|
|
section: str # xwlb | news | cninfo | intl
|
|
rank: int # 板块内序号(从 1 开始)
|
|
importance: int | None = None
|
|
event_type: str | None = None
|
|
title: str
|
|
summary: str | None = None
|
|
sentiment: str | None = None # positive | negative | neutral | ''
|
|
source: str | None = None # 主源
|
|
sources: list[str] | None = None # 全部来源(主源居首),多源新闻记录
|
|
url: str | None = None
|
|
|
|
|
|
class ReportData(BaseModel):
|
|
"""一份完整日报:news_report 一行 + news_event 多行。"""
|
|
|
|
report_date: date
|
|
report_type: str # finance | intl
|
|
file_name: str = "" # 源文件名(新生成日报可为空)
|
|
generated_at: datetime
|
|
ai_summary: str | None = None
|
|
stats: dict[str, Any] = Field(default_factory=dict)
|
|
events: list[EventRow] = Field(default_factory=list)
|