refactor: update timestamp handling in session management and chat components

This commit is contained in:
Soulter
2025-11-20 17:02:01 +08:00
parent 3ec76636f9
commit 774efb2fe0
5 changed files with 9 additions and 24 deletions

View File

@@ -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,

View File

@@ -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),
),
)

View File

@@ -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(),
}
)

View File

@@ -54,7 +54,7 @@
{{ item.display_name || tm('conversation.newConversation') }}
</v-list-item-title>
<v-list-item-subtitle v-if="!sidebarCollapsed || isMobile" class="timestamp">
{{ formatDate(item.updated_at) }}
{{ new Date(item.updated_at).toLocaleString() }}
</v-list-item-subtitle>
<template v-if="!sidebarCollapsed || isMobile" v-slot:append>
@@ -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, ' ');
}
</script>
<style scoped>

View File

@@ -5,7 +5,7 @@ import { useRouter } from 'vue-router';
export interface Session {
session_id: string;
display_name: string;
updated_at: number;
updated_at: string;
}
export function useSessions(chatboxMode: boolean = false) {