fix: add DateTime(timezone=True) to Batch 1b agent framework path models (7 files, 28 columns)

This commit is contained in:
chiguyong 2026-06-01 20:41:31 +08:00
parent 289f04302f
commit 14cafa66c6
7 changed files with 34 additions and 18 deletions

View File

@ -1,7 +1,7 @@
import uuid import uuid
from datetime import datetime 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 import Uuid
from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy.orm import Mapped, mapped_column, relationship
@ -24,12 +24,14 @@ class AgentRegistry(Base):
endpoint: Mapped[str | None] = mapped_column(String(500), nullable=True) endpoint: Mapped[str | None] = mapped_column(String(500), nullable=True)
status: Mapped[str] = mapped_column(String(20), server_default="offline", nullable=False) status: Mapped[str] = mapped_column(String(20), server_default="offline", nullable=False)
capabilities: Mapped[dict | None] = mapped_column(JSONType, nullable=True) capabilities: Mapped[dict | None] = mapped_column(JSONType, nullable=True)
last_heartbeat: Mapped[datetime | None] = mapped_column(nullable=True) last_heartbeat: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
created_at: Mapped[datetime] = mapped_column( created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
nullable=False, nullable=False,
) )
updated_at: Mapped[datetime] = mapped_column( updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
onupdate=func.now(), onupdate=func.now(),
nullable=False, nullable=False,
@ -70,6 +72,7 @@ class AgentConfig(Base):
config_value: Mapped[dict] = mapped_column(JSONType, nullable=False) config_value: Mapped[dict] = mapped_column(JSONType, nullable=False)
description: Mapped[str | None] = mapped_column(String(500), nullable=True) description: Mapped[str | None] = mapped_column(String(500), nullable=True)
updated_at: Mapped[datetime] = mapped_column( updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
onupdate=func.now(), onupdate=func.now(),
nullable=False, nullable=False,
@ -128,10 +131,11 @@ class AgentTask(Base):
ForeignKey("lifecycle_projects.id", ondelete="SET NULL"), ForeignKey("lifecycle_projects.id", ondelete="SET NULL"),
nullable=True, nullable=True,
) )
scheduled_at: Mapped[datetime | None] = mapped_column(nullable=True) scheduled_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
started_at: Mapped[datetime | None] = mapped_column(nullable=True) started_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
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( created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
nullable=False, nullable=False,
) )
@ -185,6 +189,7 @@ class AgentTaskLog(Base):
message: Mapped[str] = mapped_column(Text, nullable=False) message: Mapped[str] = mapped_column(Text, nullable=False)
extra_metadata: Mapped[dict | None] = mapped_column("metadata", JSONType, nullable=True) extra_metadata: Mapped[dict | None] = mapped_column("metadata", JSONType, nullable=True)
created_at: Mapped[datetime] = mapped_column( created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
nullable=False, nullable=False,
) )

View File

@ -27,12 +27,14 @@ class APIKey(Base):
key_source: Mapped[str] = mapped_column(String(10), default="user") key_source: Mapped[str] = mapped_column(String(10), default="user")
status: Mapped[str] = mapped_column(String(20), default="active") status: Mapped[str] = mapped_column(String(20), default="active")
priority: Mapped[int] = mapped_column(default=0) priority: Mapped[int] = mapped_column(default=0)
last_verified_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True) last_verified_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
created_at: Mapped[datetime] = mapped_column( created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
nullable=False, nullable=False,
) )
updated_at: Mapped[datetime] = mapped_column( updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
onupdate=func.now(), onupdate=func.now(),
nullable=False, nullable=False,

View File

@ -39,15 +39,17 @@ class DetectionTask(Base):
queries: Mapped[list] = mapped_column(JSONType, default=list, nullable=False) queries: Mapped[list] = mapped_column(JSONType, default=list, nullable=False)
competitor_names: Mapped[list | None] = mapped_column(JSONType, nullable=True) competitor_names: Mapped[list | None] = mapped_column(JSONType, nullable=True)
is_active: Mapped[bool] = mapped_column(Boolean, default=True, nullable=False) is_active: Mapped[bool] = mapped_column(Boolean, default=True, nullable=False)
last_run_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True) last_run_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
next_run_at: Mapped[datetime | None] = mapped_column( next_run_at: Mapped[datetime | None] = mapped_column(
DateTime, nullable=True, default=lambda: datetime.now(timezone.utc) DateTime(timezone=True), nullable=True, default=lambda: datetime.now(timezone.utc)
) )
created_at: Mapped[datetime] = mapped_column( created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
nullable=False, nullable=False,
) )
updated_at: Mapped[datetime] = mapped_column( updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
onupdate=func.now(), onupdate=func.now(),
nullable=False, nullable=False,

View File

@ -1,7 +1,7 @@
import uuid import uuid
from datetime import datetime from datetime import datetime
from sqlalchemy import String, Integer, Float, ForeignKey, Index, func from sqlalchemy import String, Integer, Float, DateTime, ForeignKey, Index, func
from sqlalchemy import Uuid from sqlalchemy import Uuid
from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy.orm import Mapped, mapped_column, relationship
@ -39,16 +39,18 @@ class MonitoringRecord(Base):
check_interval_hours: Mapped[int] = mapped_column( check_interval_hours: Mapped[int] = mapped_column(
Integer, server_default="24", nullable=False, Integer, server_default="24", nullable=False,
) )
last_checked_at: Mapped[datetime | None] = mapped_column(nullable=True) last_checked_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
next_check_at: Mapped[datetime | None] = mapped_column(nullable=True) next_check_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
status: Mapped[str] = mapped_column( status: Mapped[str] = mapped_column(
String(20), server_default="active", nullable=False, String(20), server_default="active", nullable=False,
) )
created_at: Mapped[datetime] = mapped_column( created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
nullable=False, nullable=False,
) )
updated_at: Mapped[datetime] = mapped_column( updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
onupdate=func.now(), onupdate=func.now(),
nullable=False, nullable=False,
@ -87,6 +89,7 @@ class ContentBaseline(Base):
rank_position: Mapped[int | None] = mapped_column(Integer, nullable=True) rank_position: Mapped[int | None] = mapped_column(Integer, nullable=True)
snapshot_data: Mapped[dict | None] = mapped_column(JSONType, nullable=True) snapshot_data: Mapped[dict | None] = mapped_column(JSONType, nullable=True)
recorded_at: Mapped[datetime] = mapped_column( recorded_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
nullable=False, nullable=False,
) )

