From 774efb2fe0f46dec4e720ac8cb71ec9909b81012 Mon Sep 17 00:00:00 2001
From: Soulter <905617992@qq.com>
Date: Thu, 20 Nov 2025 17:02:01 +0800
Subject: [PATCH] refactor: update timestamp handling in session management and
chat components
---
astrbot/core/db/po.py | 2 +-
astrbot/core/db/sqlite.py | 8 ++++----
astrbot/dashboard/routes/chat.py | 4 ++--
.../src/components/chat/ConversationSidebar.vue | 17 +----------------
dashboard/src/composables/useSessions.ts | 2 +-
5 files changed, 9 insertions(+), 24 deletions(-)
diff --git a/astrbot/core/db/po.py b/astrbot/core/db/po.py
index 8fb14c19..d6621d07 100644
--- a/astrbot/core/db/po.py
+++ b/astrbot/core/db/po.py
@@ -162,7 +162,7 @@ class PlatformSession(SQLModel, table=True):
Each session can have multiple conversations (对话) associated with it.
"""
- __tablename__ = "platform_sessions"
+ __tablename__ = "platform_sessions" # type: ignore
inner_id: int | None = Field(
primary_key=True,
diff --git a/astrbot/core/db/sqlite.py b/astrbot/core/db/sqlite.py
index 4a7f2560..19461861 100644
--- a/astrbot/core/db/sqlite.py
+++ b/astrbot/core/db/sqlite.py
@@ -1,7 +1,7 @@
import asyncio
import threading
import typing as T
-from datetime import datetime, timedelta
+from datetime import datetime, timedelta, timezone
from sqlalchemy.ext.asyncio import AsyncSession
from sqlmodel import col, delete, desc, func, or_, select, text, update
@@ -788,13 +788,13 @@ class SQLiteDatabase(BaseDatabase):
async with self.get_db() as session:
session: AsyncSession
async with session.begin():
- values = {"updated_at": datetime.now()}
+ values: dict[str, T.Any] = {"updated_at": datetime.now(timezone.utc)}
if display_name is not None:
values["display_name"] = display_name
await session.execute(
update(PlatformSession)
- .where(PlatformSession.session_id == session_id)
+ .where(col(PlatformSession.session_id == session_id))
.values(**values),
)
@@ -805,6 +805,6 @@ class SQLiteDatabase(BaseDatabase):
async with session.begin():
await session.execute(
delete(PlatformSession).where(
- PlatformSession.session_id == session_id,
+ col(PlatformSession.session_id == session_id),
),
)
diff --git a/astrbot/dashboard/routes/chat.py b/astrbot/dashboard/routes/chat.py
index 2620f1a1..1ad78956 100644
--- a/astrbot/dashboard/routes/chat.py
+++ b/astrbot/dashboard/routes/chat.py
@@ -334,8 +334,8 @@ class ChatRoute(Route):
"creator": session.creator,
"display_name": session.display_name,
"is_group": session.is_group,
- "created_at": int(session.created_at.timestamp()),
- "updated_at": int(session.updated_at.timestamp()),
+ "created_at": session.created_at.astimezone().isoformat(),
+ "updated_at": session.updated_at.astimezone().isoformat(),
}
)
diff --git a/dashboard/src/components/chat/ConversationSidebar.vue b/dashboard/src/components/chat/ConversationSidebar.vue
index 2ea9a481..b2ebd3fe 100644
--- a/dashboard/src/components/chat/ConversationSidebar.vue
+++ b/dashboard/src/components/chat/ConversationSidebar.vue
@@ -54,7 +54,7 @@
{{ item.display_name || tm('conversation.newConversation') }}
- {{ formatDate(item.updated_at) }}
+ {{ new Date(item.updated_at).toLocaleString() }}
@@ -159,21 +159,6 @@ function handleSidebarMouseLeave() {
}
sidebarHoverExpanded.value = false;
}
-
-function formatDate(timestamp: number): string {
- const date = new Date(timestamp * 1000);
- const options: Intl.DateTimeFormatOptions = {
- year: 'numeric',
- month: '2-digit',
- day: '2-digit',
- hour: '2-digit',
- minute: '2-digit',
- second: '2-digit',
- hour12: false
- };
- const locale = t('core.common.locale') || 'zh-CN';
- return date.toLocaleString(locale, options).replace(/\//g, '-').replace(/, /g, ' ');
-}