tychat-contracts 1.0.63 → 1.0.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,6 +5,8 @@ export declare class AgentResponseDto {
5
5
  unitId: number;
6
6
  integration: AiIntegrationDto;
7
7
  model: string;
8
+ transcriptionIntegration: AiIntegrationDto;
9
+ transcriptionModel: string;
8
10
  systemPrompt: string;
9
11
  temperature: number;
10
12
  active: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-response.dto.d.ts","sourceRoot":"","sources":["../../src/ai/agent-response.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE/E,qBAAa,gBAAgB;IAM3B,EAAE,EAAE,MAAM,CAAC;IAQX,MAAM,EAAE,MAAM,CAAC;IAOf,MAAM,EAAE,MAAM,CAAC;IAQf,WAAW,EAAE,gBAAgB,CAAC;IAO9B,KAAK,EAAE,MAAM,CAAC;IAOd,YAAY,EAAE,MAAM,CAAC;IAOrB,WAAW,EAAE,MAAM,CAAC;IAOpB,MAAM,EAAE,OAAO,CAAC;IAQhB,YAAY,CAAC,EAAE,MAAM,CAAC;IAQtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAOtB,SAAS,EAAE,MAAM,CAAC;IAOlB,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"agent-response.dto.d.ts","sourceRoot":"","sources":["../../src/ai/agent-response.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE/E,qBAAa,gBAAgB;IAM3B,EAAE,EAAE,MAAM,CAAC;IAQX,MAAM,EAAE,MAAM,CAAC;IAOf,MAAM,EAAE,MAAM,CAAC;IAQf,WAAW,EAAE,gBAAgB,CAAC;IAO9B,KAAK,EAAE,MAAM,CAAC;IAQd,wBAAwB,EAAE,gBAAgB,CAAC;IAO3C,kBAAkB,EAAE,MAAM,CAAC;IAO3B,YAAY,EAAE,MAAM,CAAC;IAOrB,WAAW,EAAE,MAAM,CAAC;IAOpB,MAAM,EAAE,OAAO,CAAC;IAQhB,YAAY,CAAC,EAAE,MAAM,CAAC;IAQtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAOtB,SAAS,EAAE,MAAM,CAAC;IAOlB,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -19,6 +19,8 @@ class AgentResponseDto {
19
19
  unitId;
20
20
  integration;
21
21
  model;
22
+ transcriptionIntegration;
23
+ transcriptionModel;
22
24
  systemPrompt;
23
25
  temperature;
24
26
  active;
@@ -70,6 +72,23 @@ __decorate([
70
72
  (0, class_validator_1.IsString)(),
71
73
  __metadata("design:type", String)
72
74
  ], AgentResponseDto.prototype, "model", void 0);
75
+ __decorate([
76
+ (0, swagger_1.ApiProperty)({
77
+ description: 'Integration provider used for audio transcription',
78
+ enum: integration_provider_dto_1.AI_INTEGRATIONS,
79
+ example: 'OPENAI',
80
+ }),
81
+ (0, class_validator_1.IsEnum)(integration_provider_dto_1.AI_INTEGRATIONS),
82
+ __metadata("design:type", String)
83
+ ], AgentResponseDto.prototype, "transcriptionIntegration", void 0);
84
+ __decorate([
85
+ (0, swagger_1.ApiProperty)({
86
+ description: 'Model name used for audio transcription',
87
+ example: 'gpt-4o-mini-transcribe',
88
+ }),
89
+ (0, class_validator_1.IsString)(),
90
+ __metadata("design:type", String)
91
+ ], AgentResponseDto.prototype, "transcriptionModel", void 0);
73
92
  __decorate([
74
93
  (0, swagger_1.ApiProperty)({
75
94
  description: 'System prompt used by this agent',
@@ -4,6 +4,8 @@ export declare class CreateAgentDto {
4
4
  unitId: number;
5
5
  integration: AiIntegrationDto;
6
6
  model: string;
7
+ transcriptionIntegration?: AiIntegrationDto;
8
+ transcriptionModel?: string;
7
9
  systemPrompt: string;
8
10
  temperature: number;
9
11
  active: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"create-agent.dto.d.ts","sourceRoot":"","sources":["../../src/ai/create-agent.dto.ts"],"names":[],"mappings":"AAYA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE/E,qBAAa,cAAc;IAOzB,MAAM,EAAE,MAAM,CAAC;IAQf,MAAM,EAAE,MAAM,CAAC;IAQf,WAAW,EAAE,gBAAgB,CAAC;IAQ9B,KAAK,EAAE,MAAM,CAAC;IAQd,YAAY,EAAE,MAAM,CAAC;IAWrB,WAAW,EAAE,MAAM,CAAC;IAOpB,MAAM,EAAE,OAAO,CAAC;IAShB,YAAY,CAAC,EAAE,MAAM,CAAC;IAStB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"create-agent.dto.d.ts","sourceRoot":"","sources":["../../src/ai/create-agent.dto.ts"],"names":[],"mappings":"AAYA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE/E,qBAAa,cAAc;IAOzB,MAAM,EAAE,MAAM,CAAC;IAQf,MAAM,EAAE,MAAM,CAAC;IAQf,WAAW,EAAE,gBAAgB,CAAC;IAQ9B,KAAK,EAAE,MAAM,CAAC;IAUd,wBAAwB,CAAC,EAAE,gBAAgB,CAAC;IAU5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAQ5B,YAAY,EAAE,MAAM,CAAC;IAWrB,WAAW,EAAE,MAAM,CAAC;IAOpB,MAAM,EAAE,OAAO,CAAC;IAShB,YAAY,CAAC,EAAE,MAAM,CAAC;IAStB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
@@ -18,6 +18,8 @@ class CreateAgentDto {
18
18
  unitId;
19
19
  integration;
20
20
  model;
21
+ transcriptionIntegration;
22
+ transcriptionModel;
21
23
  systemPrompt;
22
24
  temperature;
23
25
  active;
@@ -61,6 +63,26 @@ __decorate([
61
63
  (0, class_validator_1.IsNotEmpty)(),
62
64
  __metadata("design:type", String)
63
65
  ], CreateAgentDto.prototype, "model", void 0);
66
+ __decorate([
67
+ (0, swagger_1.ApiPropertyOptional)({
68
+ description: 'Integration provider used specifically for audio transcription. Defaults to "integration" when omitted.',
69
+ enum: integration_provider_dto_1.AI_INTEGRATIONS,
70
+ example: 'GEMINI',
71
+ }),
72
+ (0, class_validator_1.IsOptional)(),
73
+ (0, class_validator_1.IsEnum)(integration_provider_dto_1.AI_INTEGRATIONS),
74
+ __metadata("design:type", String)
75
+ ], CreateAgentDto.prototype, "transcriptionIntegration", void 0);
76
+ __decorate([
77
+ (0, swagger_1.ApiPropertyOptional)({
78
+ description: 'Model name used specifically for audio transcription. Defaults to "model" when omitted.',
79
+ example: 'gemini-2.0-flash',
80
+ }),
81
+ (0, class_validator_1.IsOptional)(),
82
+ (0, class_validator_1.IsString)(),
83
+ (0, class_validator_1.IsNotEmpty)(),
84
+ __metadata("design:type", String)
85
+ ], CreateAgentDto.prototype, "transcriptionModel", void 0);
64
86
  __decorate([
65
87
  (0, swagger_1.ApiProperty)({
66
88
  description: 'System prompt applied before user messages',
@@ -3,6 +3,8 @@ export declare class UpdateAgentDto {
3
3
  unitId?: number;
4
4
  integration?: AiIntegrationDto;
5
5
  model?: string;
6
+ transcriptionIntegration?: AiIntegrationDto;
7
+ transcriptionModel?: string;
6
8
  systemPrompt?: string;
7
9
  temperature?: number;
8
10
  active?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"update-agent.dto.d.ts","sourceRoot":"","sources":["../../src/ai/update-agent.dto.ts"],"names":[],"mappings":"AAYA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE/E,qBAAa,cAAc;IAQzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAShB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAS/B,KAAK,CAAC,EAAE,MAAM,CAAC;IASf,YAAY,CAAC,EAAE,MAAM,CAAC;IAYtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAQrB,MAAM,CAAC,EAAE,OAAO,CAAC;IASjB,YAAY,CAAC,EAAE,MAAM,CAAC;IAStB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"update-agent.dto.d.ts","sourceRoot":"","sources":["../../src/ai/update-agent.dto.ts"],"names":[],"mappings":"AAYA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE/E,qBAAa,cAAc;IAQzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAShB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAS/B,KAAK,CAAC,EAAE,MAAM,CAAC;IAUf,wBAAwB,CAAC,EAAE,gBAAgB,CAAC;IAS5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAS5B,YAAY,CAAC,EAAE,MAAM,CAAC;IAYtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAQrB,MAAM,CAAC,EAAE,OAAO,CAAC;IASjB,YAAY,CAAC,EAAE,MAAM,CAAC;IAStB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
@@ -17,6 +17,8 @@ class UpdateAgentDto {
17
17
  unitId;
18
18
  integration;
19
19
  model;
20
+ transcriptionIntegration;
21
+ transcriptionModel;
20
22
  systemPrompt;
21
23
  temperature;
22
24
  active;
@@ -54,6 +56,26 @@ __decorate([
54
56
  (0, class_validator_1.IsNotEmpty)(),
55
57
  __metadata("design:type", String)
56
58
  ], UpdateAgentDto.prototype, "model", void 0);
59
+ __decorate([
60
+ (0, swagger_1.ApiPropertyOptional)({
61
+ description: 'Integration provider used specifically for audio transcription',
62
+ enum: integration_provider_dto_1.AI_INTEGRATIONS,
63
+ example: 'OPENAI',
64
+ }),
65
+ (0, class_validator_1.IsOptional)(),
66
+ (0, class_validator_1.IsEnum)(integration_provider_dto_1.AI_INTEGRATIONS),
67
+ __metadata("design:type", String)
68
+ ], UpdateAgentDto.prototype, "transcriptionIntegration", void 0);
69
+ __decorate([
70
+ (0, swagger_1.ApiPropertyOptional)({
71
+ description: 'Model name used specifically for audio transcription',
72
+ example: 'gpt-4o-mini-transcribe',
73
+ }),
74
+ (0, class_validator_1.IsOptional)(),
75
+ (0, class_validator_1.IsString)(),
76
+ (0, class_validator_1.IsNotEmpty)(),
77
+ __metadata("design:type", String)
78
+ ], UpdateAgentDto.prototype, "transcriptionModel", void 0);
57
79
  __decorate([
58
80
  (0, swagger_1.ApiPropertyOptional)({
59
81
  description: 'System prompt applied before user messages',
@@ -1,3 +1,3 @@
1
- export declare const APPOINTMENT_STATUSES: readonly ["pending", "processing", "sended", "finished"];
1
+ export declare const APPOINTMENT_STATUSES: readonly ["pending", "processing", "sended", "finished", "canceled"];
2
2
  export type AppointmentStatusDto = (typeof APPOINTMENT_STATUSES)[number];
3
3
  //# sourceMappingURL=appointment-status.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"appointment-status.dto.d.ts","sourceRoot":"","sources":["../../src/appointments/appointment-status.dto.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,0DAKvB,CAAC;AACX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"appointment-status.dto.d.ts","sourceRoot":"","sources":["../../src/appointments/appointment-status.dto.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,sEAMvB,CAAC;AACX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -6,4 +6,5 @@ exports.APPOINTMENT_STATUSES = [
6
6
  'processing',
7
7
  'sended',
8
8
  'finished',
9
+ 'canceled',
9
10
  ];
@@ -6,6 +6,9 @@ export interface AppointmentDto {
6
6
  date: string;
7
7
  checkinCompleted: boolean;
8
8
  checkoutCompleted: boolean;
9
+ exitTime?: string;
10
+ observation?: string;
11
+ cancellationReason?: string;
9
12
  status: AppointmentStatusDto;
10
13
  }
11
14
  //# sourceMappingURL=appointment.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"appointment.dto.d.ts","sourceRoot":"","sources":["../../src/appointments/appointment.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IAMX,SAAS,EAAE,MAAM,CAAC;IAKlB,MAAM,EAAE,MAAM,CAAC;IAKf,IAAI,EAAE,MAAM,CAAC;IAKb,gBAAgB,EAAE,OAAO,CAAC;IAK1B,iBAAiB,EAAE,OAAO,CAAC;IAK3B,MAAM,EAAE,oBAAoB,CAAC;CAC9B"}
1
+ {"version":3,"file":"appointment.dto.d.ts","sourceRoot":"","sources":["../../src/appointments/appointment.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IAMX,SAAS,EAAE,MAAM,CAAC;IAKlB,MAAM,EAAE,MAAM,CAAC;IAKf,IAAI,EAAE,MAAM,CAAC;IAKb,gBAAgB,EAAE,OAAO,CAAC;IAK1B,iBAAiB,EAAE,OAAO,CAAC;IAK3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAKlB,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAK5B,MAAM,EAAE,oBAAoB,CAAC;CAC9B"}
@@ -5,6 +5,9 @@ export declare class CreateAppointmentDto {
5
5
  userId: string;
6
6
  checkinCompleted?: boolean;
7
7
  checkoutCompleted?: boolean;
8
+ exitTime?: string;
9
+ observation?: string;
10
+ cancellationReason?: string;
8
11
  status?: AppointmentStatusDto;
9
12
  }
10
13
  //# sourceMappingURL=create-appointment.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-appointment.dto.d.ts","sourceRoot":"","sources":["../../src/appointments/create-appointment.dto.ts"],"names":[],"mappings":"AASA,OAAO,EAAwB,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAItF,qBAAa,oBAAoB;IAO/B,SAAS,EAAE,MAAM,CAAC;IAOlB,IAAI,EAAE,MAAM,CAAC;IAQb,MAAM,EAAE,MAAM,CAAC;IASf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAS3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAS5B,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B"}
1
+ {"version":3,"file":"create-appointment.dto.d.ts","sourceRoot":"","sources":["../../src/appointments/create-appointment.dto.ts"],"names":[],"mappings":"AAUA,OAAO,EAAwB,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAItF,qBAAa,oBAAoB;IAO/B,SAAS,EAAE,MAAM,CAAC;IAOlB,IAAI,EAAE,MAAM,CAAC;IAQb,MAAM,EAAE,MAAM,CAAC;IASf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAS3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAQ5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAQlB,WAAW,CAAC,EAAE,MAAM,CAAC;IAQrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAS5B,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B"}
@@ -19,6 +19,9 @@ class CreateAppointmentDto {
19
19
  userId;
20
20
  checkinCompleted;
21
21
  checkoutCompleted;
22
+ exitTime;
23
+ observation;
24
+ cancellationReason;
22
25
  status;
23
26
  }
24
27
  exports.CreateAppointmentDto = CreateAppointmentDto;
@@ -68,6 +71,33 @@ __decorate([
68
71
  (0, class_validator_1.IsBoolean)(),
69
72
  __metadata("design:type", Boolean)
70
73
  ], CreateAppointmentDto.prototype, "checkoutCompleted", void 0);
74
+ __decorate([
75
+ (0, swagger_1.ApiPropertyOptional)({
76
+ description: 'Horário de saída do atendimento (ISO 8601)',
77
+ example: '2026-03-15T14:45:00.000Z',
78
+ }),
79
+ (0, class_validator_1.IsOptional)(),
80
+ (0, class_validator_1.IsDateString)(),
81
+ __metadata("design:type", String)
82
+ ], CreateAppointmentDto.prototype, "exitTime", void 0);
83
+ __decorate([
84
+ (0, swagger_1.ApiPropertyOptional)({
85
+ description: 'Observação do agendamento',
86
+ example: 'Paciente solicitou prioridade no retorno.',
87
+ }),
88
+ (0, class_validator_1.IsOptional)(),
89
+ (0, class_validator_1.IsString)(),
90
+ __metadata("design:type", String)
91
+ ], CreateAppointmentDto.prototype, "observation", void 0);
92
+ __decorate([
93
+ (0, swagger_1.ApiPropertyOptional)({
94
+ description: 'Motivo do cancelamento',
95
+ example: 'Paciente não compareceu.',
96
+ }),
97
+ (0, class_validator_1.IsOptional)(),
98
+ (0, class_validator_1.IsString)(),
99
+ __metadata("design:type", String)
100
+ ], CreateAppointmentDto.prototype, "cancellationReason", void 0);
71
101
  __decorate([
72
102
  (0, swagger_1.ApiPropertyOptional)({
73
103
  description: 'Status do agendamento',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tychat-contracts",
3
- "version": "1.0.63",
3
+ "version": "1.0.65",
4
4
  "description": "DTOs compartilhados com class-validator (API e microserviços)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -40,6 +40,21 @@ export class AgentResponseDto {
40
40
  @IsString()
41
41
  model: string;
42
42
 
43
+ @ApiProperty({
44
+ description: 'Integration provider used for audio transcription',
45
+ enum: AI_INTEGRATIONS,
46
+ example: 'OPENAI',
47
+ })
48
+ @IsEnum(AI_INTEGRATIONS)
49
+ transcriptionIntegration: AiIntegrationDto;
50
+
51
+ @ApiProperty({
52
+ description: 'Model name used for audio transcription',
53
+ example: 'gpt-4o-mini-transcribe',
54
+ })
55
+ @IsString()
56
+ transcriptionModel: string;
57
+
43
58
  @ApiProperty({
44
59
  description: 'System prompt used by this agent',
45
60
  example: 'You are a helpful assistant.',
@@ -45,6 +45,26 @@ export class CreateAgentDto {
45
45
  @IsNotEmpty()
46
46
  model: string;
47
47
 
48
+ @ApiPropertyOptional({
49
+ description:
50
+ 'Integration provider used specifically for audio transcription. Defaults to "integration" when omitted.',
51
+ enum: AI_INTEGRATIONS,
52
+ example: 'GEMINI',
53
+ })
54
+ @IsOptional()
55
+ @IsEnum(AI_INTEGRATIONS)
56
+ transcriptionIntegration?: AiIntegrationDto;
57
+
58
+ @ApiPropertyOptional({
59
+ description:
60
+ 'Model name used specifically for audio transcription. Defaults to "model" when omitted.',
61
+ example: 'gemini-2.0-flash',
62
+ })
63
+ @IsOptional()
64
+ @IsString()
65
+ @IsNotEmpty()
66
+ transcriptionModel?: string;
67
+
48
68
  @ApiProperty({
49
69
  description: 'System prompt applied before user messages',
50
70
  example: 'You are an assistant for healthcare front-desk tasks.',
@@ -40,6 +40,25 @@ export class UpdateAgentDto {
40
40
  @IsNotEmpty()
41
41
  model?: string;
42
42
 
43
+ @ApiPropertyOptional({
44
+ description:
45
+ 'Integration provider used specifically for audio transcription',
46
+ enum: AI_INTEGRATIONS,
47
+ example: 'OPENAI',
48
+ })
49
+ @IsOptional()
50
+ @IsEnum(AI_INTEGRATIONS)
51
+ transcriptionIntegration?: AiIntegrationDto;
52
+
53
+ @ApiPropertyOptional({
54
+ description: 'Model name used specifically for audio transcription',
55
+ example: 'gpt-4o-mini-transcribe',
56
+ })
57
+ @IsOptional()
58
+ @IsString()
59
+ @IsNotEmpty()
60
+ transcriptionModel?: string;
61
+
43
62
  @ApiPropertyOptional({
44
63
  description: 'System prompt applied before user messages',
45
64
  example: 'You are a concise assistant for customer support.',
@@ -3,5 +3,6 @@ export const APPOINTMENT_STATUSES = [
3
3
  'processing',
4
4
  'sended',
5
5
  'finished',
6
+ 'canceled',
6
7
  ] as const;
7
8
  export type AppointmentStatusDto = (typeof APPOINTMENT_STATUSES)[number];
@@ -29,6 +29,21 @@ export interface AppointmentDto {
29
29
  */
30
30
  checkoutCompleted: boolean;
31
31
  /*
32
+ * Horário de saída do atendimento (ISO 8601)
33
+ * @example '2026-03-15T14:45:00.000Z'
34
+ */
35
+ exitTime?: string;
36
+ /*
37
+ * Observação do agendamento
38
+ * @example 'Paciente solicitou prioridade no retorno.'
39
+ */
40
+ observation?: string;
41
+ /*
42
+ * Motivo do cancelamento
43
+ * @example 'Paciente não compareceu.'
44
+ */
45
+ cancellationReason?: string;
46
+ /*
32
47
  * Status do agendamento
33
48
  * @example 'pending'
34
49
  */
@@ -5,6 +5,7 @@ import {
5
5
  IsEnum,
6
6
  IsNotEmpty,
7
7
  IsOptional,
8
+ IsString,
8
9
  IsUUID,
9
10
  } from 'class-validator';
10
11
  import { APPOINTMENT_STATUSES, AppointmentStatusDto } from './appointment-status.dto';
@@ -53,6 +54,30 @@ export class CreateAppointmentDto {
53
54
  @IsBoolean()
54
55
  checkoutCompleted?: boolean;
55
56
 
57
+ @ApiPropertyOptional({
58
+ description: 'Horário de saída do atendimento (ISO 8601)',
59
+ example: '2026-03-15T14:45:00.000Z',
60
+ })
61
+ @IsOptional()
62
+ @IsDateString()
63
+ exitTime?: string;
64
+
65
+ @ApiPropertyOptional({
66
+ description: 'Observação do agendamento',
67
+ example: 'Paciente solicitou prioridade no retorno.',
68
+ })
69
+ @IsOptional()
70
+ @IsString()
71
+ observation?: string;
72
+
73
+ @ApiPropertyOptional({
74
+ description: 'Motivo do cancelamento',
75
+ example: 'Paciente não compareceu.',
76
+ })
77
+ @IsOptional()
78
+ @IsString()
79
+ cancellationReason?: string;
80
+
56
81
  @ApiPropertyOptional({
57
82
  description: 'Status do agendamento',
58
83
  enum: APPOINTMENT_STATUSES,