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
|
import uuid
|
||||||
from datetime import datetime
|
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 import Uuid, JSON
|
||||||
from sqlalchemy.dialects.postgresql import JSONB
|
from sqlalchemy.dialects.postgresql import JSONB
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
|
|
@ -58,6 +58,7 @@ class Alert(Base):
|
||||||
Boolean, default=False, nullable=False,
|
Boolean, default=False, 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,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime
|
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 import Uuid
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
|
|
||||||
|
|
@ -39,10 +39,12 @@ class AlertSetting(Base):
|
||||||
comment="阈值(如评分下降超过5分触发)",
|
comment="阈值(如评分下降超过5分触发)",
|
||||||
)
|
)
|
||||||
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,
|
||||||
|
|
|
||||||
|
|
@ -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, ForeignKey, Index, func, Text, DateTime
|
||||||
from sqlalchemy import Uuid
|
from sqlalchemy import Uuid
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
|
|
||||||
|
|
@ -42,10 +42,12 @@ class KnowledgeBase(Base):
|
||||||
nullable=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,
|
||||||
|
|
@ -93,10 +95,12 @@ class KnowledgeDocument(Base):
|
||||||
# mapped_column("metadata") to avoid SQLAlchemy reserved keyword conflict
|
# mapped_column("metadata") to avoid SQLAlchemy reserved keyword conflict
|
||||||
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,
|
||||||
)
|
)
|
||||||
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,
|
||||||
|
|
@ -153,6 +157,7 @@ class KnowledgeChunk(Base):
|
||||||
# mapped_column("metadata") to avoid SQLAlchemy reserved keyword conflict
|
# mapped_column("metadata") to avoid SQLAlchemy reserved keyword conflict
|
||||||
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,
|
||||||
)
|
)
|
||||||
|
|
@ -192,6 +197,7 @@ class KnowledgeSearchLog(Base):
|
||||||
results_count: Mapped[int] = mapped_column(Integer, server_default="0", nullable=False)
|
results_count: Mapped[int] = mapped_column(Integer, server_default="0", nullable=False)
|
||||||
latency_ms: 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(
|
created_at: Mapped[datetime] = mapped_column(
|
||||||
|
DateTime(timezone=True),
|
||||||
server_default=func.now(),
|
server_default=func.now(),
|
||||||
nullable=False,
|
nullable=False,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -83,10 +83,12 @@ class KnowledgeEntity(Base):
|
||||||
|
|
||||||
# 元数据
|
# 元数据
|
||||||
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,
|
||||||
|
|
@ -151,6 +153,7 @@ class KnowledgeRelation(Base):
|
||||||
|
|
||||||
# 元数据
|
# 元数据
|
||||||
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,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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, ForeignKey, Index, func, Text, DateTime
|
||||||
from sqlalchemy import Uuid
|
from sqlalchemy import Uuid
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
|
|
||||||
|
|
@ -31,10 +31,12 @@ class LifecycleProject(Base):
|
||||||
nullable=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,
|
||||||
|
|
@ -73,8 +75,8 @@ class ProjectStage(Base):
|
||||||
)
|
)
|
||||||
stage_number: Mapped[int] = mapped_column(Integer, nullable=False)
|
stage_number: Mapped[int] = mapped_column(Integer, nullable=False)
|
||||||
status: Mapped[str] = mapped_column(String(20), server_default="pending", nullable=False)
|
status: Mapped[str] = mapped_column(String(20), server_default="pending", 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)
|
||||||
notes: Mapped[str | None] = mapped_column(Text, nullable=True)
|
notes: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||||
metrics: Mapped[dict | None] = mapped_column(JSONType, 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
|
import uuid
|
||||||
from datetime import datetime
|
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 import Uuid
|
||||||
from sqlalchemy.dialects.postgresql import JSONB
|
from sqlalchemy.dialects.postgresql import JSONB
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
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)
|
plan: Mapped[str] = mapped_column(String(20), server_default="free", nullable=False)
|
||||||
max_members: Mapped[int] = mapped_column(Integer, server_default="5", nullable=False)
|
max_members: Mapped[int] = mapped_column(Integer, server_default="5", 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,
|
||||||
|
|
@ -84,6 +86,7 @@ class OrgMember(Base):
|
||||||
)
|
)
|
||||||
role: Mapped[str] = mapped_column(String(20), server_default="viewer", nullable=False)
|
role: Mapped[str] = mapped_column(String(20), server_default="viewer", nullable=False)
|
||||||
joined_at: Mapped[datetime] = mapped_column(
|
joined_at: Mapped[datetime] = mapped_column(
|
||||||
|
DateTime(timezone=True),
|
||||||
server_default=func.now(),
|
server_default=func.now(),
|
||||||
nullable=False,
|
nullable=False,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime
|
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 import Uuid
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||||
|
|
||||||
|
|
@ -24,6 +24,7 @@ class PlatformRule(Base):
|
||||||
severity: Mapped[str] = mapped_column(String(20), nullable=False)
|
severity: Mapped[str] = mapped_column(String(20), nullable=False)
|
||||||
is_active: Mapped[bool] = mapped_column(Boolean, server_default="true", nullable=False)
|
is_active: Mapped[bool] = mapped_column(Boolean, server_default="true", 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,
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime
|
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 import Uuid
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped, mapped_column
|
||||||
|
|
||||||
|
|
@ -22,7 +22,7 @@ class PlatformRuleVersion(Base):
|
||||||
rule_data: Mapped[dict] = mapped_column(JSONType, nullable=False)
|
rule_data: Mapped[dict] = mapped_column(JSONType, nullable=False)
|
||||||
change_summary: Mapped[str | None] = mapped_column(String(500), nullable=True)
|
change_summary: Mapped[str | None] = mapped_column(String(500), nullable=True)
|
||||||
created_by: Mapped[str | None] = mapped_column(String(100), 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__ = (
|
__table_args__ = (
|
||||||
Index("idx_rule_versions_rule_id", "rule_id"),
|
Index("idx_rule_versions_rule_id", "rule_id"),
|
||||||
|
|
|
||||||
|
|
@ -52,10 +52,12 @@ class SchemaSuggestion(Base):
|
||||||
JSONType, nullable=True,
|
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,
|
||||||
)
|
)
|
||||||
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,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue