fix: add DateTime(timezone=True) to Batch 1c auxiliary path models (9 files, 23 columns) and remove orphan monitoring_record.py
This commit is contained in:
parent
14cafa66c6
commit
792d9ebe53
|
|
@ -1,7 +1,7 @@
|
|||
import uuid
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import String, Boolean, Float, ForeignKey, Index, func, Text
|
||||
from sqlalchemy import String, Boolean, Float, ForeignKey, Index, func, Text, DateTime
|
||||
from sqlalchemy import Uuid, JSON
|
||||
from sqlalchemy.dialects.postgresql import JSONB
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
|
@ -58,6 +58,7 @@ class Alert(Base):
|
|||
Boolean, default=False, nullable=False,
|
||||
)
|
||||
created_at: Mapped[datetime] = mapped_column(
|
||||
DateTime(timezone=True),
|
||||
server_default=func.now(),
|
||||
nullable=False,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import uuid
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import String, Boolean, Float, ForeignKey, Index, func
|
||||
from sqlalchemy import String, Boolean, Float, ForeignKey, Index, func, DateTime
|
||||
from sqlalchemy import Uuid
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
|
|
@ -39,10 +39,12 @@ class AlertSetting(Base):
|
|||
comment="阈值(如评分下降超过5分触发)",
|
||||
)
|
||||
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,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import uuid
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import String, Integer, ForeignKey, Index, func, Text
|
||||
from sqlalchemy import String, Integer, ForeignKey, Index, func, Text, DateTime
|
||||
from sqlalchemy import Uuid
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
|
|
@ -42,10 +42,12 @@ class KnowledgeBase(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,
|
||||
|
|
@ -93,10 +95,12 @@ class KnowledgeDocument(Base):
|
|||
# mapped_column("metadata") to avoid SQLAlchemy reserved keyword conflict
|
||||
extra_metadata: Mapped[dict | None] = mapped_column("metadata", JSONType, 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,
|
||||
|
|
@ -153,6 +157,7 @@ class KnowledgeChunk(Base):
|
|||
# mapped_column("metadata") to avoid SQLAlchemy reserved keyword conflict
|
||||
extra_metadata: Mapped[dict | None] = mapped_column("metadata", JSONType, nullable=True)
|
||||
created_at: Mapped[datetime] = mapped_column(
|
||||
DateTime(timezone=True),
|
||||
server_default=func.now(),
|
||||
nullable=False,
|
||||
)
|
||||
|
|
@ -192,6 +197,7 @@ class KnowledgeSearchLog(Base):
|
|||
results_count: Mapped[int] = mapped_column(Integer, server_default="0", nullable=False)
|
||||
latency_ms: Mapped[int] = mapped_column(Integer, server_default="0", nullable=False)
|
||||
created_at: Mapped[datetime] = mapped_column(
|
||||
DateTime(timezone=True),
|
||||
server_default=func.now(),
|
||||
nullable=False,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -83,10 +83,12 @@ class KnowledgeEntity(Base):
|
|||
|
||||
# 元数据
|
||||
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,
|
||||
|
|
@ -151,6 +153,7 @@ class KnowledgeRelation(Base):
|
|||
|
||||
# 元数据
|
||||
created_at: Mapped[datetime] = mapped_column(
|
||||
DateTime(timezone=True),
|
||||
server_default=func.now(),
|
||||
nullable=False,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import uuid
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import String, Integer, ForeignKey, Index, func, Text
|
||||
from sqlalchemy import String, Integer, ForeignKey, Index, func, Text, DateTime
|
||||
from sqlalchemy import Uuid
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
|
|
@ -31,10 +31,12 @@ class LifecycleProject(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,
|
||||
|
|
@ -73,8 +75,8 @@ class ProjectStage(Base):
|
|||
)
|
||||
stage_number: Mapped[int] = mapped_column(Integer, nullable=False)
|
||||
status: Mapped[str] = mapped_column(String(20), server_default="pending", nullable=False)
|
||||
started_at: Mapped[datetime | None] = mapped_column(nullable=True)
|
||||
completed_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(DateTime(timezone=True), nullable=True)
|
||||
notes: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
metrics: Mapped[dict | None] = mapped_column(JSONType, nullable=True)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,108 +0,0 @@
|
|||
import uuid
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import String, Integer, Float, ForeignKey, Index, func
|
||||
from sqlalchemy import Uuid
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from app.database import Base, JSONType
|
||||
|
||||
|
||||
class MonitoringRecord(Base):
|
||||
__tablename__ = "monitoring_records"
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(
|
||||
Uuid(as_uuid=True),
|
||||
primary_key=True,
|
||||
default=uuid.uuid4,
|
||||
)
|
||||
user_id: Mapped[str] = mapped_column(
|
||||
String(36),
|
||||
ForeignKey("users.id", ondelete="CASCADE"),
|
||||
nullable=False,
|
||||
)
|
||||
brand_id: Mapped[uuid.UUID] = mapped_column(
|
||||
Uuid(as_uuid=True),
|
||||
ForeignKey("brands.id", ondelete="CASCADE"),
|
||||
nullable=False,
|
||||
)
|
||||
content_id: Mapped[uuid.UUID | None] = mapped_column(
|
||||
Uuid(as_uuid=True),
|
||||
ForeignKey("contents.id", ondelete="SET NULL"),
|
||||
nullable=True,
|
||||
)
|
||||
query_id: Mapped[uuid.UUID | None] = mapped_column(
|
||||
Uuid(as_uuid=True),
|
||||
ForeignKey("queries.id", ondelete="SET NULL"),
|
||||
nullable=True,
|
||||
)
|
||||
task_type: Mapped[str] = mapped_column(String(50), nullable=False)
|
||||
status: Mapped[str] = mapped_column(
|
||||
String(20), server_default="pending", nullable=False,
|
||||
)
|
||||
baseline_data: Mapped[dict | None] = mapped_column(JSONType, nullable=True)
|
||||
current_data: Mapped[dict | None] = mapped_column(JSONType, nullable=True)
|
||||
change_report: Mapped[dict | None] = mapped_column(JSONType, nullable=True)
|
||||
interval_hours: Mapped[int] = mapped_column(
|
||||
Integer, server_default="24", nullable=False,
|
||||
)
|
||||
last_checked_at: Mapped[datetime | None] = mapped_column(nullable=True)
|
||||
next_check_at: Mapped[datetime | None] = mapped_column(nullable=True)
|
||||
created_at: Mapped[datetime] = mapped_column(
|
||||
server_default=func.now(),
|
||||
nullable=False,
|
||||
)
|
||||
updated_at: Mapped[datetime] = mapped_column(
|
||||
server_default=func.now(),
|
||||
onupdate=func.now(),
|
||||
nullable=False,
|
||||
)
|
||||
|
||||
brand: Mapped["Brand"] = relationship("Brand")
|
||||
user: Mapped["User"] = relationship("User")
|
||||
|
||||
__table_args__ = (
|
||||
Index("idx_monitoring_records_user_id", "user_id"),
|
||||
Index("idx_monitoring_records_brand_id", "brand_id"),
|
||||
Index("idx_monitoring_records_status", "status"),
|
||||
Index("idx_monitoring_records_next_check_at", "next_check_at"),
|
||||
)
|
||||
|
||||
|
||||
class ContentBaseline(Base):
|
||||
__tablename__ = "content_baselines"
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(
|
||||
Uuid(as_uuid=True),
|
||||
primary_key=True,
|
||||
default=uuid.uuid4,
|
||||
)
|
||||
brand_id: Mapped[uuid.UUID] = mapped_column(
|
||||
Uuid(as_uuid=True),
|
||||
ForeignKey("brands.id", ondelete="CASCADE"),
|
||||
nullable=False,
|
||||
)
|
||||
content_id: Mapped[uuid.UUID | None] = mapped_column(
|
||||
Uuid(as_uuid=True),
|
||||
ForeignKey("contents.id", ondelete="SET NULL"),
|
||||
nullable=True,
|
||||
)
|
||||
citation_count: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
|
||||
positive_ratio: Mapped[float] = mapped_column(Float, nullable=False, default=0.0)
|
||||
avg_rank: Mapped[float] = mapped_column(Float, nullable=False, default=0.0)
|
||||
platform_data: Mapped[dict | None] = mapped_column(JSONType, nullable=True)
|
||||
recorded_at: Mapped[datetime] = mapped_column(
|
||||
server_default=func.now(),
|
||||
nullable=False,
|
||||
)
|
||||
created_at: Mapped[datetime] = mapped_column(
|
||||
server_default=func.now(),
|
||||
nullable=False,
|
||||
)
|
||||
|
||||
brand: Mapped["Brand"] = relationship("Brand")
|
||||
|
||||
__table_args__ = (
|
||||
Index("idx_content_baselines_brand_id", "brand_id"),
|
||||
Index("idx_content_baselines_content_id", "content_id"),
|
||||
)
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
import uuid
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import String, Integer, ForeignKey, Index, func, Text
|
||||
from sqlalchemy import String, Integer, ForeignKey, Index, func, Text, DateTime
|
||||
from sqlalchemy import Uuid
|
||||
from sqlalchemy.dialects.postgresql import JSONB
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
|
@ -24,10 +24,12 @@ class Organization(Base):
|
|||
plan: Mapped[str] = mapped_column(String(20), server_default="free", nullable=False)
|
||||
max_members: Mapped[int] = mapped_column(Integer, server_default="5", 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,
|
||||
|
|
@ -84,6 +86,7 @@ class OrgMember(Base):
|
|||
)
|
||||
role: Mapped[str] = mapped_column(String(20), server_default="viewer", nullable=False)
|
||||
joined_at: Mapped[datetime] = mapped_column(
|
||||
DateTime(timezone=True),
|
||||
server_default=func.now(),
|
||||
nullable=False,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import uuid
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import String, Boolean, ForeignKey, Index, func, Text
|
||||
from sqlalchemy import String, Boolean, ForeignKey, Index, func, Text, DateTime
|
||||
from sqlalchemy import Uuid
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
|
|
@ -24,6 +24,7 @@ class PlatformRule(Base):
|
|||
severity: Mapped[str] = mapped_column(String(20), nullable=False)
|
||||
is_active: Mapped[bool] = mapped_column(Boolean, server_default="true", nullable=False)
|
||||
updated_at: Mapped[datetime] = mapped_column(
|
||||
DateTime(timezone=True),
|
||||
server_default=func.now(),
|
||||
onupdate=func.now(),
|
||||
nullable=False,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import uuid
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import String, Integer, Index, func
|
||||
from sqlalchemy import String, Integer, Index, func, DateTime
|
||||
from sqlalchemy import Uuid
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
|
|
@ -22,7 +22,7 @@ class PlatformRuleVersion(Base):
|
|||
rule_data: Mapped[dict] = mapped_column(JSONType, nullable=False)
|
||||
change_summary: Mapped[str | None] = mapped_column(String(500), nullable=True)
|
||||
created_by: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
||||
created_at: Mapped[datetime] = mapped_column(server_default=func.now())
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
|
||||
|
||||
__table_args__ = (
|
||||
Index("idx_rule_versions_rule_id", "rule_id"),
|
||||
|
|
|
|||
|
|
@ -52,10 +52,12 @@ class SchemaSuggestion(Base):
|
|||
JSONType, 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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue