update
This commit is contained in:
@@ -88,7 +88,7 @@ def list_prompt_history(request, task_id: int):
|
||||
|
||||
items.append(
|
||||
(
|
||||
user_msg.created,
|
||||
(user_msg.created, user_msg.id),
|
||||
{
|
||||
"user_message_id": user_msg.id,
|
||||
"assistant_message_id": assistant_msg.id,
|
||||
@@ -104,7 +104,7 @@ def list_prompt_history(request, task_id: int):
|
||||
)
|
||||
)
|
||||
|
||||
return [item for _, item in sorted(items, key=lambda row: row[0], reverse=True)]
|
||||
return [item for _, item in sorted(items, key=lambda row: row[0])]
|
||||
|
||||
|
||||
@router.post("/conversations/{conversation_id}/classify")
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
from datetime import timedelta
|
||||
from django.test import TestCase
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.utils import timezone
|
||||
from task.models import Task
|
||||
from submission.models import Submission
|
||||
from prompt.models import Conversation, Message
|
||||
@@ -238,6 +240,31 @@ class PromptHistoryTest(TestCase):
|
||||
self.assertEqual(by_source["manual"]["code_html"], "<section>card</section>")
|
||||
self.assertNotIn("content", by_source["conversation"])
|
||||
|
||||
def test_history_is_ordered_old_to_new(self):
|
||||
newest_user, newest_asst = self._pair(self.user, self.task, "第三条")
|
||||
oldest_user, oldest_asst = self._pair(self.user, self.task, "第一条")
|
||||
middle_user, middle_asst = self._pair(self.user, self.task, "第二条")
|
||||
base = timezone.now()
|
||||
for offset, user_msg, asst_msg in [
|
||||
(0, oldest_user, oldest_asst),
|
||||
(1, middle_user, middle_asst),
|
||||
(2, newest_user, newest_asst),
|
||||
]:
|
||||
user_created = base + timedelta(minutes=offset)
|
||||
Message.objects.filter(id=user_msg.id).update(created=user_created)
|
||||
Message.objects.filter(id=asst_msg.id).update(
|
||||
created=user_created + timedelta(seconds=1)
|
||||
)
|
||||
|
||||
self.client.force_login(self.user)
|
||||
resp = self.client.get(f"/api/prompt/history/{self.task.id}")
|
||||
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertEqual(
|
||||
[item["prompt"] for item in resp.json()],
|
||||
["第一条", "第二条", "第三条"],
|
||||
)
|
||||
|
||||
def test_history_is_scoped_to_current_user_and_task(self):
|
||||
own_user, _ = self._pair(self.user, self.task, "自己的提示词")
|
||||
self._pair(self.other, self.task, "别人的提示词")
|
||||
|
||||
Reference in New Issue
Block a user