evo360-types 1.3.490 → 1.3.494

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.
@@ -69,4 +69,15 @@ export interface INexFinopsBilling extends IFireGlobalDoc {
69
69
  customer_snapshot?: Record<string, unknown> | null;
70
70
  notes?: string | null;
71
71
  }
72
+ /**
73
+ * Transições permitidas de status de cobrança.
74
+ *
75
+ * Nenhum estado é terminal: erro operacional (baixa indevida, cancelamento
76
+ * acidental) precisa ter caminho de volta. `canceled` era um beco sem saída, o que
77
+ * deixou duas cobranças presas em 12/08/2026 — uma delas JÁ PAGA — quando o
78
+ * cancelamento de um boleto propagou para a cobrança.
79
+ *
80
+ * `overdue` também só permitia seguir para `paid`, impedindo renegociar (voltar a
81
+ * `issued` com novo vencimento) ou cancelar uma cobrança vencida.
82
+ */
72
83
  export declare const NEX_FINOPS_BILLING_STATUS_TRANSITIONS: Record<NexFinopsBillingStatus, NexFinopsBillingStatus[]>;
@@ -2,10 +2,22 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NEX_FINOPS_BILLING_STATUS_TRANSITIONS = void 0;
4
4
  // ── Status transitions ──
5
+ /**
6
+ * Transições permitidas de status de cobrança.
7
+ *
8
+ * Nenhum estado é terminal: erro operacional (baixa indevida, cancelamento
9
+ * acidental) precisa ter caminho de volta. `canceled` era um beco sem saída, o que
10
+ * deixou duas cobranças presas em 12/08/2026 — uma delas JÁ PAGA — quando o
11
+ * cancelamento de um boleto propagou para a cobrança.
12
+ *
13
+ * `overdue` também só permitia seguir para `paid`, impedindo renegociar (voltar a
14
+ * `issued` com novo vencimento) ou cancelar uma cobrança vencida.
15
+ */
5
16
  exports.NEX_FINOPS_BILLING_STATUS_TRANSITIONS = {
6
17
  draft: ['issued', 'canceled'],
7
18
  issued: ['draft', 'paid', 'overdue', 'canceled'],
8
- overdue: ['paid'],
19
+ overdue: ['paid', 'issued', 'canceled'],
9
20
  paid: ['issued'],
10
- canceled: [],
21
+ // `draft` permite reeditar valores antes de reemitir; `issued` restaura direto.
22
+ canceled: ['draft', 'issued'],
11
23
  };
