mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 05:48:36 +08:00
Feature - sort conversations by created at (#6079)
This commit is contained in:
parent
5626a22e42
commit
e310f6b776
@ -189,6 +189,7 @@ async def _get_conversation_info(
|
||||
conversation_id=conversation.conversation_id,
|
||||
title=title,
|
||||
last_updated_at=conversation.last_updated_at,
|
||||
created_at=conversation.created_at,
|
||||
selected_repository=conversation.selected_repository,
|
||||
status=ConversationStatus.RUNNING
|
||||
if is_running
|
||||
|
||||
@ -96,7 +96,7 @@ class FileConversationStore(ConversationStore):
|
||||
|
||||
|
||||
def _sort_key(conversation: ConversationMetadata) -> str:
|
||||
last_updated_at = conversation.last_updated_at
|
||||
if last_updated_at:
|
||||
return last_updated_at.isoformat() # YYYY-MM-DDTHH:MM:SS for sorting
|
||||
created_at = conversation.created_at
|
||||
if created_at:
|
||||
return created_at.isoformat() # YYYY-MM-DDTHH:MM:SS for sorting
|
||||
return ''
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from dataclasses import dataclass
|
||||
from dataclasses import dataclass, field
|
||||
from datetime import datetime
|
||||
|
||||
from openhands.storage.data_models.conversation_status import ConversationStatus
|
||||
@ -13,3 +13,4 @@ class ConversationInfo:
|
||||
last_updated_at: datetime | None = None
|
||||
status: ConversationStatus = ConversationStatus.STOPPED
|
||||
selected_repository: str | None = None
|
||||
created_at: datetime = field(default_factory=datetime.now)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from dataclasses import dataclass
|
||||
from dataclasses import dataclass, field
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
@ -9,3 +9,4 @@ class ConversationMetadata:
|
||||
selected_repository: str | None
|
||||
title: str | None = None
|
||||
last_updated_at: datetime | None = None
|
||||
created_at: datetime = field(default_factory=datetime.now)
|
||||
|
||||
@ -29,7 +29,8 @@ def _patch_store():
|
||||
'selected_repository': 'foobar',
|
||||
'conversation_id': 'some_conversation_id',
|
||||
'github_user_id': 'github_user',
|
||||
'last_updated_at': '2025-01-01T00:00:00',
|
||||
'created_at': '2025-01-01T00:00:00',
|
||||
'last_updated_at': '2025-01-01T00:01:00',
|
||||
}
|
||||
),
|
||||
)
|
||||
@ -55,7 +56,8 @@ async def test_search_conversations():
|
||||
ConversationInfo(
|
||||
conversation_id='some_conversation_id',
|
||||
title='Some Conversation',
|
||||
last_updated_at=datetime.fromisoformat('2025-01-01T00:00:00'),
|
||||
created_at=datetime.fromisoformat('2025-01-01T00:00:00'),
|
||||
last_updated_at=datetime.fromisoformat('2025-01-01T00:01:00'),
|
||||
status=ConversationStatus.STOPPED,
|
||||
selected_repository='foobar',
|
||||
)
|
||||
@ -73,7 +75,8 @@ async def test_get_conversation():
|
||||
expected = ConversationInfo(
|
||||
conversation_id='some_conversation_id',
|
||||
title='Some Conversation',
|
||||
last_updated_at=datetime.fromisoformat('2025-01-01T00:00:00'),
|
||||
created_at=datetime.fromisoformat('2025-01-01T00:00:00'),
|
||||
last_updated_at=datetime.fromisoformat('2025-01-01T00:01:00'),
|
||||
status=ConversationStatus.STOPPED,
|
||||
selected_repository='foobar',
|
||||
)
|
||||
@ -105,7 +108,8 @@ async def test_update_conversation():
|
||||
expected = ConversationInfo(
|
||||
conversation_id='some_conversation_id',
|
||||
title='New Title',
|
||||
last_updated_at=datetime.fromisoformat('2025-01-01T00:00:00'),
|
||||
created_at=datetime.fromisoformat('2025-01-01T00:00:00'),
|
||||
last_updated_at=datetime.fromisoformat('2025-01-01T00:01:00'),
|
||||
status=ConversationStatus.STOPPED,
|
||||
selected_repository='foobar',
|
||||
)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user