@iann29/rastro 0.10.9 → 0.11.1

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 (180) hide show
  1. package/README.md +8 -0
  2. package/agent/integration.md +45 -0
  3. package/agent/manifest.json +4 -4
  4. package/dist/client/federation.d.ts +82 -9
  5. package/dist/client/federation.d.ts.map +1 -1
  6. package/dist/client/federation.js +40 -2
  7. package/dist/client/federation.js.map +1 -1
  8. package/dist/client/index.d.ts +465 -8
  9. package/dist/client/index.d.ts.map +1 -1
  10. package/dist/client/index.js +259 -7
  11. package/dist/client/index.js.map +1 -1
  12. package/dist/component/_generated/api.d.ts +10 -0
  13. package/dist/component/_generated/api.d.ts.map +1 -1
  14. package/dist/component/_generated/api.js.map +1 -1
  15. package/dist/component/_generated/component.d.ts +274 -21
  16. package/dist/component/_generated/component.d.ts.map +1 -1
  17. package/dist/component/_generated/server.d.ts +2 -0
  18. package/dist/component/_generated/server.d.ts.map +1 -1
  19. package/dist/component/_generated/server.js.map +1 -1
  20. package/dist/component/constants.d.ts +31 -0
  21. package/dist/component/constants.d.ts.map +1 -1
  22. package/dist/component/constants.js +31 -0
  23. package/dist/component/constants.js.map +1 -1
  24. package/dist/component/convex.config.d.ts +2 -0
  25. package/dist/component/convex.config.js +7 -0
  26. package/dist/component/convex.config.js.map +1 -1
  27. package/dist/component/errors.d.ts +1 -1
  28. package/dist/component/errors.d.ts.map +1 -1
  29. package/dist/component/errors.js.map +1 -1
  30. package/dist/component/http.d.ts.map +1 -1
  31. package/dist/component/http.js +64 -0
  32. package/dist/component/http.js.map +1 -1
  33. package/dist/component/leadAdsValidators.d.ts +1106 -0
  34. package/dist/component/leadAdsValidators.d.ts.map +1 -0
  35. package/dist/component/leadAdsValidators.js +311 -0
  36. package/dist/component/leadAdsValidators.js.map +1 -0
  37. package/dist/component/leadFormRules.d.ts +60 -0
  38. package/dist/component/leadFormRules.d.ts.map +1 -0
  39. package/dist/component/leadFormRules.js +140 -0
  40. package/dist/component/leadFormRules.js.map +1 -0
  41. package/dist/component/leadFormStore.d.ts +16 -0
  42. package/dist/component/leadFormStore.d.ts.map +1 -0
  43. package/dist/component/leadFormStore.js +92 -0
  44. package/dist/component/leadFormStore.js.map +1 -0
  45. package/dist/component/leadgenToken.d.ts +56 -0
  46. package/dist/component/leadgenToken.d.ts.map +1 -0
  47. package/dist/component/leadgenToken.js +262 -0
  48. package/dist/component/leadgenToken.js.map +1 -0
  49. package/dist/component/leads.d.ts +76 -7
  50. package/dist/component/leads.d.ts.map +1 -1
  51. package/dist/component/leads.js +112 -78
  52. package/dist/component/leads.js.map +1 -1
  53. package/dist/component/meta.d.ts.map +1 -1
  54. package/dist/component/meta.js +21 -1
  55. package/dist/component/meta.js.map +1 -1
  56. package/dist/component/metaFake.d.ts +44 -0
  57. package/dist/component/metaFake.d.ts.map +1 -1
  58. package/dist/component/metaFake.js +400 -1
  59. package/dist/component/metaFake.js.map +1 -1
  60. package/dist/component/metaGraph.d.ts +91 -0
  61. package/dist/component/metaGraph.d.ts.map +1 -1
  62. package/dist/component/metaGraph.js +217 -0
  63. package/dist/component/metaGraph.js.map +1 -1
  64. package/dist/component/metaLeads.d.ts +683 -0
  65. package/dist/component/metaLeads.d.ts.map +1 -0
  66. package/dist/component/metaLeads.js +2639 -0
  67. package/dist/component/metaLeads.js.map +1 -0
  68. package/dist/component/schema.d.ts +420 -5
  69. package/dist/component/schema.d.ts.map +1 -1
  70. package/dist/component/schema.js +176 -1
  71. package/dist/component/schema.js.map +1 -1
  72. package/dist/component/validators.d.ts +235 -11
  73. package/dist/component/validators.d.ts.map +1 -1
  74. package/dist/component/validators.js +14 -1
  75. package/dist/component/validators.js.map +1 -1
  76. package/dist/tracker/generated.d.ts +5 -5
  77. package/dist/tracker/generated.d.ts.map +1 -1
  78. package/dist/tracker/generated.js +5 -5
  79. package/dist/tracker/generated.js.map +1 -1
  80. package/dist/ui/campaigns/CampaignsView.d.ts +5 -1
  81. package/dist/ui/campaigns/CampaignsView.d.ts.map +1 -1
  82. package/dist/ui/campaigns/CampaignsView.js.map +1 -1
  83. package/dist/ui/campaigns/Drawer.d.ts.map +1 -1
  84. package/dist/ui/campaigns/Drawer.js +8 -26
  85. package/dist/ui/campaigns/Drawer.js.map +1 -1
  86. package/dist/ui/campaigns/labels.d.ts +29 -1
  87. package/dist/ui/campaigns/labels.d.ts.map +1 -1
  88. package/dist/ui/campaigns/labels.js +77 -2
  89. package/dist/ui/campaigns/labels.js.map +1 -1
  90. package/dist/ui/campaigns/model.js +2 -2
  91. package/dist/ui/campaigns/model.js.map +1 -1
  92. package/dist/ui/forms/FirstContact.d.ts +19 -0
  93. package/dist/ui/forms/FirstContact.d.ts.map +1 -0
  94. package/dist/ui/forms/FirstContact.js +81 -0
  95. package/dist/ui/forms/FirstContact.js.map +1 -0
  96. package/dist/ui/forms/FormLead.d.ts +28 -0
  97. package/dist/ui/forms/FormLead.d.ts.map +1 -0
  98. package/dist/ui/forms/FormLead.js +199 -0
  99. package/dist/ui/forms/FormLead.js.map +1 -0
  100. package/dist/ui/forms/FormRulesDrawer.d.ts +49 -0
  101. package/dist/ui/forms/FormRulesDrawer.d.ts.map +1 -0
  102. package/dist/ui/forms/FormRulesDrawer.js +149 -0
  103. package/dist/ui/forms/FormRulesDrawer.js.map +1 -0
  104. package/dist/ui/forms/FormsView.d.ts +10 -0
  105. package/dist/ui/forms/FormsView.d.ts.map +1 -0
  106. package/dist/ui/forms/FormsView.js +227 -0
  107. package/dist/ui/forms/FormsView.js.map +1 -0
  108. package/dist/ui/forms/Icons.d.ts +46 -0
  109. package/dist/ui/forms/Icons.d.ts.map +1 -0
  110. package/dist/ui/forms/Icons.js +45 -0
  111. package/dist/ui/forms/Icons.js.map +1 -0
  112. package/dist/ui/forms/RuleRow.d.ts +37 -0
  113. package/dist/ui/forms/RuleRow.d.ts.map +1 -0
  114. package/dist/ui/forms/RuleRow.js +80 -0
  115. package/dist/ui/forms/RuleRow.js.map +1 -0
  116. package/dist/ui/forms/WhatsAppButtonGuide.d.ts +33 -0
  117. package/dist/ui/forms/WhatsAppButtonGuide.d.ts.map +1 -0
  118. package/dist/ui/forms/WhatsAppButtonGuide.js +90 -0
  119. package/dist/ui/forms/WhatsAppButtonGuide.js.map +1 -0
  120. package/dist/ui/forms/index.d.ts +11 -0
  121. package/dist/ui/forms/index.d.ts.map +1 -0
  122. package/dist/ui/forms/index.js +7 -0
  123. package/dist/ui/forms/index.js.map +1 -0
  124. package/dist/ui/forms/journey.d.ts +19 -0
  125. package/dist/ui/forms/journey.d.ts.map +1 -0
  126. package/dist/ui/forms/journey.js +54 -0
  127. package/dist/ui/forms/journey.js.map +1 -0
  128. package/dist/ui/forms/model.d.ts +243 -0
  129. package/dist/ui/forms/model.d.ts.map +1 -0
  130. package/dist/ui/forms/model.js +564 -0
  131. package/dist/ui/forms/model.js.map +1 -0
  132. package/dist/ui/forms/sample.d.ts +36 -0
  133. package/dist/ui/forms/sample.d.ts.map +1 -0
  134. package/dist/ui/forms/sample.js +448 -0
  135. package/dist/ui/forms/sample.js.map +1 -0
  136. package/dist/ui/forms/types.d.ts +472 -0
  137. package/dist/ui/forms/types.d.ts.map +1 -0
  138. package/dist/ui/forms/types.js +2 -0
  139. package/dist/ui/forms/types.js.map +1 -0
  140. package/dist/ui/index.d.ts +2 -0
  141. package/dist/ui/index.d.ts.map +1 -1
  142. package/dist/ui/index.js +4 -0
  143. package/dist/ui/index.js.map +1 -1
  144. package/dist/ui/integrations/Overlay.d.ts +3 -1
  145. package/dist/ui/integrations/Overlay.d.ts.map +1 -1
  146. package/dist/ui/integrations/Overlay.js +2 -2
  147. package/dist/ui/integrations/Overlay.js.map +1 -1
  148. package/dist/ui/portfolio/PortfolioView.d.ts +4 -1
  149. package/dist/ui/portfolio/PortfolioView.d.ts.map +1 -1
  150. package/dist/ui/portfolio/PortfolioView.js.map +1 -1
  151. package/dist/ui/sample.d.ts +3 -1
  152. package/dist/ui/sample.d.ts.map +1 -1
  153. package/dist/ui/sample.js +2 -0
  154. package/dist/ui/sample.js.map +1 -1
  155. package/dist/ui/seed.d.ts +1 -1
  156. package/dist/ui/ui.css +2305 -0
  157. package/docs/federation.md +19 -0
  158. package/docs/meta-ads.md +723 -7
  159. package/docs/upgrading.md +70 -0
  160. package/llms.txt +1 -0
  161. package/package.json +1 -1
  162. package/src/component/_generated/api.ts +10 -0
  163. package/src/component/_generated/component.ts +290 -20
  164. package/src/component/_generated/server.ts +2 -0
  165. package/src/component/constants.ts +33 -0
  166. package/src/component/convex.config.ts +7 -0
  167. package/src/component/errors.ts +3 -1
  168. package/src/component/http.ts +75 -0
  169. package/src/component/leadAdsValidators.ts +376 -0
  170. package/src/component/leadFormRules.ts +202 -0
  171. package/src/component/leadFormStore.ts +129 -0
  172. package/src/component/leadgenToken.ts +348 -0
  173. package/src/component/leads.ts +136 -84
  174. package/src/component/meta.ts +21 -1
  175. package/src/component/metaFake.ts +485 -1
  176. package/src/component/metaGraph.ts +327 -0
  177. package/src/component/metaLeads.ts +3111 -0
  178. package/src/component/schema.ts +197 -1
  179. package/src/component/validators.ts +17 -1
  180. package/src/tracker/generated.ts +5 -5
