evo360-types 1.3.480 → 1.3.488
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.
- package/dist/apps/evo-integrations/zod-schemas.d.ts +3 -0
- package/dist/apps/evo-integrations/zod-schemas.js +1 -0
- package/dist/apps/evo-integrations/zod-schemas.ts +1 -0
- package/dist/types/evo-chat/thread-message/index.d.ts +53 -0
- package/dist/types/evo-chat/thread-message/index.ts +63 -0
- package/dist/types/evo-integrations/index.d.ts +5 -0
- package/dist/types/evo-integrations/index.ts +5 -0
- package/package.json +1 -1
|
@@ -689,6 +689,7 @@ export declare const zSyncRunEventSchema: z.ZodObject<{
|
|
|
689
689
|
patients_upserted: z.ZodDefault<z.ZodNumber>;
|
|
690
690
|
appointments_upserted: z.ZodDefault<z.ZodNumber>;
|
|
691
691
|
appointments_skipped: z.ZodDefault<z.ZodNumber>;
|
|
692
|
+
appointments_restored: z.ZodDefault<z.ZodNumber>;
|
|
692
693
|
deletions_detected: z.ZodDefault<z.ZodNumber>;
|
|
693
694
|
coveredWindow_start: z.ZodOptional<z.ZodDate>;
|
|
694
695
|
coveredWindow_end: z.ZodOptional<z.ZodDate>;
|
|
@@ -721,6 +722,7 @@ export declare const zSyncRunEventSchema: z.ZodObject<{
|
|
|
721
722
|
patients_upserted: number;
|
|
722
723
|
appointments_upserted: number;
|
|
723
724
|
appointments_skipped: number;
|
|
725
|
+
appointments_restored: number;
|
|
724
726
|
deletions_detected: number;
|
|
725
727
|
duration_ms: number;
|
|
726
728
|
firestore_reads: number;
|
|
@@ -750,6 +752,7 @@ export declare const zSyncRunEventSchema: z.ZodObject<{
|
|
|
750
752
|
patients_upserted?: number | undefined;
|
|
751
753
|
appointments_upserted?: number | undefined;
|
|
752
754
|
appointments_skipped?: number | undefined;
|
|
755
|
+
appointments_restored?: number | undefined;
|
|
753
756
|
deletions_detected?: number | undefined;
|
|
754
757
|
coveredWindow_start?: Date | undefined;
|
|
755
758
|
coveredWindow_end?: Date | undefined;
|
|
@@ -112,6 +112,7 @@ exports.zSyncRunEventSchema = zod_1.z.object({
|
|
|
112
112
|
patients_upserted: zod_1.z.number().int().default(0),
|
|
113
113
|
appointments_upserted: zod_1.z.number().int().default(0),
|
|
114
114
|
appointments_skipped: zod_1.z.number().int().default(0),
|
|
115
|
+
appointments_restored: zod_1.z.number().int().default(0),
|
|
115
116
|
deletions_detected: zod_1.z.number().int().default(0),
|
|
116
117
|
coveredWindow_start: zod_1.z.coerce.date().optional(),
|
|
117
118
|
coveredWindow_end: zod_1.z.coerce.date().optional(),
|
|
@@ -124,6 +124,7 @@ export const zSyncRunEventSchema = z.object({
|
|
|
124
124
|
patients_upserted: z.number().int().default(0),
|
|
125
125
|
appointments_upserted: z.number().int().default(0),
|
|
126
126
|
appointments_skipped: z.number().int().default(0),
|
|
127
|
+
appointments_restored: z.number().int().default(0),
|
|
127
128
|
deletions_detected: z.number().int().default(0),
|
|
128
129
|
coveredWindow_start: z.coerce.date().optional(),
|
|
129
130
|
coveredWindow_end: z.coerce.date().optional(),
|
|
@@ -69,6 +69,56 @@ export interface IMessagePricing {
|
|
|
69
69
|
category?: 'service' | 'utility' | 'authentication' | 'marketing';
|
|
70
70
|
billable?: boolean;
|
|
71
71
|
}
|
|
72
|
+
export interface IRenderedTemplateButton {
|
|
73
|
+
type?: string;
|
|
74
|
+
text?: string;
|
|
75
|
+
/** Já resolvida: o sufixo dinâmico do link vem substituído pelo valor enviado. */
|
|
76
|
+
url?: string;
|
|
77
|
+
phone_number?: string;
|
|
78
|
+
}
|
|
79
|
+
export interface IRenderedTemplateComponent {
|
|
80
|
+
type?: string;
|
|
81
|
+
format?: string;
|
|
82
|
+
/** Já resolvido — sem `{{placeholders}}`, salvo os que ficaram sem valor. */
|
|
83
|
+
text?: string;
|
|
84
|
+
buttons?: IRenderedTemplateButton[];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* A mensagem de template como foi enviada, já compilada.
|
|
88
|
+
*
|
|
89
|
+
* Sem isto, a thread é reconstruída na LEITURA a partir da definição corrente do
|
|
90
|
+
* canal: excluir o template apaga a mensagem da tela e editá-lo reescreve o
|
|
91
|
+
* histórico. Pior, a reconstrução ficava duplicada em cada cliente (Vue e Flutter),
|
|
92
|
+
* com algoritmos que divergiam entre si.
|
|
93
|
+
*
|
|
94
|
+
* O backend compila uma vez, no envio; o cliente só exibe.
|
|
95
|
+
*/
|
|
96
|
+
export interface IRenderedTemplateSnapshot {
|
|
97
|
+
schema_version: 1;
|
|
98
|
+
/**
|
|
99
|
+
* Transcrição textual canônica — header textual, body, footer e rótulos dos
|
|
100
|
+
* botões, nesta ordem, um por linha. É o campo para quem só precisa LER o
|
|
101
|
+
* histórico: busca, exportação, BigQuery, auditoria, IA.
|
|
102
|
+
*/
|
|
103
|
+
text: string;
|
|
104
|
+
/** Estrutura resolvida, para quem precisa DESENHAR o balão. */
|
|
105
|
+
components: IRenderedTemplateComponent[];
|
|
106
|
+
origin: 'send' | 'backfill';
|
|
107
|
+
/**
|
|
108
|
+
* `send_compiled` — compilado DURANTE o pipeline de envio, a partir dos componentes
|
|
109
|
+
* efetivamente enviados e da definição disponível naquele momento.
|
|
110
|
+
*
|
|
111
|
+
* NÃO afirma identidade com o que a Meta exibiu ao paciente: ela renderiza o template
|
|
112
|
+
* vivo. Em parte dos caminhos (endpoints de operador) o payload chega montado pelo
|
|
113
|
+
* frontend, então a definição usada aqui valida e compila o envio, mas não foi
|
|
114
|
+
* necessariamente a que o produziu.
|
|
115
|
+
*
|
|
116
|
+
* `historical_reconstruction` — remontado depois do envio, a partir do que sobrou.
|
|
117
|
+
*/
|
|
118
|
+
fidelity: 'send_compiled' | 'historical_reconstruction';
|
|
119
|
+
/** Chaves sem valor. O placeholder fica visível no texto. Omitido quando vazio. */
|
|
120
|
+
unresolved?: string[];
|
|
121
|
+
}
|
|
72
122
|
export interface IThreadMessage extends IFireDoc {
|
|
73
123
|
model_ver: number;
|
|
74
124
|
thread_id: string;
|
|
@@ -99,7 +149,10 @@ export interface IThreadMessage extends IFireDoc {
|
|
|
99
149
|
template?: {
|
|
100
150
|
name: string;
|
|
101
151
|
language: string;
|
|
152
|
+
/** O que foi ENVIADO à Meta: os parâmetros (`{type:'body', parameters:[...]}`). */
|
|
102
153
|
components?: unknown[];
|
|
154
|
+
/** feat-114: a mensagem já compilada, como foi enviada. Fonte de verdade do histórico. */
|
|
155
|
+
rendered?: IRenderedTemplateSnapshot;
|
|
103
156
|
};
|
|
104
157
|
context?: IMessageContext;
|
|
105
158
|
call?: IMessageCall;
|
|
@@ -99,6 +99,66 @@ export interface IMessagePricing {
|
|
|
99
99
|
billable?: boolean;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
+
// ── Mensagem de template compilada (feat-114) ──
|
|
103
|
+
|
|
104
|
+
export interface IRenderedTemplateButton {
|
|
105
|
+
type?: string;
|
|
106
|
+
text?: string;
|
|
107
|
+
/** Já resolvida: o sufixo dinâmico do link vem substituído pelo valor enviado. */
|
|
108
|
+
url?: string;
|
|
109
|
+
phone_number?: string;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export interface IRenderedTemplateComponent {
|
|
113
|
+
type?: string;
|
|
114
|
+
format?: string;
|
|
115
|
+
/** Já resolvido — sem `{{placeholders}}`, salvo os que ficaram sem valor. */
|
|
116
|
+
text?: string;
|
|
117
|
+
buttons?: IRenderedTemplateButton[];
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* A mensagem de template como foi enviada, já compilada.
|
|
122
|
+
*
|
|
123
|
+
* Sem isto, a thread é reconstruída na LEITURA a partir da definição corrente do
|
|
124
|
+
* canal: excluir o template apaga a mensagem da tela e editá-lo reescreve o
|
|
125
|
+
* histórico. Pior, a reconstrução ficava duplicada em cada cliente (Vue e Flutter),
|
|
126
|
+
* com algoritmos que divergiam entre si.
|
|
127
|
+
*
|
|
128
|
+
* O backend compila uma vez, no envio; o cliente só exibe.
|
|
129
|
+
*/
|
|
130
|
+
export interface IRenderedTemplateSnapshot {
|
|
131
|
+
schema_version: 1;
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Transcrição textual canônica — header textual, body, footer e rótulos dos
|
|
135
|
+
* botões, nesta ordem, um por linha. É o campo para quem só precisa LER o
|
|
136
|
+
* histórico: busca, exportação, BigQuery, auditoria, IA.
|
|
137
|
+
*/
|
|
138
|
+
text: string;
|
|
139
|
+
|
|
140
|
+
/** Estrutura resolvida, para quem precisa DESENHAR o balão. */
|
|
141
|
+
components: IRenderedTemplateComponent[];
|
|
142
|
+
|
|
143
|
+
origin: 'send' | 'backfill';
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* `send_compiled` — compilado DURANTE o pipeline de envio, a partir dos componentes
|
|
147
|
+
* efetivamente enviados e da definição disponível naquele momento.
|
|
148
|
+
*
|
|
149
|
+
* NÃO afirma identidade com o que a Meta exibiu ao paciente: ela renderiza o template
|
|
150
|
+
* vivo. Em parte dos caminhos (endpoints de operador) o payload chega montado pelo
|
|
151
|
+
* frontend, então a definição usada aqui valida e compila o envio, mas não foi
|
|
152
|
+
* necessariamente a que o produziu.
|
|
153
|
+
*
|
|
154
|
+
* `historical_reconstruction` — remontado depois do envio, a partir do que sobrou.
|
|
155
|
+
*/
|
|
156
|
+
fidelity: 'send_compiled' | 'historical_reconstruction';
|
|
157
|
+
|
|
158
|
+
/** Chaves sem valor. O placeholder fica visível no texto. Omitido quando vazio. */
|
|
159
|
+
unresolved?: string[];
|
|
160
|
+
}
|
|
161
|
+
|
|
102
162
|
// ── Thread Message (evo-chat v3) ──
|
|
103
163
|
|
|
104
164
|
export interface IThreadMessage extends IFireDoc {
|
|
@@ -126,7 +186,10 @@ export interface IThreadMessage extends IFireDoc {
|
|
|
126
186
|
template?: {
|
|
127
187
|
name: string;
|
|
128
188
|
language: string;
|
|
189
|
+
/** O que foi ENVIADO à Meta: os parâmetros (`{type:'body', parameters:[...]}`). */
|
|
129
190
|
components?: unknown[];
|
|
191
|
+
/** feat-114: a mensagem já compilada, como foi enviada. Fonte de verdade do histórico. */
|
|
192
|
+
rendered?: IRenderedTemplateSnapshot;
|
|
130
193
|
};
|
|
131
194
|
context?: IMessageContext;
|
|
132
195
|
|
|
@@ -174,6 +174,11 @@ export interface ISyncRunEvent {
|
|
|
174
174
|
patients_upserted: number;
|
|
175
175
|
appointments_upserted: number;
|
|
176
176
|
appointments_skipped: number;
|
|
177
|
+
/**
|
|
178
|
+
* Lápides revividas: docs com `deleted_at` preenchido que voltaram a aparecer
|
|
179
|
+
* no payload do externo e tiveram o soft-delete desfeito nesta run.
|
|
180
|
+
*/
|
|
181
|
+
appointments_restored?: number;
|
|
177
182
|
deletions_detected: number;
|
|
178
183
|
coveredWindow_start?: Date;
|
|
179
184
|
coveredWindow_end?: Date;
|
|
@@ -284,6 +284,11 @@ export interface ISyncRunEvent {
|
|
|
284
284
|
patients_upserted: number;
|
|
285
285
|
appointments_upserted: number;
|
|
286
286
|
appointments_skipped: number;
|
|
287
|
+
/**
|
|
288
|
+
* Lápides revividas: docs com `deleted_at` preenchido que voltaram a aparecer
|
|
289
|
+
* no payload do externo e tiveram o soft-delete desfeito nesta run.
|
|
290
|
+
*/
|
|
291
|
+
appointments_restored?: number;
|
|
287
292
|
deletions_detected: number;
|
|
288
293
|
coveredWindow_start?: Date;
|
|
289
294
|
coveredWindow_end?: Date;
|