View File

@ -1,7 +1,7 @@
import uuid import uuid
from datetime import datetime from datetime import datetime
from sqlalchemy import String, ForeignKey, Index, func, Text from sqlalchemy import String, DateTime, ForeignKey, Index, func, Text
from sqlalchemy import Uuid from sqlalchemy import Uuid
from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy.orm import Mapped, mapped_column, relationship
@ -25,11 +25,12 @@ class QueryTask(Base):
status: Mapped[str] = mapped_column(String(20), default="pending") status: Mapped[str] = mapped_column(String(20), default="pending")
error_message: Mapped[str | None] = mapped_column(Text, nullable=True) error_message: Mapped[str | None] = mapped_column(Text, nullable=True)
scheduled_at: Mapped[datetime] = mapped_column( scheduled_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
nullable=False, nullable=False,
) )
started_at: Mapped[datetime | None] = mapped_column(nullable=True) started_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
completed_at: Mapped[datetime | None] = mapped_column(nullable=True) completed_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
query: Mapped["Query"] = relationship("Query", back_populates="query_tasks") query: Mapped["Query"] = relationship("Query", back_populates="query_tasks")

View File

@ -1,7 +1,7 @@
import uuid import uuid
from datetime import datetime from datetime import datetime
from sqlalchemy import String, Integer, Float, ForeignKey, Index, func, Text from sqlalchemy import String, Integer, Float, DateTime, ForeignKey, Index, func, Text
from sqlalchemy import Uuid, JSON from sqlalchemy import Uuid, JSON
from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.orm import Mapped, mapped_column
@ -24,8 +24,8 @@ class TrendInsight(Base):
trend_type: Mapped[str] = mapped_column(String(20), nullable=False) trend_type: Mapped[str] = mapped_column(String(20), nullable=False)
keyword: Mapped[str | None] = mapped_column(String(200), nullable=True) keyword: Mapped[str | None] = mapped_column(String(200), nullable=True)
platform: Mapped[str | None] = mapped_column(String(50), nullable=True) platform: Mapped[str | None] = mapped_column(String(50), nullable=True)
period_start: Mapped[datetime] = mapped_column(nullable=False) period_start: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False)
period_end: Mapped[datetime] = mapped_column(nullable=False) period_end: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False)
data_points: Mapped[list | None] = mapped_column(JSON, nullable=True) data_points: Mapped[list | None] = mapped_column(JSON, nullable=True)
change_rate: Mapped[float | None] = mapped_column(Float, nullable=True) change_rate: Mapped[float | None] = mapped_column(Float, nullable=True)
absolute_change: Mapped[int | None] = mapped_column(Integer, nullable=True) absolute_change: Mapped[int | None] = mapped_column(Integer, nullable=True)
@ -37,10 +37,12 @@ class TrendInsight(Base):
String(20), nullable=False, server_default="info", String(20), nullable=False, server_default="info",
) )
created_at: Mapped[datetime] = mapped_column( created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
nullable=False, nullable=False,
) )
updated_at: Mapped[datetime] = mapped_column( updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
onupdate=func.now(), onupdate=func.now(),
nullable=False, nullable=False,

View File

@ -51,11 +51,12 @@ class UsageRecord(Base):
default=dict, default=dict,
) )
timestamp: Mapped[datetime] = mapped_column( timestamp: Mapped[datetime] = mapped_column(
DateTime, DateTime(timezone=True),
default=func.now(), default=func.now(),
index=True, index=True,
) )
created_at: Mapped[datetime] = mapped_column( created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(), server_default=func.now(),
nullable=False, nullable=False,
) )