告警记录保存位置快照

This commit is contained in:
stu2not
2026-05-27 17:06:12 +08:00
parent 356e333c81
commit 1b75435a3c
11 changed files with 321 additions and 5 deletions

View File

@@ -78,6 +78,22 @@ async def _ensure_columns(conn, *, table_name: str, columns: list[tuple[str, str
await conn.execute(text(f"ALTER TABLE {table_name} ADD COLUMN {definition}"))
async def _ensure_device_alarm_location_columns(conn) -> None:
await _ensure_columns(
conn,
table_name="device_alarm_events",
columns=[
("coord_type", "coord_type VARCHAR(16) NULL AFTER source_msg_id"),
("lat", "lat DECIMAL(10, 7) NULL AFTER coord_type"),
("lng", "lng DECIMAL(10, 7) NULL AFTER lat"),
("location_updated_at", "location_updated_at DATETIME NULL AFTER lng"),
("address", "address VARCHAR(255) NULL AFTER location_updated_at"),
("address_resolved_at", "address_resolved_at DATETIME NULL AFTER address"),
("address_resolve_status", "address_resolve_status TINYINT NULL AFTER address_resolved_at"),
],
)
async def _ensure_child_location_address_columns(conn) -> None:
await _ensure_columns(
conn,
@@ -204,6 +220,7 @@ async def init_db():
await conn.run_sync(Base.metadata.create_all)
await _ensure_manual_sleep_mode_column(conn)
await _ensure_schedule_suppressed_until_column(conn)
await _ensure_device_alarm_location_columns(conn)
await _ensure_child_location_address_columns(conn)
await _ensure_device_family_tables(conn)
await engine.dispose()

View File

@@ -344,6 +344,13 @@ class DeviceAlarmEvent(Base):
owner_user_id: Mapped[Optional[int]] = mapped_column(Integer)
child_id: Mapped[Optional[int]] = mapped_column(Integer)
source_msg_id: Mapped[str] = mapped_column(String(8), server_default=text("'010'"))
coord_type: Mapped[Optional[str]] = mapped_column(String(16))
lat: Mapped[Optional[float]] = mapped_column(Numeric(10, 7))
lng: Mapped[Optional[float]] = mapped_column(Numeric(10, 7))
location_updated_at: Mapped[Optional[datetime]] = mapped_column(DateTime)
address: Mapped[Optional[str]] = mapped_column(String(255))
address_resolved_at: Mapped[Optional[datetime]] = mapped_column(DateTime)
address_resolve_status: Mapped[Optional[int]] = mapped_column(Integer)
created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)
class IMConversation(Base):