fix: add DateTime(timezone=True) to Batch 1a core monetization path models (11 files, 32 columns)

This commit is contained in:
chiguyong 2026-06-01 20:39:14 +08:00
parent 4168aca107
commit 289f04302f
11 changed files with 40 additions and 15 deletions

View File

@ -1,7 +1,7 @@
import uuid
from datetime import datetime
from sqlalchemy import String, Float, Integer, ForeignKey, Index, func, Text
from sqlalchemy import String, Float, Integer, DateTime, ForeignKey, Index, func, Text
from sqlalchemy import Uuid
from sqlalchemy.orm import Mapped, mapped_column, relationship
@ -37,18 +37,20 @@ class AttributionRecord(Base):
attribution_window_days: Mapped[int] = mapped_column(
Integer, server_default="28", nullable=False,
)
published_at: Mapped[datetime | None] = mapped_column(nullable=True)
window_end_at: Mapped[datetime | None] = mapped_column(nullable=True)
published_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
window_end_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
status: Mapped[str] = mapped_column(
String(20), server_default="tracking", nullable=False,
)
attributed_dimensions: Mapped[dict | None] = mapped_column(JSONType, nullable=True)
roi_percentage: Mapped[float | None] = mapped_column(Float, nullable=True)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
onupdate=func.now(),
nullable=False,

View File

@ -40,13 +40,15 @@ class Brand(Base):
platforms: Mapped[list] = mapped_column(JSONType, default=list, nullable=False)
frequency: Mapped[str] = mapped_column(String(20), default="weekly", nullable=False)
status: Mapped[str] = mapped_column(String(20), default="active", nullable=False)
last_queried_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True)
next_query_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True)
last_queried_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
next_query_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
onupdate=func.now(),
nullable=False,

View File

@ -1,7 +1,7 @@
import uuid
from datetime import datetime
from sqlalchemy import String, Integer, Boolean, ForeignKey, Index, func, Text
from sqlalchemy import String, Integer, Boolean, DateTime, ForeignKey, Index, func, Text
from sqlalchemy import Uuid
from sqlalchemy.orm import Mapped, mapped_column, relationship
@ -32,10 +32,12 @@ class BrandKnowledge(Base):
nullable=True,
)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
onupdate=func.now(),
nullable=False,
@ -81,6 +83,7 @@ class Keyword(Base):
competition_level: Mapped[str | None] = mapped_column(String(20), nullable=True)
status: Mapped[str] = mapped_column(String(20), server_default="active", nullable=False)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)

View File

@ -1,7 +1,7 @@
import uuid
from datetime import datetime
from sqlalchemy import String, Boolean, Integer, Float, ForeignKey, Index, func, Text
from sqlalchemy import String, Boolean, Integer, Float, DateTime, ForeignKey, Index, func, Text
from sqlalchemy import Uuid, JSON
from sqlalchemy.orm import Mapped, mapped_column, relationship
@ -65,6 +65,7 @@ class CitationRecord(Base):
comment="AI回答原始文本去掉data_source标记后的纯文本",
)
queried_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)

View File

@ -37,6 +37,7 @@ class Competitor(Base):
name: Mapped[str] = mapped_column(String(50), nullable=False)
aliases: Mapped[list] = mapped_column(JSONType, default=list, nullable=False)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)

View File

@ -1,7 +1,7 @@
import uuid
from datetime import datetime
from sqlalchemy import String, Float, Integer, ForeignKey, Index, func
from sqlalchemy import String, Float, Integer, DateTime, ForeignKey, Index, func
from sqlalchemy import Uuid
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.orm import Mapped, mapped_column
@ -49,10 +49,12 @@ class CompetitorInsight(Base):
confidence: Mapped[str] = mapped_column(String(20), default="medium", nullable=False)
period_days: Mapped[int] = mapped_column(Integer, default=30, nullable=False)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
onupdate=func.now(),
nullable=False,

View File

@ -1,7 +1,7 @@
import uuid
from datetime import datetime
from sqlalchemy import String, Integer, ForeignKey, Index, func, Text
from sqlalchemy import String, Integer, DateTime, ForeignKey, Index, func, Text
from sqlalchemy import Uuid
from sqlalchemy.orm import Mapped, mapped_column, relationship
@ -40,10 +40,12 @@ class Content(Base):
)
current_version: Mapped[int] = mapped_column(Integer, server_default="1", nullable=False)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
onupdate=func.now(),
nullable=False,
@ -98,6 +100,7 @@ class ContentVersion(Base):
nullable=True,
)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)
@ -137,6 +140,7 @@ class ContentReview(Base):
status: Mapped[str] = mapped_column(String(20), nullable=False)
comments: Mapped[str | None] = mapped_column(Text, nullable=True)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)

View File

@ -2,7 +2,7 @@
import uuid
from datetime import datetime
from sqlalchemy import String, Integer, ForeignKey, Index, func, Text
from sqlalchemy import String, Integer, DateTime, ForeignKey, Index, func, Text
from sqlalchemy import Uuid
from sqlalchemy.orm import Mapped, mapped_column, relationship
@ -38,10 +38,12 @@ class DistributionSchedule(Base):
nullable=True,
)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
onupdate=func.now(),
nullable=False,

View File

@ -1,7 +1,7 @@
import uuid
from datetime import datetime
from sqlalchemy import String, Integer, Text, ForeignKey, Index, func
from sqlalchemy import String, Integer, Text, DateTime, ForeignKey, Index, func
from sqlalchemy import Uuid
from sqlalchemy.orm import Mapped, mapped_column, relationship
@ -41,10 +41,12 @@ class GeoPlan(Base):
nullable=True,
)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
onupdate=func.now(),
nullable=False,
@ -92,12 +94,14 @@ class GeoPlanAction(Base):
sort_order: Mapped[int] = mapped_column(
Integer, server_default="0", nullable=False,
)
completed_at: Mapped[datetime | None] = mapped_column(nullable=True)
completed_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
onupdate=func.now(),
nullable=False,

View File

@ -1,7 +1,7 @@
import uuid
from datetime import datetime
from sqlalchemy import String, ForeignKey, Index, func
from sqlalchemy import String, DateTime, ForeignKey, Index, func
from sqlalchemy import Uuid, JSON
from sqlalchemy.orm import Mapped, mapped_column, relationship
@ -27,13 +27,15 @@ class Query(Base):
platforms: Mapped[list] = mapped_column(JSON, nullable=False, default=lambda: ["wenxin", "kimi"])
frequency: Mapped[str] = mapped_column(String(20), default="weekly")
status: Mapped[str] = mapped_column(String(20), default="active")
last_queried_at: Mapped[datetime | None] = mapped_column(nullable=True)
next_query_at: Mapped[datetime | None] = mapped_column(nullable=True)
last_queried_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
next_query_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
onupdate=func.now(),
nullable=False,

View File

@ -49,10 +49,12 @@ class Suggestion(Base):
comment="状态: pending/in_progress/completed/dismissed",
)
generated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
onupdate=func.now(),
nullable=False,