From 8d8df53e56a5406bd1ae3230d9372fc65683ae9f Mon Sep 17 00:00:00 2001 From: hailin Date: Fri, 6 Feb 2026 20:55:04 -0800 Subject: [PATCH] fix(conversations): exclude DELETED conversations from evolution queries and user operations - findForEvolution() now excludes DELETED conversations (should not learn from deleted data) - getConversation() rejects DELETED conversations for user-facing operations (sendMessage, getMessages, etc.) Co-Authored-By: Claude Opus 4.6 --- .../outbound/persistence/conversation-postgres.repository.ts | 3 ++- .../src/application/services/conversation.service.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/services/conversation-service/src/adapters/outbound/persistence/conversation-postgres.repository.ts b/packages/services/conversation-service/src/adapters/outbound/persistence/conversation-postgres.repository.ts index 0bc45f6..e18ac54 100644 --- a/packages/services/conversation-service/src/adapters/outbound/persistence/conversation-postgres.repository.ts +++ b/packages/services/conversation-service/src/adapters/outbound/persistence/conversation-postgres.repository.ts @@ -60,7 +60,8 @@ export class ConversationPostgresRepository hoursBack?: number; minMessageCount?: number; }): Promise { - const queryBuilder = this.createTenantQueryBuilder('conversation'); + const queryBuilder = this.createTenantQueryBuilder('conversation') + .andWhere('conversation.status != :deletedStatus', { deletedStatus: 'DELETED' }); if (options.status) { queryBuilder.andWhere('conversation.status = :status', { status: options.status }); diff --git a/packages/services/conversation-service/src/application/services/conversation.service.ts b/packages/services/conversation-service/src/application/services/conversation.service.ts index c51d6bb..5817c6c 100644 --- a/packages/services/conversation-service/src/application/services/conversation.service.ts +++ b/packages/services/conversation-service/src/application/services/conversation.service.ts @@ -87,7 +87,7 @@ export class ConversationService { ): Promise { const conversation = await this.conversationRepo.findById(conversationId); - if (!conversation || conversation.userId !== userId) { + if (!conversation || conversation.userId !== userId || conversation.isDeleted()) { throw new NotFoundException('Conversation not found'); }