feat(models): add org_id to Article, PublishRecord, ContentMetrics, SearchRanking, GeoReadinessScore
- Add org_id column to 5 models with default='default' - Update to_dict() methods for ContentMetrics, SearchRanking, GeoReadinessScore - Add ALTER TABLE migrations in database.py init_db() - Add org_id to 6 Pydantic response schemas - Add require_role() helper factory in auth.py
This commit is contained in:
@@ -280,6 +280,7 @@ class Article(Base):
|
||||
|
||||
id = Column(String, primary_key=True)
|
||||
topic_id = Column(String, ForeignKey("topics.id"), nullable=False)
|
||||
org_id = Column(String, default="default", nullable=True)
|
||||
platform = Column(String, nullable=False)
|
||||
file_path = Column(String, nullable=False)
|
||||
title = Column(String, nullable=True)
|
||||
@@ -302,6 +303,7 @@ class PublishRecord(Base):
|
||||
platform = Column(String, nullable=False)
|
||||
action = Column(String, nullable=False)
|
||||
status = Column(String, nullable=False)
|
||||
org_id = Column(String, default="default", nullable=True)
|
||||
operator = Column(String, nullable=True)
|
||||
description = Column(Text, nullable=True)
|
||||
suggestion = Column(Text, nullable=True)
|
||||
@@ -357,6 +359,7 @@ class ContentMetrics(Base):
|
||||
id = Column(Integer, primary_key=True, index=True, autoincrement=True)
|
||||
topic_id = Column(String, ForeignKey("topics.id"), nullable=False, index=True)
|
||||
platform = Column(String, nullable=False)
|
||||
org_id = Column(String, default="default", nullable=True)
|
||||
publish_url = Column(String, nullable=True)
|
||||
views = Column(Integer, default=0)
|
||||
likes = Column(Integer, default=0)
|
||||
@@ -382,6 +385,7 @@ class ContentMetrics(Base):
|
||||
"id": self.id,
|
||||
"topic_id": self.topic_id,
|
||||
"platform": self.platform,
|
||||
"org_id": self.org_id,
|
||||
"publish_url": self.publish_url,
|
||||
"views": self.views,
|
||||
"likes": self.likes,
|
||||
@@ -869,6 +873,7 @@ class SearchRanking(Base):
|
||||
article_id = Column(String, ForeignKey("articles.id"), nullable=True)
|
||||
topic_id = Column(String, ForeignKey("topics.id"), nullable=True)
|
||||
keyword = Column(String, nullable=False, index=True)
|
||||
org_id = Column(String, default="default", nullable=True)
|
||||
platform = Column(String, nullable=True)
|
||||
search_engine = Column(String, default="bing") # bing / baidu / google
|
||||
position = Column(Integer, nullable=True) # 搜索排名位置(null = 未上榜)
|
||||
@@ -888,6 +893,7 @@ class SearchRanking(Base):
|
||||
"article_id": self.article_id,
|
||||
"topic_id": self.topic_id,
|
||||
"keyword": self.keyword,
|
||||
"org_id": self.org_id,
|
||||
"platform": self.platform,
|
||||
"search_engine": self.search_engine,
|
||||
"position": self.position,
|
||||
@@ -911,6 +917,7 @@ class GeoReadinessScore(Base):
|
||||
article_id = Column(String, ForeignKey("articles.id"), nullable=True, index=True)
|
||||
topic_id = Column(String, ForeignKey("topics.id"), nullable=True)
|
||||
platform = Column(String, nullable=True)
|
||||
org_id = Column(String, default="default", nullable=True)
|
||||
total_score = Column(Integer, default=0) # 总分 0-100
|
||||
has_schema = Column(Boolean, default=False) # 是否有结构化数据
|
||||
schema_types = Column(String, nullable=True) # 含有的 schema 类型列表
|
||||
@@ -928,6 +935,7 @@ class GeoReadinessScore(Base):
|
||||
"article_id": self.article_id,
|
||||
"topic_id": self.topic_id,
|
||||
"platform": self.platform,
|
||||
"org_id": self.org_id,
|
||||
"total_score": self.total_score,
|
||||
"has_schema": self.has_schema,
|
||||
"schema_types": self.schema_types,
|
||||
|
||||
Reference in New Issue
Block a user