@@ -120,10 +120,22 @@ export interface INexFinopsBilling extends IFireGlobalDoc {
120
120
 
121
121
  // ── Status transitions ──
122
122
 
123
+ /**
124
+ * Transições permitidas de status de cobrança.
125
+ *
126
+ * Nenhum estado é terminal: erro operacional (baixa indevida, cancelamento
127
+ * acidental) precisa ter caminho de volta. `canceled` era um beco sem saída, o que
128
+ * deixou duas cobranças presas em 12/08/2026 — uma delas JÁ PAGA — quando o
129
+ * cancelamento de um boleto propagou para a cobrança.
130
+ *
131
+ * `overdue` também só permitia seguir para `paid`, impedindo renegociar (voltar a
132
+ * `issued` com novo vencimento) ou cancelar uma cobrança vencida.
133
+ */
123
134
  export const NEX_FINOPS_BILLING_STATUS_TRANSITIONS: Record<NexFinopsBillingStatus, NexFinopsBillingStatus[]> = {
124
135
  draft: ['issued', 'canceled'],
125
136
  issued: ['draft', 'paid', 'overdue', 'canceled'],
126
- overdue: ['paid'],
137
+ overdue: ['paid', 'issued', 'canceled'],
127
138
  paid: ['issued'],
128
- canceled: [],
139
+ // `draft` permite reeditar valores antes de reemitir; `issued` restaura direto.
140
+ canceled: ['draft', 'issued'],
129
141
  };
@@ -56,6 +56,13 @@ export interface IMedCalendarNotificationEntry {
56
56
  channels?: {
57
57
  [channelKind: string]: IMedCalendarNotificationChannelEntry;
58
58
  } | null;
59
+ /**
60
+ * feat-116 — `statusBase` elegíveis para envio deste tipo de notificação.
61
+ * Ausente/vazia ⇒ sem restrição (comportamento anterior). Validada pelo
62
+ * EXECUTOR no `execute_at` (revalidação), não pelo sweep — mesma semântica de
63
+ * match do `status_base_in` das rotinas do hub-automation.
64
+ */
65
+ eligible_status_base?: string[] | null;
59
66
  }
60
67
  /** Config de um canal dentro de um config de notificação (feat-092). */
61
68
  export interface IMedCalendarNotificationChannelEntry {
@@ -94,6 +101,12 @@ export declare const MedCalendarNotificationConfigKeys: {
94
101
  * "paciente confirmou".
95
102
  */
96
103
  readonly AppointmentConfirmation: "appointment_confirmation";
104
+ /**
105
+ * feat-116 — mensagem PÓS-CONSULTA (avaliação do atendimento, follow-up D+N de
106
+ * procedimento), disparada por rotina. Lida pelo handler
107
+ * `appointment_post_consultation`; sem CTAs de confirmar/remarcar.
108
+ */
109
+ readonly AppointmentPostConsultation: "appointment_post_consultation";
97
110
  readonly AppointmentCreated: "appointment_created";
98
111
  readonly AppointmentRescheduled: "appointment_rescheduled";
99
112
  readonly AppointmentCancelled: "appointment_cancelled";
@@ -37,6 +37,12 @@ exports.MedCalendarNotificationConfigKeys = {
37
37
  * "paciente confirmou".
38
38
  */
39
39
  AppointmentConfirmation: "appointment_confirmation",
40
+ /**
41
+ * feat-116 — mensagem PÓS-CONSULTA (avaliação do atendimento, follow-up D+N de
42
+ * procedimento), disparada por rotina. Lida pelo handler
43
+ * `appointment_post_consultation`; sem CTAs de confirmar/remarcar.
44
+ */
45
+ AppointmentPostConsultation: "appointment_post_consultation",
40
46
  AppointmentCreated: "appointment_created",
41
47
  AppointmentRescheduled: "appointment_rescheduled",
42
48
  AppointmentCancelled: "appointment_cancelled",
@@ -71,6 +71,13 @@ export interface IMedCalendarNotificationEntry {
71
71
  channels?: {
72
72
  [channelKind: string]: IMedCalendarNotificationChannelEntry;
73
73
  } | null;
74
+ /**
75
+ * feat-116 — `statusBase` elegíveis para envio deste tipo de notificação.
76
+ * Ausente/vazia ⇒ sem restrição (comportamento anterior). Validada pelo
77
+ * EXECUTOR no `execute_at` (revalidação), não pelo sweep — mesma semântica de
78
+ * match do `status_base_in` das rotinas do hub-automation.
79
+ */
80
+ eligible_status_base?: string[] | null;
74
81
  }
75
82
 
76
83
  /** Config de um canal dentro de um config de notificação (feat-092). */
@@ -112,6 +119,12 @@ export const MedCalendarNotificationConfigKeys = {
112
119
  * "paciente confirmou".
113
120
  */
114
121
  AppointmentConfirmation: "appointment_confirmation",
122
+ /**
123
+ * feat-116 — mensagem PÓS-CONSULTA (avaliação do atendimento, follow-up D+N de
124
+ * procedimento), disparada por rotina. Lida pelo handler
125
+ * `appointment_post_consultation`; sem CTAs de confirmar/remarcar.
126
+ */
127
+ AppointmentPostConsultation: "appointment_post_consultation",
115
128
  AppointmentCreated: "appointment_created",
116
129
  AppointmentRescheduled: "appointment_rescheduled",
117
130
  AppointmentCancelled: "appointment_cancelled",
@@ -56,6 +56,7 @@ export declare const TaskAutoHandlerEnum: {
56
56
  readonly AppointmentAction: "appointment_action";
57
57
  readonly AppointmentReminder: "appointment_reminder";
58
58
  readonly AppointmentConfirmation: "appointment_confirmation";
59
+ readonly AppointmentPostConsultation: "appointment_post_consultation";
59
60
  readonly IntegrationsSyncRun: "evo-integrations.sync-run";
60
61
  readonly CampaignMaterialize: "campaign.materialize";
61
62
  readonly CampaignDispatchBatch: "campaign.dispatch_batch";
@@ -103,6 +103,13 @@ exports.TaskAutoHandlerEnum = {
103
103
  // HSM com CTAs de confirmar/remarcar. Tópico: `appointment_confirmation.execute_requests`.
104
104
  // Espelhado à mão em `zTaskAutoHandlerSchema` — sem lá, criar a task estoura ZodError.
105
105
  AppointmentConfirmation: "appointment_confirmation",
106
+ // feat-116: mensagem PÓS-CONSULTA (avaliação, follow-up D+N de procedimento) —
107
+ // mesmo executor parametrizado do lembrete/confirmação, lendo
108
+ // `notification_config.configs.appointment_post_consultation` e SEM os CTAs de
109
+ // confirmar/remarcar (a consulta já aconteceu). Tópico:
110
+ // `appointment_post_consultation.execute_requests`.
111
+ // Espelhado à mão em `zTaskAutoHandlerSchema` — sem lá, criar a task estoura ZodError.
112
+ AppointmentPostConsultation: "appointment_post_consultation",
106
113
  // feat-078: handler que roda um sync de agenda do evo-integrations. O valor
107
114
  // é o nome do handler COM ponto de propósito — `resolveHandlerTopic` faz
108
115
  // `${handler}.execute_requests`, e a CF `integrations_sync` já escuta
@@ -114,6 +114,13 @@ export const TaskAutoHandlerEnum = {
114
114
  // HSM com CTAs de confirmar/remarcar. Tópico: `appointment_confirmation.execute_requests`.
115
115
  // Espelhado à mão em `zTaskAutoHandlerSchema` — sem lá, criar a task estoura ZodError.
116
116
  AppointmentConfirmation: "appointment_confirmation",
117
+ // feat-116: mensagem PÓS-CONSULTA (avaliação, follow-up D+N de procedimento) —
118
+ // mesmo executor parametrizado do lembrete/confirmação, lendo
119
+ // `notification_config.configs.appointment_post_consultation` e SEM os CTAs de
120
+ // confirmar/remarcar (a consulta já aconteceu). Tópico:
121
+ // `appointment_post_consultation.execute_requests`.
122
+ // Espelhado à mão em `zTaskAutoHandlerSchema` — sem lá, criar a task estoura ZodError.
123
+ AppointmentPostConsultation: "appointment_post_consultation",
117
124
  // feat-078: handler que roda um sync de agenda do evo-integrations. O valor
118
125
  // é o nome do handler COM ponto de propósito — `resolveHandlerTopic` faz
119
126
  // `${handler}.execute_requests`, e a CF `integrations_sync` já escuta
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "evo360-types",
3
- "version": "1.3.490",
3
+ "version": "1.3.494",
4
4
  "description": "HREVO360 Shared Types",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",