fix: new message duplicate

pull/21891/head
ytqh 11 months ago
parent 426df30730
commit 55010d2c09

@ -2,13 +2,12 @@ import logging
import time import time
from datetime import datetime from datetime import datetime
from sqlalchemy import asc, func, or_
import app import app
from configs import dify_config from configs import dify_config
from core.app.entities.app_invoke_entities import InvokeFrom from core.app.entities.app_invoke_entities import InvokeFrom
from models.model import App, EndUser, Message, db from models.model import App, EndUser, Message, db
from services.app_generate_service import AppGenerateService from services.app_generate_service import AppGenerateService
from sqlalchemy import asc, func, or_
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO) logger.setLevel(logging.INFO)
@ -67,6 +66,8 @@ def update_user_profile_for_appid(users_to_update: list[EndUser]):
new_messages, latest_messages_created_at = fetch_new_messages_for_user( new_messages, latest_messages_created_at = fetch_new_messages_for_user(
user user
) )
if len(new_messages) > 0:
process_user_memory(user, new_messages) process_user_memory(user, new_messages)
process_user_health_summary(user, new_messages) process_user_health_summary(user, new_messages)
user.profile_updated_at = latest_messages_created_at user.profile_updated_at = latest_messages_created_at
@ -130,15 +131,15 @@ def fetch_new_messages_for_user(user: EndUser) -> tuple[str, datetime]:
) )
new_messages = message_query.order_by(asc(Message.created_at)).all() new_messages = message_query.order_by(asc(Message.created_at)).all()
if len(new_messages) == 0:
logger.warning(f"No new messages for user id {user.id}")
return "", datetime.now()
# Format messages for input - safely handle missing query attributes # Format messages for input - safely handle missing query attributes
message_texts = [] message_texts = []
for msg in new_messages: for msg in new_messages:
message_texts.append(f"user: {msg.query}\nassistant: {msg.answer}\n") message_texts.append(f"user: {msg.query}\nassistant: {msg.answer}\n")
# If no valid messages remain, exit early
if not message_texts:
logger.warning(f"No valid message content for user id {user.id}")
return "\n".join(message_texts), new_messages[-1].created_at return "\n".join(message_texts), new_messages[-1].created_at

Loading…
Cancel
Save