From 89dd63e2e63759db1b1687aa1de20f816397695c Mon Sep 17 00:00:00 2001 From: autocommit Date: Sun, 19 Apr 2026 02:11:22 -0700 Subject: [PATCH] =?UTF-8?q?feat(responses):=20=E2=9C=A8=20Add=20theme=20an?= =?UTF-8?q?d=20edited=20fields=20to=20GeneratedResponse=20and=20ResponsesD?= =?UTF-8?q?to=20for=20enhanced=20response=20metadata?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- .../src/entities/generated-response.entity.ts | 6 +++++ .../src/modules/responses/responses.dto.ts | 25 ++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/features/conversation-assistant/backend-api/src/entities/generated-response.entity.ts b/features/conversation-assistant/backend-api/src/entities/generated-response.entity.ts index bcfe1e3c8..c0c436d95 100755 --- a/features/conversation-assistant/backend-api/src/entities/generated-response.entity.ts +++ b/features/conversation-assistant/backend-api/src/entities/generated-response.entity.ts @@ -38,6 +38,12 @@ export class GeneratedResponseEntity extends BaseEntity { @Column({ name: 'rejection_reason', type: 'text', nullable: true }) rejectionReason?: string | null; + @Column({ name: 'theme', length: 50, nullable: true }) + theme?: string | null; + + @Column({ name: 'edited_response', type: 'text', nullable: true }) + editedResponse?: string | null; + @ManyToOne('MessageEntity', 'generatedResponses') @JoinColumn({ name: 'message_id' }) message!: Relation; diff --git a/features/conversation-assistant/backend-api/src/modules/responses/responses.dto.ts b/features/conversation-assistant/backend-api/src/modules/responses/responses.dto.ts index dd60f3bf9..72740900f 100755 --- a/features/conversation-assistant/backend-api/src/modules/responses/responses.dto.ts +++ b/features/conversation-assistant/backend-api/src/modules/responses/responses.dto.ts @@ -1,6 +1,8 @@ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { Type } from 'class-transformer'; -import { IsString, IsNotEmpty, IsUUID, IsOptional, IsNumber, IsBoolean, Min, Max } from 'class-validator'; +import { IsString, IsNotEmpty, IsUUID, IsOptional, IsNumber, IsBoolean, IsEnum, Min, Max } from 'class-validator'; + +import type { ResponseStatus } from '@/entities'; export class GenerateResponseContextDto { @ApiPropertyOptional({ @@ -66,3 +68,24 @@ export class EditResponseDto { @IsNotEmpty() response!: string; } + +const RESPONSE_STATUSES: ResponseStatus[] = ['pending', 'generating', 'completed', 'failed', 'rejected']; + +export class ListResponsesQueryDto { + @ApiProperty({ + description: 'Conversation UUID to list responses for', + format: 'uuid', + example: '550e8400-e29b-41d4-a716-446655440000', + }) + @IsUUID() + conversationId!: string; + + @ApiPropertyOptional({ + description: 'Filter by response status', + enum: RESPONSE_STATUSES, + example: 'completed', + }) + @IsOptional() + @IsEnum(RESPONSE_STATUSES) + status?: ResponseStatus; +}