tychat-contracts 1.6.76 → 1.6.79

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.
Files changed (41) hide show
  1. package/dist/conversations/followup-appointment-reprocess.dto.d.ts +7 -0
  2. package/dist/conversations/followup-appointment-reprocess.dto.d.ts.map +1 -0
  3. package/dist/conversations/followup-appointment-reprocess.dto.js +43 -0
  4. package/dist/conversations/followup-config-response.dto.d.ts +1 -0
  5. package/dist/conversations/followup-config-response.dto.d.ts.map +1 -1
  6. package/dist/conversations/followup-config-response.dto.js +9 -0
  7. package/dist/conversations/followup-log-list-query.dto.d.ts +1 -1
  8. package/dist/conversations/followup-log-list-query.dto.d.ts.map +1 -1
  9. package/dist/conversations/followup-log-list-query.dto.js +2 -0
  10. package/dist/conversations/followup-log-response.dto.d.ts +3 -0
  11. package/dist/conversations/followup-log-response.dto.d.ts.map +1 -1
  12. package/dist/conversations/followup-log-response.dto.js +21 -0
  13. package/dist/conversations/followup-log-status.dto.d.ts +4 -0
  14. package/dist/conversations/followup-log-status.dto.d.ts.map +1 -0
  15. package/dist/conversations/followup-log-status.dto.js +10 -0
  16. package/dist/conversations/index.d.ts +2 -0
  17. package/dist/conversations/index.d.ts.map +1 -1
  18. package/dist/conversations/index.js +2 -0
  19. package/dist/fiscal/enqueue-nfe.dto.d.ts +3 -0
  20. package/dist/fiscal/enqueue-nfe.dto.d.ts.map +1 -1
  21. package/dist/fiscal/enqueue-nfe.dto.js +14 -0
  22. package/dist/fiscal/fiscal-rmq-patterns.d.ts +1 -0
  23. package/dist/fiscal/fiscal-rmq-patterns.d.ts.map +1 -1
  24. package/dist/fiscal/fiscal-rmq-patterns.js +2 -1
  25. package/dist/tenants/index.d.ts +1 -0
  26. package/dist/tenants/index.d.ts.map +1 -1
  27. package/dist/tenants/index.js +1 -0
  28. package/dist/tenants/tenant-fiscal-profile.dto.d.ts +27 -0
  29. package/dist/tenants/tenant-fiscal-profile.dto.d.ts.map +1 -0
  30. package/dist/tenants/tenant-fiscal-profile.dto.js +128 -0
  31. package/package.json +1 -1
  32. package/src/conversations/followup-appointment-reprocess.dto.ts +28 -0
  33. package/src/conversations/followup-config-response.dto.ts +8 -0
  34. package/src/conversations/followup-log-list-query.dto.ts +2 -0
  35. package/src/conversations/followup-log-response.dto.ts +17 -0
  36. package/src/conversations/followup-log-status.dto.ts +9 -0
  37. package/src/conversations/index.ts +2 -0
  38. package/src/fiscal/enqueue-nfe.dto.ts +22 -1
  39. package/src/fiscal/fiscal-rmq-patterns.ts +1 -0
  40. package/src/tenants/index.ts +1 -0
  41. package/src/tenants/tenant-fiscal-profile.dto.ts +85 -0
