From 7efc887e32a154216bba0dec1b2c2e32b3dee9e2 Mon Sep 17 00:00:00 2001 From: Asuka Minato Date: Sun, 26 Apr 2026 20:47:42 +0900 Subject: [PATCH] refactor: port MessageAnnotation (#31005) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- api/models/model.py | 7 +++++-- api/services/annotation_service.py | 9 ++++++++- api/tests/unit_tests/models/test_app_models.py | 6 ++++++ api/tests/unit_tests/services/test_annotation_service.py | 2 ++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/api/models/model.py b/api/models/model.py index a632735f39..de83aa1d96 100644 --- a/api/models/model.py +++ b/api/models/model.py @@ -1867,15 +1867,18 @@ class MessageAnnotation(TypeBase): ) id: Mapped[str] = mapped_column( - StringUUID, insert_default=lambda: str(uuid4()), default_factory=lambda: str(uuid4()), init=False + StringUUID, + insert_default=lambda: str(uuid4()), + default_factory=lambda: str(uuid4()), + init=False, ) app_id: Mapped[str] = mapped_column(StringUUID) question: Mapped[str] = mapped_column(LongText, nullable=False) content: Mapped[str] = mapped_column(LongText, nullable=False) + hit_count: Mapped[int] = mapped_column(sa.Integer, nullable=False, server_default=sa.text("0"), init=False) account_id: Mapped[str] = mapped_column(StringUUID, nullable=False) conversation_id: Mapped[str | None] = mapped_column(StringUUID, sa.ForeignKey("conversations.id"), default=None) message_id: Mapped[str | None] = mapped_column(StringUUID, default=None) - hit_count: Mapped[int] = mapped_column(sa.Integer, nullable=False, server_default=sa.text("0"), default=0) created_at: Mapped[datetime] = mapped_column( sa.DateTime, nullable=False, server_default=func.current_timestamp(), init=False ) diff --git a/api/services/annotation_service.py b/api/services/annotation_service.py index ff0882ad5c..0229a1f43a 100644 --- a/api/services/annotation_service.py +++ b/api/services/annotation_service.py @@ -133,7 +133,14 @@ class AppAnnotationService: raise ValueError("'question' is required when 'message_id' is not provided") question = maybe_question - annotation = MessageAnnotation(app_id=app.id, content=answer, question=question, account_id=current_user.id) + annotation = MessageAnnotation( + app_id=app.id, + conversation_id=None, + message_id=None, + content=answer, + question=question, + account_id=current_user.id, + ) db.session.add(annotation) db.session.commit() diff --git a/api/tests/unit_tests/models/test_app_models.py b/api/tests/unit_tests/models/test_app_models.py index 4e46cf9654..e3b8269e15 100644 --- a/api/tests/unit_tests/models/test_app_models.py +++ b/api/tests/unit_tests/models/test_app_models.py @@ -711,6 +711,8 @@ class TestMessageAnnotation: annotation = MessageAnnotation( app_id=app_id, question="What is AI?", + conversation_id=None, + message_id=None, content="AI stands for Artificial Intelligence.", account_id=account_id, ) @@ -728,6 +730,8 @@ class TestMessageAnnotation: annotation = MessageAnnotation( app_id=str(uuid4()), question="Test question", + conversation_id=None, + message_id=None, content="Test content", account_id=str(uuid4()), ) @@ -1068,6 +1072,8 @@ class TestModelIntegration: app_id=app_id, question="What is AI?", content="AI stands for Artificial Intelligence.", + conversation_id=None, + message_id=message_id, account_id=account_id, ) annotation.id = annotation_id diff --git a/api/tests/unit_tests/services/test_annotation_service.py b/api/tests/unit_tests/services/test_annotation_service.py index 4295315f48..5054010e89 100644 --- a/api/tests/unit_tests/services/test_annotation_service.py +++ b/api/tests/unit_tests/services/test_annotation_service.py @@ -238,6 +238,8 @@ class TestAppAnnotationServiceUpInsert: assert result == annotation_instance mock_cls.assert_called_once_with( app_id=app.id, + conversation_id=None, + message_id=None, content="hello", question="q1", account_id=current_user.id,