@@ -0,0 +1,448 @@
1
+ /**
2
+ * Formulários (Lead Ads, wave 4) sample: Clínica Sorriso's Page and its
3
+ * instant forms, the rules of "Avaliação gratuita", and the two leads of the
4
+ * approved demo (direção A, D1–D10). Re-exported by `@iann29/rastro/ui/sample`
5
+ * as `sampleForms`. The clock is the demo's, 28/09 14:55 BRT: four minutes
6
+ * after Mariana Costa sent the form.
7
+ */
8
+ import { brt, DAY_MS, MINUTE_MS, SITES } from "../seed.js";
9
+ const FORMS_NOW = brt(9, 28, 14, 55);
10
+ const CLINICA = (({ siteId, name, segment }) => ({ siteId, name, segment }))(SITES[1]);
11
+ const CLINICA_PAGE = "104857392011234";
12
+ const KIDS_PAGE = "104857392099871";
13
+ const choice = (key, label, values) => ({
14
+ key,
15
+ label,
16
+ type: "CUSTOM",
17
+ options: values.map((value, index) => ({
18
+ key: `${key}_${index + 1}`,
19
+ value,
20
+ })),
21
+ });
22
+ const TRATAMENTO = choice("tratamento", "Tratamento de interesse", [
23
+ "Clareamento",
24
+ "Implante",
25
+ "Lente de contato",
26
+ "Ortodontia",
27
+ ]);
28
+ const ORCAMENTO = choice("orcamento", "Orçamento para o tratamento", [
29
+ "Até R$ 1.000",
30
+ "R$ 1.000 a R$ 3.000",
31
+ "Acima de R$ 3.000",
32
+ ]);
33
+ const AGENDAR = choice("agendar", "Quer agendar a avaliação?", [
34
+ "Sim",
35
+ "Ainda não",
36
+ ]);
37
+ const PERIODO = choice("periodo", "Melhor período", [
38
+ "Manhã",
39
+ "Tarde",
40
+ "Noite",
41
+ ]);
42
+ const CIDADE = choice("cidade", "Onde você mora?", [
43
+ "Caxias do Sul",
44
+ "Outra cidade",
45
+ ]);
46
+ const PHONE = {
47
+ key: "phone_number",
48
+ label: "Telefone",
49
+ type: "PHONE",
50
+ };
51
+ const EMAIL = {
52
+ key: "email",
53
+ label: "E-mail",
54
+ type: "EMAIL",
55
+ };
56
+ const NAME = {
57
+ key: "full_name",
58
+ label: "Nome completo",
59
+ type: "FULL_NAME",
60
+ };
61
+ const synced = FORMS_NOW - 6 * MINUTE_MS;
62
+ /** 30 days of leads, as the host's `metaForms` counts them: the last seven given. */
63
+ const days = (lastWeek) => [
64
+ ...Array.from({ length: 30 - lastWeek.length }, () => 0),
65
+ ...lastWeek,
66
+ ];
67
+ const AVALIACAO = {
68
+ pageId: CLINICA_PAGE,
69
+ formId: "882031944015501",
70
+ name: "Avaliação gratuita",
71
+ status: "ACTIVE",
72
+ questions: [PHONE, TRATAMENTO, ORCAMENTO, AGENDAR, PERIODO],
73
+ whatsappButton: false,
74
+ whatsappButtonConfirmed: false,
75
+ syncedAt: synced,
76
+ createdAt: brt(8, 20, 10, 0),
77
+ leads30d: 64,
78
+ daily: days([2, 3, 2, 4, 3, 5, 6]),
79
+ lastLeadAt: brt(9, 28, 14, 51),
80
+ lastLeadVia: "webhook",
81
+ };
82
+ const CLAREAMENTO = {
83
+ pageId: CLINICA_PAGE,
84
+ formId: "882031944015502",
85
+ name: "Clareamento — orçamento",
86
+ status: "ACTIVE",
87
+ questions: [PHONE, ORCAMENTO, CIDADE],
88
+ whatsappButton: true,
89
+ whatsappButtonConfirmed: false,
90
+ syncedAt: synced,
91
+ createdAt: brt(9, 2, 9, 30),
92
+ leads30d: 18,
93
+ daily: days([1, 2, 1, 2, 1, 3, 2]),
94
+ lastLeadAt: brt(9, 27, 19, 10),
95
+ lastLeadVia: "webhook",
96
+ };
97
+ const LENTE = {
98
+ pageId: CLINICA_PAGE,
99
+ formId: "882031944015503",
100
+ name: "Lente de contato dental",
101
+ status: "ACTIVE",
102
+ questions: [NAME, PHONE, ORCAMENTO, AGENDAR],
103
+ whatsappButton: null,
104
+ whatsappButtonConfirmed: false,
105
+ syncedAt: synced,
106
+ createdAt: brt(9, 26, 16, 40),
107
+ leads30d: 4,
108
+ daily: days([0, 0, 0, 0, 0, 1, 3]),
109
+ lastLeadAt: brt(9, 28, 9, 2),
110
+ lastLeadVia: "webhook",
111
+ };
112
+ const PROMO = {
113
+ pageId: CLINICA_PAGE,
114
+ formId: "882031944015504",
115
+ name: "Promo setembro",
116
+ status: "ARCHIVED",
117
+ questions: [NAME, PHONE, EMAIL, TRATAMENTO],
118
+ whatsappButton: false,
119
+ whatsappButtonConfirmed: false,
120
+ syncedAt: synced,
121
+ createdAt: brt(8, 28, 11, 0),
122
+ leads30d: 0,
123
+ daily: days([]),
124
+ lastLeadAt: brt(9, 12, 17, 30),
125
+ lastLeadVia: "webhook",
126
+ };
127
+ /** Sorriso Kids: a Page whose leads Meta did not grant ("2 formulários"). */
128
+ const KIDS_FORMS = [
129
+ {
130
+ pageId: KIDS_PAGE,
131
+ formId: "882031944015601",
132
+ name: "Consulta infantil",
133
+ status: "ACTIVE",
134
+ questions: [NAME, PHONE],
135
+ whatsappButton: null,
136
+ syncedAt: FORMS_NOW - 2 * DAY_MS,
137
+ },
138
+ {
139
+ pageId: KIDS_PAGE,
140
+ formId: "882031944015602",
141
+ name: "Aparelho infantil",
142
+ status: "ACTIVE",
143
+ questions: [NAME, PHONE],
144
+ whatsappButton: null,
145
+ syncedAt: FORMS_NOW - 2 * DAY_MS,
146
+ },
147
+ ];
148
+ /** Clínica Sorriso's board: uze.ai's Método columns, in blocks. */
149
+ const CLINICA_BOARD = {
150
+ label: "Funil principal",
151
+ entryColumn: "entrada",
152
+ discardColumn: "descartado",
153
+ columns: [
154
+ { key: "entrada", name: "Entrada", color: "#eb5c15", group: "Prospecção" },
155
+ { key: "vacuo", name: "Vácuo", color: "#f59e0b", group: "Vácuo" },
156
+ {
157
+ key: "conversando",
158
+ name: "Conversando",
159
+ color: "#25378d",
160
+ group: "Conversa",
161
+ },
162
+ {
163
+ key: "oportunidade",
164
+ name: "Oportunidade",
165
+ color: "#25378d",
166
+ group: "Conversa",
167
+ },
168
+ {
169
+ key: "apresentacao",
170
+ name: "Apresentação",
171
+ color: "#782278",
172
+ group: "Hora do Show",
173
+ },
174
+ {
175
+ key: "proposta",
176
+ name: "Proposta",
177
+ color: "#782278",
178
+ group: "Hora do Show",
179
+ },
180
+ { key: "fechado", name: "Fechado", color: "#15803d", group: "Fechamento" },
181
+ {
182
+ key: "descartado",
183
+ name: "Descartado",
184
+ color: "#5f5a99",
185
+ group: "Carteira",
186
+ },
187
+ ],
188
+ };
189
+ const FIRST_MESSAGE = "Oi, {primeiro_nome}! Aqui é a Clínica Sorriso. Vi seu pedido de avaliação gratuita. Qual o melhor dia para você vir?";
190
+ /** D2: three rules, the first a discard; the button still to turn on. */
191
+ const AVALIACAO_RULES = {
192
+ siteId: CLINICA.siteId,
193
+ formId: AVALIACAO.formId,
194
+ configured: true,
195
+ whatsappButtonConfirmed: false,
196
+ entryColumn: null,
197
+ rules: [
198
+ {
199
+ questionKey: ORCAMENTO.key,
200
+ answers: ["orcamento_1"],
201
+ to: { discard: "Orçamento abaixo do mínimo" },
202
+ monthCount: 11,
203
+ },
204
+ {
205
+ questionKey: AGENDAR.key,
206
+ answers: ["agendar_1"],
207
+ to: { column: "apresentacao" },
208
+ monthCount: 9,
209
+ },
210
+ {
211
+ questionKey: TRATAMENTO.key,
212
+ answers: ["tratamento_2", "tratamento_3"],
213
+ to: { column: "oportunidade" },
214
+ monthCount: 5,
215
+ },
216
+ ],
217
+ firstContact: { mode: "one_click", text: FIRST_MESSAGE },
218
+ updatedAt: brt(9, 22, 18, 4),
219
+ };
220
+ const reportRow = (form, counts) => ({
221
+ siteId: CLINICA.siteId,
222
+ pageId: form.pageId,
223
+ formId: form.formId,
224
+ name: form.name,
225
+ qualified: counts.won,
226
+ returned: 0,
227
+ ...counts,
228
+ });
229
+ /**
230
+ * `formsReport` for the Clínica's last 30 days: 86 leads, 14 discarded. The
231
+ * forms name no entry column, so what no rule decided counts in `entry`.
232
+ */
233
+ const FORMS_REPORT = {
234
+ partial: false,
235
+ forms: [
236
+ reportRow(AVALIACAO, {
237
+ leads: 64,
238
+ entry: 36,
239
+ columns: [
240
+ { column: "apresentacao", leads: 11 },
241
+ { column: "oportunidade", leads: 6 },
242
+ ],
243
+ discarded: [{ reason: "Orçamento abaixo do mínimo", leads: 11 }],
244
+ won: 4,
245
+ revenueCents: 960_000,
246
+ campaignName: "Clareamento — outubro",
247
+ }),
248
+ reportRow(CLAREAMENTO, {
249
+ leads: 18,
250
+ entry: 15,
251
+ columns: [],
252
+ discarded: [{ reason: "Fora da área de atendimento", leads: 3 }],
253
+ won: 2,
254
+ revenueCents: 180_000,
255
+ campaignName: null,
256
+ }),
257
+ reportRow(LENTE, {
258
+ leads: 4,
259
+ entry: 4,
260
+ columns: [],
261
+ discarded: [],
262
+ won: 0,
263
+ revenueCents: 0,
264
+ campaignName: null,
265
+ }),
266
+ reportRow(PROMO, {
267
+ leads: 0,
268
+ entry: 0,
269
+ columns: [],
270
+ discarded: [],
271
+ won: 0,
272
+ revenueCents: 0,
273
+ campaignName: null,
274
+ }),
275
+ ],
276
+ };
277
+ /** A form never configured, as the host's `formRules` answers it. */
278
+ const unconfigured = (form) => ({
279
+ siteId: CLINICA.siteId,
280
+ formId: form.formId,
281
+ configured: false,
282
+ entryColumn: null,
283
+ rules: [],
284
+ firstContact: { mode: "lead_starts" },
285
+ whatsappButtonConfirmed: false,
286
+ updatedAt: null,
287
+ });
288
+ const ORIGIN = {
289
+ platform: "ig",
290
+ placement: "Stories",
291
+ campaignName: "Clareamento — outubro",
292
+ adsetName: "Mulheres 25–45 · São Paulo",
293
+ adName: "Vídeo antes e depois",
294
+ };
295
+ const AGENDAR_SIM = { question: AGENDAR.label, answers: ["Sim"] };
296
+ /** Mariana: no rule matched, she did not tap the button, she waits (D5, D9). */
297
+ const MARIANA = {
298
+ formName: AVALIACAO.name,
299
+ receivedAt: brt(9, 28, 14, 51),
300
+ answers: [
301
+ { question: TRATAMENTO.label, answer: "Clareamento" },
302
+ { question: ORCAMENTO.label, answer: "R$ 1.000 a R$ 3.000" },
303
+ { question: AGENDAR.label, answer: "Ainda não" },
304
+ { question: PERIODO.label, answer: "Manhã" },
305
+ ],
306
+ origin: ORIGIN,
307
+ decision: { kind: "entry", column: "Entrada", color: "#eb5c15" },
308
+ path: [
309
+ {
310
+ kind: "ad",
311
+ at: brt(9, 28, 14, 49),
312
+ adName: ORIGIN.adName,
313
+ platform: "ig",
314
+ },
315
+ {
316
+ kind: "form",
317
+ at: brt(9, 28, 14, 51),
318
+ formName: AVALIACAO.name,
319
+ platform: "ig",
320
+ },
321
+ { kind: "entry", at: brt(9, 28, 14, 51), column: "Entrada" },
322
+ { kind: "button", at: brt(9, 28, 14, 51), wrote: false },
323
+ { kind: "waiting", since: brt(9, 28, 14, 51) },
324
+ ],
325
+ };
326
+ /** Pedro: "Quer agendar = Sim" sent him to Apresentação; he wrote first (D6). */
327
+ const PEDRO = {
328
+ formName: AVALIACAO.name,
329
+ receivedAt: brt(9, 28, 14, 32),
330
+ answers: [
331
+ { question: TRATAMENTO.label, answer: "Clareamento" },
332
+ { question: ORCAMENTO.label, answer: "R$ 1.000 a R$ 3.000" },
333
+ { question: AGENDAR.label, answer: "Sim" },
334
+ { question: PERIODO.label, answer: "Manhã" },
335
+ ],
336
+ origin: ORIGIN,
337
+ decision: {
338
+ kind: "column",
339
+ column: "Apresentação",
340
+ color: "#782278",
341
+ rule: AGENDAR_SIM,
342
+ },
343
+ path: [
344
+ {
345
+ kind: "ad",
346
+ at: brt(9, 28, 14, 30),
347
+ adName: ORIGIN.adName,
348
+ platform: "ig",
349
+ },
350
+ {
351
+ kind: "form",
352
+ at: brt(9, 28, 14, 32),
353
+ formName: AVALIACAO.name,
354
+ platform: "ig",
355
+ },
356
+ {
357
+ kind: "rule",
358
+ at: brt(9, 28, 14, 32),
359
+ rule: AGENDAR_SIM,
360
+ column: "Apresentação",
361
+ },
362
+ { kind: "button", at: brt(9, 28, 14, 33), wrote: true },
363
+ {
364
+ kind: "note",
365
+ at: brt(9, 28, 14, 41),
366
+ text: "Ana marcou a avaliação: qui 10h",
367
+ },
368
+ ],
369
+ };
370
+ const PAGES = [
371
+ {
372
+ pageId: CLINICA_PAGE,
373
+ name: "Clínica Sorriso",
374
+ leadsAllowed: true,
375
+ subscribedAt: brt(9, 2, 9, 0),
376
+ linkedSiteId: CLINICA.siteId,
377
+ instagram: "@clinicasorriso",
378
+ },
379
+ {
380
+ pageId: KIDS_PAGE,
381
+ name: "Sorriso Kids",
382
+ leadsAllowed: false,
383
+ subscribedAt: null,
384
+ linkedSiteId: null,
385
+ instagram: null,
386
+ },
387
+ ];
388
+ /** The Formulários screens on Clínica Sorriso, as the approved demo draws them. */
389
+ export const sampleForms = {
390
+ /** The company: Clínica Sorriso alone. */
391
+ sites: [CLINICA],
392
+ pages: PAGES,
393
+ forms: [AVALIACAO, CLAREAMENTO, LENTE, PROMO, ...KIDS_FORMS],
394
+ report: FORMS_REPORT,
395
+ /** `formRules` per form: "Lente de contato dental" never had rules. */
396
+ rules: {
397
+ [AVALIACAO.formId]: AVALIACAO_RULES,
398
+ [CLAREAMENTO.formId]: {
399
+ siteId: CLINICA.siteId,
400
+ formId: CLAREAMENTO.formId,
401
+ configured: true,
402
+ whatsappButtonConfirmed: false,
403
+ entryColumn: null,
404
+ rules: [
405
+ {
406
+ questionKey: CIDADE.key,
407
+ answers: ["cidade_2"],
408
+ to: { discard: "Fora da área de atendimento" },
409
+ monthCount: 3,
410
+ },
411
+ ],
412
+ firstContact: { mode: "lead_starts", text: FIRST_MESSAGE },
413
+ updatedAt: brt(9, 3, 10, 12),
414
+ },
415
+ [LENTE.formId]: unconfigured(LENTE),
416
+ [PROMO.formId]: unconfigured(PROMO),
417
+ },
418
+ boards: { [CLINICA.siteId]: CLINICA_BOARD },
419
+ /** "Avaliação gratuita" under its stored rules: 64 leads in 30 days. */
420
+ simulation: {
421
+ total: 64,
422
+ entry: 36,
423
+ rules: [11, 11, 6],
424
+ columns: [
425
+ { column: "apresentacao", leads: 11 },
426
+ { column: "oportunidade", leads: 6 },
427
+ ],
428
+ discarded: [{ reason: "Orçamento abaixo do mínimo", leads: 11 }],
429
+ partial: false,
430
+ },
431
+ /** The demo's two leads, for the host's card and contact panel. */
432
+ leads: { mariana: MARIANA, pedro: PEDRO },
433
+ formIds: {
434
+ avaliacao: AVALIACAO.formId,
435
+ clareamento: CLAREAMENTO.formId,
436
+ lente: LENTE.formId,
437
+ promo: PROMO.formId,
438
+ },
439
+ senderLabel: "Recepção · (11) 94567-1200",
440
+ whatsappNumber: "+55 11 94567-1200",
441
+ businessHoursLabel: "Seg a sex · 8h às 19h",
442
+ /** The host's own check (uze.ai knows its WhatsApp numbers). */
443
+ guideChecks: [
444
+ { label: "Número da Recepção conectado no uze.", state: "ok" },
445
+ ],
446
+ now: FORMS_NOW,
447
+ };
448
+ //# sourceMappingURL=sample.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample.js","sourceRoot":"","sources":["../../../src/ui/forms/sample.ts"],"names":[],"mappings":"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"}