diff --git a/backend/app/main.py b/backend/app/main.py index 8b9a22f..cfe0435 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -28,7 +28,6 @@ from app.initialize import init # 路由总线 from app.api.router import api_router -load_dotenv() CRAWL_INTERVAL = int(os.getenv("CRAWL_INTERVAL_MINUTES", 10)) SUMMARY_INTERVAL = int(os.getenv("SUMMARY_INTERVAL_MINUTES", 30)) diff --git a/backend/app/models/models.py b/backend/app/models/models.py index 667be79..f6bb7fb 100644 --- a/backend/app/models/models.py +++ b/backend/app/models/models.py @@ -180,8 +180,7 @@ class NewsArticle(Base): id: Mapped[int] = mapped_column(BigIntType, primary_key=True, autoincrement=True) source_id: Mapped[int] = mapped_column(ForeignKey("info_sources.id"), comment="所属信息源ID") - unified_event_id: Mapped[Optional[int]] = mapped_column(ForeignKey("unified_events.id"), - comment="深度文章也可归入大事件分析") + unified_event_id: Mapped[Optional[int]] = mapped_column(ForeignKey("unified_events.id"), comment="深度文章也可归入大事件分析") external_id: Mapped[str] = mapped_column(String(32), comment="RSS原文生成的MD5防重指纹") title_embedding: Mapped[Optional[str]] = mapped_column(Text, comment="新闻标题/摘要的语义向量") @@ -218,8 +217,7 @@ class HeadlineRevision(Base): previous_headline: Mapped[str] = mapped_column(String(255), comment="修改前的旧标题") revised_headline: Mapped[str] = mapped_column(String(255), comment="修改后的新标题") - created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utcnow, - comment="系统发现被修改的时间") + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utcnow, comment="系统发现被修改的时间") class RankingLog(Base): @@ -239,8 +237,7 @@ class RankingLog(Base): # 当时它在第几名 ranking_position: Mapped[int] = mapped_column(Integer, comment="当时抓取时的排名名次") # 爬虫看到它的那一瞬间的时间 - observed_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utcnow, - comment="观察到该名次的准确时间") + observed_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utcnow, comment="观察到该名次的准确时间") created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utcnow) @@ -311,13 +308,11 @@ class AppUser(Base): nickname: Mapped[Optional[str]] = mapped_column(String(100), comment="用户展示昵称") avatar_url: Mapped[Optional[str]] = mapped_column(String(500), comment="用户头像地址") - gender: Mapped[GenderType] = mapped_column(Enum(GenderType), default=GenderType.UNKNOWN, - comment="用户性别(用于AI调整行文语气)") + gender: Mapped[GenderType] = mapped_column(Enum(GenderType), default=GenderType.UNKNOWN, comment="用户性别(用于AI调整行文语气)") # 极其强大:一个万能收纳箱!前端未来想加任何诸如“夜间模式”、“字体变大”的开关, # 全部丢进这个 JSON 字段即可,从此免去手动修改后端表结构的麻烦。 - metadata_: Mapped[Optional[Any]] = mapped_column("metadata", JSON, - comment="JSON扩展字段: 存放灵活多变的前端用户偏好设置") + metadata_: Mapped[Optional[Any]] = mapped_column("metadata", JSON, comment="JSON扩展字段: 存放灵活多变的前端用户偏好设置") # 时区对于定时推送系统极其重要!保证纽约的用户和北京的用户都能在早晨8点收到新闻。 timezone: Mapped[str] = mapped_column(String(50), default="Asia/Shanghai", comment="用户所在地时区") @@ -405,8 +400,7 @@ class DeliveryHistory(Base): # 记录这次推送是彻底成功了,还是由于渠道网络问题失败了 status: Mapped[TaskStatus] = mapped_column(Enum(TaskStatus), comment="最终推送结果状态") - created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utcnow, - comment="记录或实际推送的准确时间") + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utcnow, comment="记录或实际推送的准确时间") # ========================================== diff --git a/backend/main.py b/backend/main.py index 868c2d2..9b3a42f 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1,12 +1,18 @@ # run.py import uvicorn +import os +from dotenv import load_dotenv if __name__ == "__main__": + + load_dotenv() + PORT = int(os.getenv("PORT", 8000)) + # 启动服务 uvicorn.run( app="app.main:app", host="0.0.0.0", - port=8000, + port=PORT, # reload=True, workers=1 )