@@ -0,0 +1,7 @@
1
+ import { FollowupTypeDto } from './followup-type.dto';
2
+ /** Payload to manually reprocess a failed appointment follow-up. */
3
+ export declare class FollowupAppointmentReprocessDto {
4
+ appointmentId: string;
5
+ followupType: FollowupTypeDto;
6
+ }
7
+ //# sourceMappingURL=followup-appointment-reprocess.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"followup-appointment-reprocess.dto.d.ts","sourceRoot":"","sources":["../../src/conversations/followup-appointment-reprocess.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAYtD,oEAAoE;AACpE,qBAAa,+BAA+B;IAI1C,aAAa,EAAE,MAAM,CAAC;IAOtB,YAAY,EAAE,eAAe,CAAC;CAC/B"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.FollowupAppointmentReprocessDto = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ const APPOINTMENT_FOLLOWUP_TYPES = [
16
+ 'appointment_confirmation',
17
+ 'satisfaction_booking',
18
+ 'satisfaction_finished',
19
+ 'no_show_reschedule',
20
+ 'checkin_not_completed',
21
+ 'wellness_check',
22
+ 'return_suggestion',
23
+ ];
24
+ /** Payload to manually reprocess a failed appointment follow-up. */
25
+ class FollowupAppointmentReprocessDto {
26
+ appointmentId;
27
+ followupType;
28
+ }
29
+ exports.FollowupAppointmentReprocessDto = FollowupAppointmentReprocessDto;
30
+ __decorate([
31
+ (0, swagger_1.ApiProperty)({ format: 'uuid', description: 'Appointment UUID' }),
32
+ (0, class_validator_1.IsUUID)('4'),
33
+ (0, class_validator_1.IsNotEmpty)(),
34
+ __metadata("design:type", String)
35
+ ], FollowupAppointmentReprocessDto.prototype, "appointmentId", void 0);
36
+ __decorate([
37
+ (0, swagger_1.ApiProperty)({
38
+ enum: APPOINTMENT_FOLLOWUP_TYPES,
39
+ example: 'checkin_not_completed',
40
+ }),
41
+ (0, class_validator_1.IsIn)([...APPOINTMENT_FOLLOWUP_TYPES]),
42
+ __metadata("design:type", String)
43
+ ], FollowupAppointmentReprocessDto.prototype, "followupType", void 0);
@@ -23,6 +23,7 @@ export declare class FollowupConfigResponseDto {
23
23
  noShowEnabled: boolean;
24
24
  checkinNotCompletedDelayMinutes: number;
25
25
  checkinNotCompletedEnabled: boolean;
26
+ checkinNotCompletedRespectClinicHours: boolean;
26
27
  wellnessCheckDelayMinutes: number;
27
28
  wellnessCheckEnabled: boolean;
28
29
  returnSuggestionDelayMinutes: number;
@@ -1 +1 @@
1
- {"version":3,"file":"followup-config-response.dto.d.ts","sourceRoot":"","sources":["../../src/conversations/followup-config-response.dto.ts"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,qBAAa,yBAAyB;IAIpC,EAAE,EAAE,MAAM,CAAC;IAMX,MAAM,CAAC,EAAE,MAAM,CAAC;IAYhB,2BAA2B,EAAE,MAAM,CAAC;IAKpC,qBAAqB,EAAE,MAAM,CAAC;IAK9B,qBAAqB,EAAE,MAAM,CAAC;IAK9B,qBAAqB,EAAE,MAAM,CAAC;IAK9B,qBAAqB,EAAE,MAAM,CAAC;IAK9B,qBAAqB,EAAE,MAAM,CAAC;IAS9B,yBAAyB,EAAE,MAAM,CAAC;IAIlC,mBAAmB,EAAE,OAAO,CAAC;IAS7B,+BAA+B,EAAE,MAAM,CAAC;IAIxC,0BAA0B,EAAE,OAAO,CAAC;IAKpC,gCAAgC,EAAE,MAAM,CAAC;IAIzC,2BAA2B,EAAE,OAAO,CAAC;IASrC,kBAAkB,EAAE,MAAM,CAAC;IAI3B,aAAa,EAAE,OAAO,CAAC;IAYvB,+BAA+B,EAAE,MAAM,CAAC;IAIxC,0BAA0B,EAAE,OAAO,CAAC;IASpC,yBAAyB,EAAE,MAAM,CAAC;IAIlC,oBAAoB,EAAE,OAAO,CAAC;IAS9B,4BAA4B,EAAE,MAAM,CAAC;IAIrC,uBAAuB,EAAE,OAAO,CAAC;IAYjC,+BAA+B,CAAC,EAAE,MAAM,CAAC;IAQzC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAQrC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IAQtC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAQlC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAQrC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAQ/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAQlC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAQ7B,OAAO,EAAE,OAAO,CAAC;IASjB,mCAAmC,EAAE,MAAM,CAAC;IAS5C,oCAAoC,EAAE,MAAM,CAAC;IAS7C,qCAAqC,EAAE,MAAM,CAAC;IAS9C,wCAAwC,EAAE,MAAM,CAAC;IASjD,8BAA8B,EAAE,MAAM,CAAC;IASvC,+BAA+B,EAAE,MAAM,CAAC;IASxC,gCAAgC,EAAE,MAAM,CAAC;IASzC,6BAA6B,EAAE,MAAM,CAAC;IAUtC,+BAA+B,EAAE,MAAM,CAAC;CACzC"}
1
+ {"version":3,"file":"followup-config-response.dto.d.ts","sourceRoot":"","sources":["../../src/conversations/followup-config-response.dto.ts"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,qBAAa,yBAAyB;IAIpC,EAAE,EAAE,MAAM,CAAC;IAMX,MAAM,CAAC,EAAE,MAAM,CAAC;IAYhB,2BAA2B,EAAE,MAAM,CAAC;IAKpC,qBAAqB,EAAE,MAAM,CAAC;IAK9B,qBAAqB,EAAE,MAAM,CAAC;IAK9B,qBAAqB,EAAE,MAAM,CAAC;IAK9B,qBAAqB,EAAE,MAAM,CAAC;IAK9B,qBAAqB,EAAE,MAAM,CAAC;IAS9B,yBAAyB,EAAE,MAAM,CAAC;IAIlC,mBAAmB,EAAE,OAAO,CAAC;IAS7B,+BAA+B,EAAE,MAAM,CAAC;IAIxC,0BAA0B,EAAE,OAAO,CAAC;IAKpC,gCAAgC,EAAE,MAAM,CAAC;IAIzC,2BAA2B,EAAE,OAAO,CAAC;IASrC,kBAAkB,EAAE,MAAM,CAAC;IAI3B,aAAa,EAAE,OAAO,CAAC;IAYvB,+BAA+B,EAAE,MAAM,CAAC;IAIxC,0BAA0B,EAAE,OAAO,CAAC;IAQpC,qCAAqC,EAAE,OAAO,CAAC;IAS/C,yBAAyB,EAAE,MAAM,CAAC;IAIlC,oBAAoB,EAAE,OAAO,CAAC;IAS9B,4BAA4B,EAAE,MAAM,CAAC;IAIrC,uBAAuB,EAAE,OAAO,CAAC;IAYjC,+BAA+B,CAAC,EAAE,MAAM,CAAC;IAQzC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAQrC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IAQtC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAQlC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAQrC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAQ/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAQlC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAQ7B,OAAO,EAAE,OAAO,CAAC;IASjB,mCAAmC,EAAE,MAAM,CAAC;IAS5C,oCAAoC,EAAE,MAAM,CAAC;IAS7C,qCAAqC,EAAE,MAAM,CAAC;IAS9C,wCAAwC,EAAE,MAAM,CAAC;IASjD,8BAA8B,EAAE,MAAM,CAAC;IASvC,+BAA+B,EAAE,MAAM,CAAC;IASxC,gCAAgC,EAAE,MAAM,CAAC;IASzC,6BAA6B,EAAE,MAAM,CAAC;IAUtC,+BAA+B,EAAE,MAAM,CAAC;CACzC"}
@@ -52,6 +52,7 @@ class FollowupConfigResponseDto {
52
52
  // ---------------------------------------------------------------------------
53
53
  checkinNotCompletedDelayMinutes;
54
54
  checkinNotCompletedEnabled;
55
+ checkinNotCompletedRespectClinicHours;
55
56
  // ---------------------------------------------------------------------------
56
57
  // Wellness check settings
57
58
  // ---------------------------------------------------------------------------
@@ -198,6 +199,14 @@ __decorate([
198
199
  (0, class_validator_1.IsBoolean)(),
199
200
  __metadata("design:type", Boolean)
200
201
  ], FollowupConfigResponseDto.prototype, "checkinNotCompletedEnabled", void 0);
202
+ __decorate([
203
+ (0, swagger_1.ApiProperty)({
204
+ description: 'When true, defer check-in-not-completed follow-up until clinic opening hours (if opening_hours configured)',
205
+ default: true,
206
+ }),
207
+ (0, class_validator_1.IsBoolean)(),
208
+ __metadata("design:type", Boolean)
209
+ ], FollowupConfigResponseDto.prototype, "checkinNotCompletedRespectClinicHours", void 0);
201
210
  __decorate([
202
211
  (0, swagger_1.ApiProperty)({ description: 'Minutes after appointment finishes to send the wellness check', example: 1440 }),
203
212
  (0, class_validator_1.IsInt)(),
@@ -1,7 +1,7 @@
1
1
  import type { ParsedFilterDto } from '../filters/parsed-filter.dto';
2
2
  import { ConversationIntentionDto } from './conversation-intention.dto';
3
3
  import { FollowupTypeDto } from './followup-type.dto';
4
- export declare const FOLLOWUP_LOG_LIST_FILTER_KEYS: readonly ["id", "sessionUuid", "patientId", "attempt", "message", "intention", "followupType", "appointmentId", "closedByAttendantId", "sentAt"];
4
+ export declare const FOLLOWUP_LOG_LIST_FILTER_KEYS: readonly ["id", "sessionUuid", "patientId", "attempt", "message", "intention", "followupType", "appointmentId", "closedByAttendantId", "sentAt", "status", "failureReason"];
5
5
  export type FollowupLogListFilterKeyDto = (typeof FOLLOWUP_LOG_LIST_FILTER_KEYS)[number];
6
6
  /**
7
7
  * Query parameters for listing follow-up logs (HTTP query + Kafka payload).
@@ -1 +1 @@
1
- {"version":3,"file":"followup-log-list-query.dto.d.ts","sourceRoot":"","sources":["../../src/conversations/followup-log-list-query.dto.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAEL,wBAAwB,EACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAkB,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtE,eAAO,MAAM,6BAA6B,kJAWhC,CAAC;AACX,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzF;;GAEG;AACH,qBAAa,uBAAuB;IAMlC,IAAI,CAAC,EAAE,MAAM,CAAC;IAQd,KAAK,CAAC,EAAE,MAAM,CAAC;IAKf,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAQrB,SAAS,CAAC,EAAE,wBAAwB,CAAC;IAQrC,YAAY,CAAC,EAAE,eAAe,CAAC;IAW/B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;CAC7B"}
1
+ {"version":3,"file":"followup-log-list-query.dto.d.ts","sourceRoot":"","sources":["../../src/conversations/followup-log-list-query.dto.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAEL,wBAAwB,EACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAkB,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtE,eAAO,MAAM,6BAA6B,6KAahC,CAAC;AACX,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzF;;GAEG;AACH,qBAAa,uBAAuB;IAMlC,IAAI,CAAC,EAAE,MAAM,CAAC;IAQd,KAAK,CAAC,EAAE,MAAM,CAAC;IAKf,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAQrB,SAAS,CAAC,EAAE,wBAAwB,CAAC;IAQrC,YAAY,CAAC,EAAE,eAAe,CAAC;IAW/B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;CAC7B"}
@@ -26,6 +26,8 @@ exports.FOLLOWUP_LOG_LIST_FILTER_KEYS = [
26
26
  'appointmentId',
27
27
  'closedByAttendantId',
28
28
  'sentAt',
29
+ 'status',
30
+ 'failureReason',
29
31
  ];
30
32
  /**
31
33
  * Query parameters for listing follow-up logs (HTTP query + Kafka payload).
@@ -1,4 +1,5 @@
1
1
  import { FollowupTypeDto } from './followup-type.dto';
2
+ import { FollowupLogStatusDto } from './followup-log-status.dto';
2
3
  /**
3
4
  * Represents a follow-up attempt log entry.
4
5
  * Tracks each follow-up message sent to a patient within a session or appointment.
@@ -14,5 +15,7 @@ export declare class FollowupLogResponseDto {
14
15
  appointmentId?: string | null;
15
16
  closedByAttendantId?: string | null;
16
17
  sentAt: string;
18
+ status: FollowupLogStatusDto;
19
+ failureReason?: string | null;
17
20
  }
18
21
  //# sourceMappingURL=followup-log-response.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"followup-log-response.dto.d.ts","sourceRoot":"","sources":["../../src/conversations/followup-log-response.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtE;;;GAGG;AACH,qBAAa,sBAAsB;IAIjC,EAAE,EAAE,MAAM,CAAC;IAKX,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAK5B,SAAS,EAAE,MAAM,CAAC;IAMlB,OAAO,EAAE,MAAM,CAAC;IAKhB,OAAO,EAAE,MAAM,CAAC;IAKhB,SAAS,CAAC,EAAE,MAAM,CAAC;IAQnB,YAAY,EAAE,eAAe,CAAC;IAK9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAO9B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAKpC,MAAM,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"followup-log-response.dto.d.ts","sourceRoot":"","sources":["../../src/conversations/followup-log-response.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAyB,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAExF;;;GAGG;AACH,qBAAa,sBAAsB;IAIjC,EAAE,EAAE,MAAM,CAAC;IAKX,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAK5B,SAAS,EAAE,MAAM,CAAC;IAMlB,OAAO,EAAE,MAAM,CAAC;IAKhB,OAAO,EAAE,MAAM,CAAC;IAKhB,SAAS,CAAC,EAAE,MAAM,CAAC;IAQnB,YAAY,EAAE,eAAe,CAAC;IAK9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAO9B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAKpC,MAAM,EAAE,MAAM,CAAC;IAQf,MAAM,EAAE,oBAAoB,CAAC;IAQ7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B"}
@@ -13,6 +13,7 @@ exports.FollowupLogResponseDto = void 0;
13
13
  const swagger_1 = require("@nestjs/swagger");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const followup_type_dto_1 = require("./followup-type.dto");
16
+ const followup_log_status_dto_1 = require("./followup-log-status.dto");
16
17
  /**
17
18
  * Represents a follow-up attempt log entry.
18
19
  * Tracks each follow-up message sent to a patient within a session or appointment.
@@ -28,6 +29,8 @@ class FollowupLogResponseDto {
28
29
  appointmentId;
29
30
  closedByAttendantId;
30
31
  sentAt;
32
+ status;
33
+ failureReason;
31
34
  }
32
35
  exports.FollowupLogResponseDto = FollowupLogResponseDto;
33
36
  __decorate([
@@ -96,3 +99,21 @@ __decorate([
96
99
  (0, class_validator_1.IsNotEmpty)(),
97
100
  __metadata("design:type", String)
98
101
  ], FollowupLogResponseDto.prototype, "sentAt", void 0);
102
+ __decorate([
103
+ (0, swagger_1.ApiProperty)({
104
+ description: 'Delivery outcome of the follow-up attempt',
105
+ enum: followup_log_status_dto_1.FOLLOWUP_LOG_STATUSES,
106
+ example: 'sent',
107
+ }),
108
+ (0, class_validator_1.IsIn)([...followup_log_status_dto_1.FOLLOWUP_LOG_STATUSES]),
109
+ __metadata("design:type", String)
110
+ ], FollowupLogResponseDto.prototype, "status", void 0);
111
+ __decorate([
112
+ (0, swagger_1.ApiPropertyOptional)({
113
+ description: 'Reason when status is failed, skipped, or cancelled',
114
+ example: 'template_send_failed',
115
+ }),
116
+ (0, class_validator_1.IsOptional)(),
117
+ (0, class_validator_1.IsString)(),
118
+ __metadata("design:type", Object)
119
+ ], FollowupLogResponseDto.prototype, "failureReason", void 0);
@@ -0,0 +1,4 @@
1
+ /** Status of a follow-up log entry (delivery outcome). */
2
+ export declare const FOLLOWUP_LOG_STATUSES: readonly ["sent", "failed", "skipped", "cancelled"];
3
+ export type FollowupLogStatusDto = (typeof FOLLOWUP_LOG_STATUSES)[number];
4
+ //# sourceMappingURL=followup-log-status.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"followup-log-status.dto.d.ts","sourceRoot":"","sources":["../../src/conversations/followup-log-status.dto.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,qDAKxB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FOLLOWUP_LOG_STATUSES = void 0;
4
+ /** Status of a follow-up log entry (delivery outcome). */
5
+ exports.FOLLOWUP_LOG_STATUSES = [
6
+ 'sent',
7
+ 'failed',
8
+ 'skipped',
9
+ 'cancelled',
10
+ ];
@@ -9,10 +9,12 @@ export * from './conversation-session-response.dto';
9
9
  export * from './create-conversation.dto';
10
10
  export * from './conversation-response.dto';
11
11
  export * from './followup-type.dto';
12
+ export * from './followup-log-status.dto';
12
13
  export * from './followup-config-response.dto';
13
14
  export * from './followup-log-response.dto';
14
15
  export * from './followup-log-list-query.dto';
15
16
  export * from './followup-log-list-response.dto';
17
+ export * from './followup-appointment-reprocess.dto';
16
18
  export * from './satisfaction-response.dto';
17
19
  export * from './followup-events.dto';
18
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversations/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversations/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC"}
@@ -25,9 +25,11 @@ __exportStar(require("./conversation-session-response.dto"), exports);
25
25
  __exportStar(require("./create-conversation.dto"), exports);
26
26
  __exportStar(require("./conversation-response.dto"), exports);
27
27
  __exportStar(require("./followup-type.dto"), exports);
28
+ __exportStar(require("./followup-log-status.dto"), exports);
28
29
  __exportStar(require("./followup-config-response.dto"), exports);
29
30
  __exportStar(require("./followup-log-response.dto"), exports);
30
31
  __exportStar(require("./followup-log-list-query.dto"), exports);
31
32
  __exportStar(require("./followup-log-list-response.dto"), exports);
33
+ __exportStar(require("./followup-appointment-reprocess.dto"), exports);
32
34
  __exportStar(require("./satisfaction-response.dto"), exports);
33
35
  __exportStar(require("./followup-events.dto"), exports);
@@ -7,11 +7,13 @@ export declare class EnqueueNfeDto {
7
7
  companyCpfCnpj: string;
8
8
  payload: Record<string, unknown>;
9
9
  referenceId?: string;
10
+ patientId?: string;
10
11
  }
11
12
  export declare class ListFiscalDocumentsQueryDto {
12
13
  documentType?: FiscalDocumentType;
13
14
  status?: FiscalDocumentStatusDto;
14
15
  referenceId?: string;
16
+ patientId?: string;
15
17
  acbrId?: string;
16
18
  createdFrom?: string;
17
19
  createdTo?: string;
@@ -23,6 +25,7 @@ export type FiscalDocumentListItemDto = {
23
25
  documentType: FiscalDocumentType;
24
26
  companyCpfCnpj: string;
25
27
  referenceId: string | null;
28
+ patientId: string | null;
26
29
  acbrId: string | null;
27
30
  status: FiscalDocumentStatusDto;
28
31
  lastError: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"enqueue-nfe.dto.d.ts","sourceRoot":"","sources":["../../src/fiscal/enqueue-nfe.dto.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qBAAqB,kCAAmC,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE,eAAO,MAAM,wBAAwB,0IAU3B,CAAC;AACX,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhF,qBAAa,aAAa;IAIxB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAIlC,cAAc,EAAE,MAAM,CAAC;IAGvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,2BAA2B;IAItC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAKlC,MAAM,CAAC,EAAE,uBAAuB,CAAC;IAKjC,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAKhB,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,SAAS,CAAC,EAAE,MAAM,CAAC;IAMnB,IAAI,CAAC,EAAE,MAAM,CAAC;IAOd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,kBAAkB,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,uBAAuB,CAAC;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,KAAK,EAAE,yBAAyB,EAAE,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,0BAA0B;IAIrC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
1
+ {"version":3,"file":"enqueue-nfe.dto.d.ts","sourceRoot":"","sources":["../../src/fiscal/enqueue-nfe.dto.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,qBAAqB,kCAAmC,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE,eAAO,MAAM,wBAAwB,0IAU3B,CAAC;AACX,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhF,qBAAa,aAAa;IAIxB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAIlC,cAAc,EAAE,MAAM,CAAC;IAGvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIjC,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,2BAA2B;IAItC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAKlC,MAAM,CAAC,EAAE,uBAAuB,CAAC;IAKjC,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAKhB,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,SAAS,CAAC,EAAE,MAAM,CAAC;IAMnB,IAAI,CAAC,EAAE,MAAM,CAAC;IAOd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,kBAAkB,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,uBAAuB,CAAC;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,KAAK,EAAE,yBAAyB,EAAE,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,0BAA0B;IAIrC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -29,6 +29,7 @@ class EnqueueNfeDto {
29
29
  companyCpfCnpj;
30
30
  payload;
31
31
  referenceId;
32
+ patientId;
32
33
  }
33
34
  exports.EnqueueNfeDto = EnqueueNfeDto;
34
35
  __decorate([
@@ -51,10 +52,17 @@ __decorate([
51
52
  (0, class_validator_1.IsOptional)(),
52
53
  __metadata("design:type", String)
53
54
  ], EnqueueNfeDto.prototype, "referenceId", void 0);
55
+ __decorate([
56
+ (0, swagger_1.ApiPropertyOptional)({ description: 'Paciente vinculado (UUID)' }),
57
+ (0, class_validator_1.IsOptional)(),
58
+ (0, class_validator_1.IsUUID)(),
59
+ __metadata("design:type", String)
60
+ ], EnqueueNfeDto.prototype, "patientId", void 0);
54
61
  class ListFiscalDocumentsQueryDto {
55
62
  documentType;
56
63
  status;
57
64
  referenceId;
65
+ patientId;
58
66
  acbrId;
59
67
  createdFrom;
60
68
  createdTo;
@@ -80,6 +88,12 @@ __decorate([
80
88
  (0, class_validator_1.IsString)(),
81
89
  __metadata("design:type", String)
82
90
  ], ListFiscalDocumentsQueryDto.prototype, "referenceId", void 0);
91
+ __decorate([
92
+ (0, swagger_1.ApiPropertyOptional)({ description: 'Busca por paciente (UUID)' }),
93
+ (0, class_validator_1.IsOptional)(),
94
+ (0, class_validator_1.IsUUID)(),
95
+ __metadata("design:type", String)
96
+ ], ListFiscalDocumentsQueryDto.prototype, "patientId", void 0);
83
97
  __decorate([
84
98
  (0, swagger_1.ApiPropertyOptional)({ description: 'Busca por ACBR ID (parcial ou completo)' }),
85
99
  (0, class_validator_1.IsOptional)(),
@@ -11,6 +11,7 @@ export declare const FISCAL_COMPANIES_NFSE_CONFIG_GET = "fiscal.companies.nfse_c
11
11
  export declare const FISCAL_COMPANIES_NFSE_CONFIG_PUT = "fiscal.companies.nfse_config.put";
12
12
  export declare const FISCAL_COMPANIES_SETTINGS_GET = "fiscal.companies.settings.get";
13
13
  export declare const FISCAL_COMPANIES_SETTINGS_PUT = "fiscal.companies.settings.put";
14
+ export declare const FISCAL_CEP_GET = "fiscal.cep.get";
14
15
  export declare const FISCAL_DOCUMENTS_ENQUEUE = "fiscal.documents.enqueue";
15
16
  export declare const FISCAL_DOCUMENTS_LIST = "fiscal.documents.list";
16
17
  export declare const FISCAL_DOCUMENTS_GET = "fiscal.documents.get";
@@ -1 +1 @@
1
- {"version":3,"file":"fiscal-rmq-patterns.d.ts","sourceRoot":"","sources":["../../src/fiscal/fiscal-rmq-patterns.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AACjE,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AACrE,eAAO,MAAM,mCAAmC,wCACT,CAAC;AACxC,eAAO,MAAM,gCAAgC,qCACT,CAAC;AACrC,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AACrE,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AACrE,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,gCAAgC,qCACT,CAAC;AACrC,eAAO,MAAM,gCAAgC,qCACT,CAAC;AACrC,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAE7E,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AACjE,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AACvE,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,0BAA0B,+BAA+B,CAAC"}
1
+ {"version":3,"file":"fiscal-rmq-patterns.d.ts","sourceRoot":"","sources":["../../src/fiscal/fiscal-rmq-patterns.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AACjE,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AACrE,eAAO,MAAM,mCAAmC,wCACT,CAAC;AACxC,eAAO,MAAM,gCAAgC,qCACT,CAAC;AACrC,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AACrE,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AACrE,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,gCAAgC,qCACT,CAAC;AACrC,eAAO,MAAM,gCAAgC,qCACT,CAAC;AACrC,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AACjE,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AACvE,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,0BAA0B,+BAA+B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FISCAL_NFSE_DPS_LOTES_EMIT = exports.FISCAL_NFSE_DPS_EMIT = exports.FISCAL_NFSE_LOTES_GET = exports.FISCAL_NFSE_LOTES_EMIT = exports.FISCAL_NFSE_LOTES_LIST = exports.FISCAL_NFSE_CANCELAMENTO_XML = exports.FISCAL_NFSE_CANCELAMENTO_GET = exports.FISCAL_NFSE_XML_DPS = exports.FISCAL_NFSE_XML = exports.FISCAL_NFSE_PDF = exports.FISCAL_NFSE_CANCEL = exports.FISCAL_NFSE_SYNC = exports.FISCAL_NFSE_GET = exports.FISCAL_NFSE_EMIT = exports.FISCAL_NFSE_LIST = exports.FISCAL_NFSE_CIDADE_METADADOS = exports.FISCAL_NFSE_CIDADES = exports.FISCAL_QUOTA_GET = exports.FISCAL_DOCUMENTS_XML = exports.FISCAL_DOCUMENTS_PDF = exports.FISCAL_DOCUMENTS_SYNC = exports.FISCAL_DOCUMENTS_INUTILIZE = exports.FISCAL_DOCUMENTS_CANCEL = exports.FISCAL_DOCUMENTS_GET = exports.FISCAL_DOCUMENTS_LIST = exports.FISCAL_DOCUMENTS_ENQUEUE = exports.FISCAL_COMPANIES_SETTINGS_PUT = exports.FISCAL_COMPANIES_SETTINGS_GET = exports.FISCAL_COMPANIES_NFSE_CONFIG_PUT = exports.FISCAL_COMPANIES_NFSE_CONFIG_GET = exports.FISCAL_COMPANIES_LOGO_DELETE = exports.FISCAL_COMPANIES_LOGO_GET = exports.FISCAL_COMPANIES_LOGO_PUT = exports.FISCAL_COMPANIES_CERTIFICATE_GET = exports.FISCAL_COMPANIES_CERTIFICATE_UPLOAD = exports.FISCAL_COMPANIES_ACBR_GET = exports.FISCAL_COMPANIES_CREATE = exports.FISCAL_COMPANIES_GET = exports.FISCAL_COMPANIES_LIST = void 0;
3
+ exports.FISCAL_NFSE_DPS_LOTES_EMIT = exports.FISCAL_NFSE_DPS_EMIT = exports.FISCAL_NFSE_LOTES_GET = exports.FISCAL_NFSE_LOTES_EMIT = exports.FISCAL_NFSE_LOTES_LIST = exports.FISCAL_NFSE_CANCELAMENTO_XML = exports.FISCAL_NFSE_CANCELAMENTO_GET = exports.FISCAL_NFSE_XML_DPS = exports.FISCAL_NFSE_XML = exports.FISCAL_NFSE_PDF = exports.FISCAL_NFSE_CANCEL = exports.FISCAL_NFSE_SYNC = exports.FISCAL_NFSE_GET = exports.FISCAL_NFSE_EMIT = exports.FISCAL_NFSE_LIST = exports.FISCAL_NFSE_CIDADE_METADADOS = exports.FISCAL_NFSE_CIDADES = exports.FISCAL_QUOTA_GET = exports.FISCAL_DOCUMENTS_XML = exports.FISCAL_DOCUMENTS_PDF = exports.FISCAL_DOCUMENTS_SYNC = exports.FISCAL_DOCUMENTS_INUTILIZE = exports.FISCAL_DOCUMENTS_CANCEL = exports.FISCAL_DOCUMENTS_GET = exports.FISCAL_DOCUMENTS_LIST = exports.FISCAL_DOCUMENTS_ENQUEUE = exports.FISCAL_CEP_GET = exports.FISCAL_COMPANIES_SETTINGS_PUT = exports.FISCAL_COMPANIES_SETTINGS_GET = exports.FISCAL_COMPANIES_NFSE_CONFIG_PUT = exports.FISCAL_COMPANIES_NFSE_CONFIG_GET = exports.FISCAL_COMPANIES_LOGO_DELETE = exports.FISCAL_COMPANIES_LOGO_GET = exports.FISCAL_COMPANIES_LOGO_PUT = exports.FISCAL_COMPANIES_CERTIFICATE_GET = exports.FISCAL_COMPANIES_CERTIFICATE_UPLOAD = exports.FISCAL_COMPANIES_ACBR_GET = exports.FISCAL_COMPANIES_CREATE = exports.FISCAL_COMPANIES_GET = exports.FISCAL_COMPANIES_LIST = void 0;
4
4
  exports.FISCAL_COMPANIES_LIST = 'fiscal.companies.list';
5
5
  exports.FISCAL_COMPANIES_GET = 'fiscal.companies.get';
6
6
  exports.FISCAL_COMPANIES_CREATE = 'fiscal.companies.create';
@@ -14,6 +14,7 @@ exports.FISCAL_COMPANIES_NFSE_CONFIG_GET = 'fiscal.companies.nfse_config.get';
14
14
  exports.FISCAL_COMPANIES_NFSE_CONFIG_PUT = 'fiscal.companies.nfse_config.put';
15
15
  exports.FISCAL_COMPANIES_SETTINGS_GET = 'fiscal.companies.settings.get';
16
16
  exports.FISCAL_COMPANIES_SETTINGS_PUT = 'fiscal.companies.settings.put';
17
+ exports.FISCAL_CEP_GET = 'fiscal.cep.get';
17
18
  exports.FISCAL_DOCUMENTS_ENQUEUE = 'fiscal.documents.enqueue';
18
19
  exports.FISCAL_DOCUMENTS_LIST = 'fiscal.documents.list';
19
20
  exports.FISCAL_DOCUMENTS_GET = 'fiscal.documents.get';
@@ -9,4 +9,5 @@ export * from './consume-tenant-ai-tokens.dto';
9
9
  export * from './recharge-tenant-ai-tokens.dto';
10
10
  export * from './renew-tenant-ai-tokens.dto';
11
11
  export * from './tenant-storage-usage-apply-delta.dto';
12
+ export * from './tenant-fiscal-profile.dto';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tenants/index.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tenants/index.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wCAAwC,CAAC;AACvD,cAAc,6BAA6B,CAAC"}
@@ -25,3 +25,4 @@ __exportStar(require("./consume-tenant-ai-tokens.dto"), exports);
25
25
  __exportStar(require("./recharge-tenant-ai-tokens.dto"), exports);
26
26
  __exportStar(require("./renew-tenant-ai-tokens.dto"), exports);
27
27
  __exportStar(require("./tenant-storage-usage-apply-delta.dto"), exports);
28
+ __exportStar(require("./tenant-fiscal-profile.dto"), exports);
@@ -0,0 +1,27 @@
1
+ export declare const TENANT_FISCAL_PROFILE_GET = "tenant.fiscalProfile.get";
2
+ export declare const TENANT_FISCAL_PROFILE_UPSERT = "tenant.fiscalProfile.upsert";
3
+ export declare class TenantFiscalProfileCompanyDto {
4
+ cpfCnpj?: string;
5
+ razaoSocial?: string;
6
+ nomeFantasia?: string;
7
+ email?: string;
8
+ telefone?: string;
9
+ }
10
+ export declare class TenantFiscalProfileDto {
11
+ company?: TenantFiscalProfileCompanyDto;
12
+ acbrCompanyPayload?: Record<string, unknown>;
13
+ fiscalDefaults?: Record<string, unknown>;
14
+ }
15
+ export declare class GetTenantFiscalProfileDto {
16
+ tenantSlug: string;
17
+ }
18
+ export declare class UpsertTenantFiscalProfileDto {
19
+ tenantSlug: string;
20
+ profile?: TenantFiscalProfileDto;
21
+ }
22
+ export declare class TenantFiscalProfileResponseDto {
23
+ tenantId?: string;
24
+ tenantSlug?: string;
25
+ profile?: TenantFiscalProfileDto;
26
+ }
27
+ //# sourceMappingURL=tenant-fiscal-profile.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant-fiscal-profile.dto.d.ts","sourceRoot":"","sources":["../../src/tenants/tenant-fiscal-profile.dto.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,yBAAyB,6BAA6B,CAAC;AACpE,eAAO,MAAM,4BAA4B,gCAAgC,CAAC;AAE1E,qBAAa,6BAA6B;IAIxC,OAAO,CAAC,EAAE,MAAM,CAAC;IAKjB,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,KAAK,CAAC,EAAE,MAAM,CAAC;IAKf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,sBAAsB;IAKjC,OAAO,CAAC,EAAE,6BAA6B,CAAC;IAKxC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAK7C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAED,qBAAa,yBAAyB;IAEpC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,4BAA4B;IAEvC,UAAU,EAAE,MAAM,CAAC;IAKnB,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC;AAED,qBAAa,8BAA8B;IAIzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAKlB,UAAU,CAAC,EAAE,MAAM,CAAC;IAMpB,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC"}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TenantFiscalProfileResponseDto = exports.UpsertTenantFiscalProfileDto = exports.GetTenantFiscalProfileDto = exports.TenantFiscalProfileDto = exports.TenantFiscalProfileCompanyDto = exports.TENANT_FISCAL_PROFILE_UPSERT = exports.TENANT_FISCAL_PROFILE_GET = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ const class_transformer_1 = require("class-transformer");
16
+ exports.TENANT_FISCAL_PROFILE_GET = 'tenant.fiscalProfile.get';
17
+ exports.TENANT_FISCAL_PROFILE_UPSERT = 'tenant.fiscalProfile.upsert';
18
+ class TenantFiscalProfileCompanyDto {
19
+ cpfCnpj;
20
+ razaoSocial;
21
+ nomeFantasia;
22
+ email;
23
+ telefone;
24
+ }
25
+ exports.TenantFiscalProfileCompanyDto = TenantFiscalProfileCompanyDto;
26
+ __decorate([
27
+ (0, swagger_1.ApiPropertyOptional)({ description: 'CPF/CNPJ (somente números)' }),
28
+ (0, class_validator_1.IsOptional)(),
29
+ (0, class_validator_1.IsString)(),
30
+ __metadata("design:type", String)
31
+ ], TenantFiscalProfileCompanyDto.prototype, "cpfCnpj", void 0);
32
+ __decorate([
33
+ (0, swagger_1.ApiPropertyOptional)({ description: 'Razão social' }),
34
+ (0, class_validator_1.IsOptional)(),
35
+ (0, class_validator_1.IsString)(),
36
+ __metadata("design:type", String)
37
+ ], TenantFiscalProfileCompanyDto.prototype, "razaoSocial", void 0);
38
+ __decorate([
39
+ (0, swagger_1.ApiPropertyOptional)({ description: 'Nome fantasia' }),
40
+ (0, class_validator_1.IsOptional)(),
41
+ (0, class_validator_1.IsString)(),
42
+ __metadata("design:type", String)
43
+ ], TenantFiscalProfileCompanyDto.prototype, "nomeFantasia", void 0);
44
+ __decorate([
45
+ (0, swagger_1.ApiPropertyOptional)({ description: 'E-mail' }),
46
+ (0, class_validator_1.IsOptional)(),
47
+ (0, class_validator_1.IsString)(),
48
+ __metadata("design:type", String)
49
+ ], TenantFiscalProfileCompanyDto.prototype, "email", void 0);
50
+ __decorate([
51
+ (0, swagger_1.ApiPropertyOptional)({ description: 'Telefone' }),
52
+ (0, class_validator_1.IsOptional)(),
53
+ (0, class_validator_1.IsString)(),
54
+ __metadata("design:type", String)
55
+ ], TenantFiscalProfileCompanyDto.prototype, "telefone", void 0);
56
+ class TenantFiscalProfileDto {
57
+ company;
58
+ acbrCompanyPayload;
59
+ fiscalDefaults;
60
+ }
61
+ exports.TenantFiscalProfileDto = TenantFiscalProfileDto;
62
+ __decorate([
63
+ (0, swagger_1.ApiPropertyOptional)({ description: 'Dados principais da empresa do tenant (SaaS: 1 tenant = 1 empresa fiscal)' }),
64
+ (0, class_validator_1.IsOptional)(),
65
+ (0, class_validator_1.ValidateNested)(),
66
+ (0, class_transformer_1.Type)(() => TenantFiscalProfileCompanyDto),
67
+ __metadata("design:type", TenantFiscalProfileCompanyDto)
68
+ ], TenantFiscalProfileDto.prototype, "company", void 0);
69
+ __decorate([
70
+ (0, swagger_1.ApiPropertyOptional)({ description: 'Payload bruto compatível com endpoints /empresas (ACBr API)' }),
71
+ (0, class_validator_1.IsOptional)(),
72
+ (0, class_validator_1.IsObject)(),
73
+ __metadata("design:type", Object)
74
+ ], TenantFiscalProfileDto.prototype, "acbrCompanyPayload", void 0);
75
+ __decorate([
76
+ (0, swagger_1.ApiPropertyOptional)({ description: 'Defaults e preferências do módulo fiscal (livre)' }),
77
+ (0, class_validator_1.IsOptional)(),
78
+ (0, class_validator_1.IsObject)(),
79
+ __metadata("design:type", Object)
80
+ ], TenantFiscalProfileDto.prototype, "fiscalDefaults", void 0);
81
+ class GetTenantFiscalProfileDto {
82
+ tenantSlug;
83
+ }
84
+ exports.GetTenantFiscalProfileDto = GetTenantFiscalProfileDto;
85
+ __decorate([
86
+ (0, class_validator_1.IsString)(),
87
+ __metadata("design:type", String)
88
+ ], GetTenantFiscalProfileDto.prototype, "tenantSlug", void 0);
89
+ class UpsertTenantFiscalProfileDto {
90
+ tenantSlug;
91
+ profile;
92
+ }
93
+ exports.UpsertTenantFiscalProfileDto = UpsertTenantFiscalProfileDto;
94
+ __decorate([
95
+ (0, class_validator_1.IsString)(),
96
+ __metadata("design:type", String)
97
+ ], UpsertTenantFiscalProfileDto.prototype, "tenantSlug", void 0);
98
+ __decorate([
99
+ (0, class_validator_1.IsOptional)(),
100
+ (0, class_validator_1.ValidateNested)(),
101
+ (0, class_transformer_1.Type)(() => TenantFiscalProfileDto),
102
+ __metadata("design:type", TenantFiscalProfileDto)
103
+ ], UpsertTenantFiscalProfileDto.prototype, "profile", void 0);
104
+ class TenantFiscalProfileResponseDto {
105
+ tenantId;
106
+ tenantSlug;
107
+ profile;
108
+ }
109
+ exports.TenantFiscalProfileResponseDto = TenantFiscalProfileResponseDto;
110
+ __decorate([
111
+ (0, swagger_1.ApiPropertyOptional)(),
112
+ (0, class_validator_1.IsOptional)(),
113
+ (0, class_validator_1.IsUUID)(),
114
+ __metadata("design:type", String)
115
+ ], TenantFiscalProfileResponseDto.prototype, "tenantId", void 0);
116
+ __decorate([
117
+ (0, swagger_1.ApiPropertyOptional)(),
118
+ (0, class_validator_1.IsOptional)(),
119
+ (0, class_validator_1.IsString)(),
120
+ __metadata("design:type", String)
121
+ ], TenantFiscalProfileResponseDto.prototype, "tenantSlug", void 0);
122
+ __decorate([
123
+ (0, swagger_1.ApiPropertyOptional)(),
124
+ (0, class_validator_1.IsOptional)(),
125
+ (0, class_validator_1.ValidateNested)(),
126
+ (0, class_transformer_1.Type)(() => TenantFiscalProfileDto),
127
+ __metadata("design:type", TenantFiscalProfileDto)
128
+ ], TenantFiscalProfileResponseDto.prototype, "profile", void 0);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tychat-contracts",
3
- "version": "1.6.76",
3
+ "version": "1.6.79",
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",
@@ -0,0 +1,28 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { IsIn, IsNotEmpty, IsUUID } from 'class-validator';
3
+ import { FollowupTypeDto } from './followup-type.dto';
4
+
5
+ const APPOINTMENT_FOLLOWUP_TYPES = [
6
+ 'appointment_confirmation',
7
+ 'satisfaction_booking',
8
+ 'satisfaction_finished',
9
+ 'no_show_reschedule',
10
+ 'checkin_not_completed',
11
+ 'wellness_check',
12
+ 'return_suggestion',
13
+ ] as const satisfies readonly FollowupTypeDto[];
14
+
15
+ /** Payload to manually reprocess a failed appointment follow-up. */
16
+ export class FollowupAppointmentReprocessDto {
17
+ @ApiProperty({ format: 'uuid', description: 'Appointment UUID' })
18
+ @IsUUID('4')
19
+ @IsNotEmpty()
20
+ appointmentId: string;
21
+
22
+ @ApiProperty({
23
+ enum: APPOINTMENT_FOLLOWUP_TYPES,
24
+ example: 'checkin_not_completed',
25
+ })
26
+ @IsIn([...APPOINTMENT_FOLLOWUP_TYPES])
27
+ followupType: FollowupTypeDto;
28
+ }
@@ -128,6 +128,14 @@ export class FollowupConfigResponseDto {
128
128
  @IsBoolean()
129
129
  checkinNotCompletedEnabled: boolean;
130
130
 
131
+ @ApiProperty({
132
+ description:
133
+ 'When true, defer check-in-not-completed follow-up until clinic opening hours (if opening_hours configured)',
134
+ default: true,
135
+ })
136
+ @IsBoolean()
137
+ checkinNotCompletedRespectClinicHours: boolean;
138
+
131
139
  // ---------------------------------------------------------------------------
132
140
  // Wellness check settings
133
141
  // ---------------------------------------------------------------------------
@@ -26,6 +26,8 @@ export const FOLLOWUP_LOG_LIST_FILTER_KEYS = [
26
26
  'appointmentId',
27
27
  'closedByAttendantId',
28
28
  'sentAt',
29
+ 'status',
30
+ 'failureReason',
29
31
  ] as const;
30
32
  export type FollowupLogListFilterKeyDto = (typeof FOLLOWUP_LOG_LIST_FILTER_KEYS)[number];
31
33
 
@@ -1,6 +1,7 @@
1
1
  import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
2
2
  import { IsIn, IsInt, IsNotEmpty, IsOptional, IsString, Max, Min } from 'class-validator';
3
3
  import { FOLLOWUP_TYPES, FollowupTypeDto } from './followup-type.dto';
4
+ import { FOLLOWUP_LOG_STATUSES, FollowupLogStatusDto } from './followup-log-status.dto';
4
5
 
5
6
  /**
6
7
  * Represents a follow-up attempt log entry.
@@ -62,4 +63,20 @@ export class FollowupLogResponseDto {
62
63
  @IsString()
63
64
  @IsNotEmpty()
64
65
  sentAt: string;
66
+
67
+ @ApiProperty({
68
+ description: 'Delivery outcome of the follow-up attempt',
69
+ enum: FOLLOWUP_LOG_STATUSES,
70
+ example: 'sent',
71
+ })
72
+ @IsIn([...FOLLOWUP_LOG_STATUSES])
73
+ status: FollowupLogStatusDto;
74
+
75
+ @ApiPropertyOptional({
76
+ description: 'Reason when status is failed, skipped, or cancelled',
77
+ example: 'template_send_failed',
78
+ })
79
+ @IsOptional()
80
+ @IsString()
81
+ failureReason?: string | null;
65
82
  }
@@ -0,0 +1,9 @@
1
+ /** Status of a follow-up log entry (delivery outcome). */
2
+ export const FOLLOWUP_LOG_STATUSES = [
3
+ 'sent',
4
+ 'failed',
5
+ 'skipped',
6
+ 'cancelled',
7
+ ] as const;
8
+
9
+ export type FollowupLogStatusDto = (typeof FOLLOWUP_LOG_STATUSES)[number];
@@ -9,9 +9,11 @@ export * from './conversation-session-response.dto';
9
9
  export * from './create-conversation.dto';
10
10
  export * from './conversation-response.dto';
11
11
  export * from './followup-type.dto';
12
+ export * from './followup-log-status.dto';
12
13
  export * from './followup-config-response.dto';
13
14
  export * from './followup-log-response.dto';
14
15
  export * from './followup-log-list-query.dto';
15
16
  export * from './followup-log-list-response.dto';
17
+ export * from './followup-appointment-reprocess.dto';
16
18
  export * from './satisfaction-response.dto';
17
19
  export * from './followup-events.dto';
@@ -1,5 +1,15 @@
1
1
  import { ApiPropertyOptional } from '@nestjs/swagger';
2
- import { IsIn, IsInt, IsNotEmpty, IsObject, IsOptional, IsString, Max, Min } from 'class-validator';
2
+ import {
3
+ IsIn,
4
+ IsInt,
5
+ IsNotEmpty,
6
+ IsObject,
7
+ IsOptional,
8
+ IsString,
9
+ IsUUID,
10
+ Max,
11
+ Min,
12
+ } from 'class-validator';
3
13
 
4
14
  export const FISCAL_DOCUMENT_TYPES = ['nfe', 'nfce', 'nfse'] as const;
5
15
  export type FiscalDocumentType = (typeof FISCAL_DOCUMENT_TYPES)[number];
@@ -33,6 +43,11 @@ export class EnqueueNfeDto {
33
43
  @IsString()
34
44
  @IsOptional()
35
45
  referenceId?: string;
46
+
47
+ @ApiPropertyOptional({ description: 'Paciente vinculado (UUID)' })
48
+ @IsOptional()
49
+ @IsUUID()
50
+ patientId?: string;
36
51
  }
37
52
 
38
53
  export class ListFiscalDocumentsQueryDto {
@@ -51,6 +66,11 @@ export class ListFiscalDocumentsQueryDto {
51
66
  @IsString()
52
67
  referenceId?: string;
53
68
 
69
+ @ApiPropertyOptional({ description: 'Busca por paciente (UUID)' })
70
+ @IsOptional()
71
+ @IsUUID()
72
+ patientId?: string;
73
+
54
74
  @ApiPropertyOptional({ description: 'Busca por ACBR ID (parcial ou completo)' })
55
75
  @IsOptional()
56
76
  @IsString()
@@ -85,6 +105,7 @@ export type FiscalDocumentListItemDto = {
85
105
  documentType: FiscalDocumentType;
86
106
  companyCpfCnpj: string;
87
107
  referenceId: string | null;
108
+ patientId: string | null;
88
109
  acbrId: string | null;
89
110
  status: FiscalDocumentStatusDto;
90
111
  lastError: string | null;
@@ -15,6 +15,7 @@ export const FISCAL_COMPANIES_NFSE_CONFIG_PUT =
15
15
  'fiscal.companies.nfse_config.put';
16
16
  export const FISCAL_COMPANIES_SETTINGS_GET = 'fiscal.companies.settings.get';
17
17
  export const FISCAL_COMPANIES_SETTINGS_PUT = 'fiscal.companies.settings.put';
18
+ export const FISCAL_CEP_GET = 'fiscal.cep.get';
18
19
 
19
20
  export const FISCAL_DOCUMENTS_ENQUEUE = 'fiscal.documents.enqueue';
20
21
  export const FISCAL_DOCUMENTS_LIST = 'fiscal.documents.list';
@@ -9,3 +9,4 @@ export * from './consume-tenant-ai-tokens.dto';
9
9
  export * from './recharge-tenant-ai-tokens.dto';
10
10
  export * from './renew-tenant-ai-tokens.dto';
11
11
  export * from './tenant-storage-usage-apply-delta.dto';
12
+ export * from './tenant-fiscal-profile.dto';
@@ -0,0 +1,85 @@
1
+ import { ApiPropertyOptional } from '@nestjs/swagger';
2
+ import { IsObject, IsOptional, IsString, IsUUID, ValidateNested } from 'class-validator';
3
+ import { Type } from 'class-transformer';
4
+
5
+ export const TENANT_FISCAL_PROFILE_GET = 'tenant.fiscalProfile.get';
6
+ export const TENANT_FISCAL_PROFILE_UPSERT = 'tenant.fiscalProfile.upsert';
7
+
8
+ export class TenantFiscalProfileCompanyDto {
9
+ @ApiPropertyOptional({ description: 'CPF/CNPJ (somente números)' })
10
+ @IsOptional()
11
+ @IsString()
12
+ cpfCnpj?: string;
13
+
14
+ @ApiPropertyOptional({ description: 'Razão social' })
15
+ @IsOptional()
16
+ @IsString()
17
+ razaoSocial?: string;
18
+
19
+ @ApiPropertyOptional({ description: 'Nome fantasia' })
20
+ @IsOptional()
21
+ @IsString()
22
+ nomeFantasia?: string;
23
+
24
+ @ApiPropertyOptional({ description: 'E-mail' })
25
+ @IsOptional()
26
+ @IsString()
27
+ email?: string;
28
+
29
+ @ApiPropertyOptional({ description: 'Telefone' })
30
+ @IsOptional()
31
+ @IsString()
32
+ telefone?: string;
33
+ }
34
+
35
+ export class TenantFiscalProfileDto {
36
+ @ApiPropertyOptional({ description: 'Dados principais da empresa do tenant (SaaS: 1 tenant = 1 empresa fiscal)' })
37
+ @IsOptional()
38
+ @ValidateNested()
39
+ @Type(() => TenantFiscalProfileCompanyDto)
40
+ company?: TenantFiscalProfileCompanyDto;
41
+
42
+ @ApiPropertyOptional({ description: 'Payload bruto compatível com endpoints /empresas (ACBr API)' })
43
+ @IsOptional()
44
+ @IsObject()
45
+ acbrCompanyPayload?: Record<string, unknown>;
46
+
47
+ @ApiPropertyOptional({ description: 'Defaults e preferências do módulo fiscal (livre)' })
48
+ @IsOptional()
49
+ @IsObject()
50
+ fiscalDefaults?: Record<string, unknown>;
51
+ }
52
+
53
+ export class GetTenantFiscalProfileDto {
54
+ @IsString()
55
+ tenantSlug: string;
56
+ }
57
+
58
+ export class UpsertTenantFiscalProfileDto {
59
+ @IsString()
60
+ tenantSlug: string;
61
+
62
+ @IsOptional()
63
+ @ValidateNested()
64
+ @Type(() => TenantFiscalProfileDto)
65
+ profile?: TenantFiscalProfileDto;
66
+ }
67
+
68
+ export class TenantFiscalProfileResponseDto {
69
+ @ApiPropertyOptional()
70
+ @IsOptional()
71
+ @IsUUID()
72
+ tenantId?: string;
73
+
74
+ @ApiPropertyOptional()
75
+ @IsOptional()
76
+ @IsString()
77
+ tenantSlug?: string;
78
+
79
+ @ApiPropertyOptional()
80
+ @IsOptional()
81
+ @ValidateNested()
82
+ @Type(() => TenantFiscalProfileDto)
83
+ profile?: TenantFiscalProfileDto;
84
+ }
85
+