@fayz-ai/plugin-agenda 0.16.1 → 0.18.0

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 (72) hide show
  1. package/dist/bridges/create-financial-bridge.d.ts.map +1 -1
  2. package/dist/{chunk-PDYBAVXU.js → chunk-RVO5ILXN.js} +39 -11
  3. package/dist/chunk-RVO5ILXN.js.map +1 -0
  4. package/dist/components/AgendaFilterRail.d.ts +18 -0
  5. package/dist/components/AgendaFilterRail.d.ts.map +1 -0
  6. package/dist/components/AgendaGeneralSettings.d.ts.map +1 -1
  7. package/dist/components/AgendaMobileList.d.ts.map +1 -1
  8. package/dist/components/AppointmentModal.d.ts.map +1 -1
  9. package/dist/components/AttendanceRuler.d.ts +21 -0
  10. package/dist/components/AttendanceRuler.d.ts.map +1 -0
  11. package/dist/components/BlockDialog.d.ts +26 -0
  12. package/dist/components/BlockDialog.d.ts.map +1 -0
  13. package/dist/components/BookingCard.d.ts +73 -0
  14. package/dist/components/BookingCard.d.ts.map +1 -0
  15. package/dist/components/BookingInterestsPanel.d.ts +17 -0
  16. package/dist/components/BookingInterestsPanel.d.ts.map +1 -0
  17. package/dist/components/CheckinDialog.d.ts +9 -2
  18. package/dist/components/CheckinDialog.d.ts.map +1 -1
  19. package/dist/components/CheckinScoreboard.d.ts +14 -0
  20. package/dist/components/CheckinScoreboard.d.ts.map +1 -0
  21. package/dist/components/ClientHistoryPanel.d.ts +7 -0
  22. package/dist/components/ClientHistoryPanel.d.ts.map +1 -0
  23. package/dist/components/LostSlotsCard.d.ts +10 -0
  24. package/dist/components/LostSlotsCard.d.ts.map +1 -0
  25. package/dist/components/PersonAttendanceBlock.d.ts +18 -0
  26. package/dist/components/PersonAttendanceBlock.d.ts.map +1 -0
  27. package/dist/components/PersonAttendancesWidget.d.ts +7 -0
  28. package/dist/components/PersonAttendancesWidget.d.ts.map +1 -0
  29. package/dist/components/PersonServicesWidget.d.ts +5 -0
  30. package/dist/components/PersonServicesWidget.d.ts.map +1 -0
  31. package/dist/components/ScheduleGridDialog.d.ts +9 -0
  32. package/dist/components/ScheduleGridDialog.d.ts.map +1 -0
  33. package/dist/config.d.ts +7 -0
  34. package/dist/config.d.ts.map +1 -1
  35. package/dist/data/mock.d.ts.map +1 -1
  36. package/dist/data/registries.d.ts.map +1 -1
  37. package/dist/data/supabase.d.ts.map +1 -1
  38. package/dist/data/types.d.ts +394 -2
  39. package/dist/data/types.d.ts.map +1 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +7675 -1611
  42. package/dist/index.js.map +1 -1
  43. package/dist/integrations/google-calendar/index.d.ts.map +1 -1
  44. package/dist/integrations/google-calendar/migrations/index.d.ts +1 -0
  45. package/dist/integrations/google-calendar/migrations/index.d.ts.map +1 -1
  46. package/dist/lib/phone.d.ts +11 -0
  47. package/dist/lib/phone.d.ts.map +1 -0
  48. package/dist/lib/professional-scope.d.ts +41 -0
  49. package/dist/lib/professional-scope.d.ts.map +1 -0
  50. package/dist/lib/schedule-engine.d.ts +46 -0
  51. package/dist/lib/schedule-engine.d.ts.map +1 -0
  52. package/dist/locales/en.d.ts.map +1 -1
  53. package/dist/locales/pt-BR.d.ts.map +1 -1
  54. package/dist/migrations/index.d.ts +5 -0
  55. package/dist/migrations/index.d.ts.map +1 -1
  56. package/dist/public/createPublicBookingPlugin.d.ts.map +1 -1
  57. package/dist/public/index.js +3 -4
  58. package/dist/public/index.js.map +1 -1
  59. package/dist/store.d.ts +44 -3
  60. package/dist/store.d.ts.map +1 -1
  61. package/dist/styles/calendar-styles.d.ts.map +1 -1
  62. package/dist/types.d.ts +164 -2
  63. package/dist/types.d.ts.map +1 -1
  64. package/dist/views/AgendaPage.d.ts +11 -1
  65. package/dist/views/AgendaPage.d.ts.map +1 -1
  66. package/dist/views/CalendarView.d.ts +0 -16
  67. package/dist/views/CalendarView.d.ts.map +1 -1
  68. package/dist/views/CheckinView.d.ts +3 -1
  69. package/dist/views/CheckinView.d.ts.map +1 -1
  70. package/dist/views/ConfirmationsView.d.ts.map +1 -1
  71. package/package.json +10 -9
  72. package/dist/chunk-PDYBAVXU.js.map +0 -1
package/dist/store.d.ts CHANGED
@@ -2,7 +2,7 @@ import { type StoreApi } from 'zustand/vanilla';
2
2
  import type { AgendaDataProvider } from './data/types';
3
3
  import type { AgendaFinancialBridge } from './bridges/financial-bridge';
4
4
  import type { ExternalBookingSource } from './config';
5
- import type { CalendarBooking, Professional, Schedule, CreateBookingInput, UpdateBookingInput, ProfessionalQuery } from './types';
5
+ import type { CalendarBooking, Professional, Schedule, CreateBookingInput, UpdateBookingInput, ProfessionalQuery, ScheduleQuery } from './types';
6
6
  export interface AgendaUIState {
7
7
  bookings: CalendarBooking[];
8
8
  bookingsLoading: boolean;
@@ -17,6 +17,19 @@ export interface AgendaUIState {
17
17
  /** A lista voltou no teto — existe mais quadro do que o que está aqui, e a
18
18
  * busca do seletor tem que ir ao servidor em vez de filtrar o que carregou. */
19
19
  professionalsTruncated: boolean;
20
+ /**
21
+ * As COLUNAS: quem tem grade aberta ou horário marcado no período visível.
22
+ *
23
+ * Separado de `professionals` de propósito. Aquela lista é o quadro inteiro,
24
+ * cortada no teto e reescrita a cada busca do seletor — usá-la como fonte das
25
+ * colunas fazia a grade se redesenhar enquanto alguém digitava um nome. Esta
26
+ * é um conjunto pequeno, derivado das grades, e só muda quando o período
27
+ * muda.
28
+ */
29
+ agendaProfessionals: Professional[];
30
+ agendaProfessionalsLoading: boolean;
31
+ /** Para QUAL conjunto de ids as colunas em memória valem. Ver `schedulesKey`. */
32
+ agendaProfessionalsKey: string | null;
20
33
  selectedProfessionalIds: string[];
21
34
  selectedLocationId: string | null;
22
35
  selectedStatuses: string[];
@@ -24,8 +37,24 @@ export interface AgendaUIState {
24
37
  id: string;
25
38
  name: string;
26
39
  }>;
40
+ /** As SALAS da casa (`plg_agenda_resources`) — sala, cadeira, maca, aparelho. */
41
+ resources: Array<{
42
+ id: string;
43
+ name: string;
44
+ }>;
27
45
  schedules: Schedule[];
28
46
  schedulesLoading: boolean;
47
+ /**
48
+ * O RECORTE que as grades em memória descrevem — ou `null` enquanto não há
49
+ * nenhum.
50
+ *
51
+ * `schedulesLoading` não responde a pergunta que a tela faz. Ele nasce
52
+ * `false`, porque o pedido só sai DEPOIS do primeiro desenho: na primeira
53
+ * pintura "não está carregando" e "já carregou" são indistinguíveis, e a
54
+ * grade desenhava oito colunas com as grades de ninguém. Isto é um fato
55
+ * sobre o que se tem, não sobre o que está no ar.
56
+ */
57
+ schedulesKey: string | null;
29
58
  pendingConfirmations: CalendarBooking[];
30
59
  confirmationsLoading: boolean;
31
60
  appointmentModal: {
@@ -45,9 +74,21 @@ export interface AgendaUIState {
45
74
  end: string;
46
75
  }, statuses?: string[]): Promise<void>;
47
76
  fetchProfessionals(query?: ProfessionalQuery): Promise<void>;
77
+ /** As colunas do período — ver `agendaProfessionals`. */
78
+ fetchAgendaProfessionals(ids: string[]): Promise<void>;
48
79
  fetchLocations(): Promise<void>;
49
- fetchSchedules(professionalId?: string): Promise<void>;
50
- fetchConfirmations(): Promise<void>;
80
+ fetchResources(): Promise<void>;
81
+ fetchSchedules(query?: string | ScheduleQuery): Promise<void>;
82
+ /** Esquece a grade em memória — chamado depois de editar horários. */
83
+ invalidateSchedules(): void;
84
+ /** Os bloqueios que valem no período visível. */
85
+ blocks: Schedule[];
86
+ fetchBlocks(range: {
87
+ from: string;
88
+ to: string;
89
+ }): Promise<void>;
90
+ /** Quantos dias à frente a lista de confirmação alcança. */
91
+ fetchConfirmations(daysAhead?: number): Promise<void>;
51
92
  createBooking(input: CreateBookingInput): Promise<CalendarBooking>;
52
93
  updateBooking(id: string, data: UpdateBookingInput): Promise<CalendarBooking>;
53
94
  deleteBooking(id: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAK5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,KAAK,EACV,eAAe,EAAE,YAAY,EAAE,QAAQ,EACvC,kBAAkB,EAAE,kBAAkB,EAAgB,iBAAiB,EACxE,MAAM,SAAS,CAAA;AAehB,MAAM,WAAW,aAAa;IAE5B,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,eAAe,EAAE,OAAO,CAAA;IACxB,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IAGpB,aAAa,EAAE,YAAY,EAAE,CAAA;IAC7B,oBAAoB,EAAE,OAAO,CAAA;IAC7B;oFACgF;IAChF,sBAAsB,EAAE,OAAO,CAAA;IAG/B,uBAAuB,EAAE,MAAM,EAAE,CAAA;IACjC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAG1B,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAG9C,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,gBAAgB,EAAE,OAAO,CAAA;IAGzB,oBAAoB,EAAE,eAAe,EAAE,CAAA;IACvC,oBAAoB,EAAE,OAAO,CAAA;IAG7B,gBAAgB,EAAE;QAChB,IAAI,EAAE,OAAO,CAAA;QACb,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAA;QACvB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;QAC3D,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,cAAc,CAAC,EAAE,qBAAqB,CAAA;KACvC,CAAA;IAGD;oFACgF;IAChF,aAAa,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxF,kBAAkB,CAAC,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAClE,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAC7E,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1G,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;QAAE,eAAe,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,GAAG,IAAI,CAAA;IAChH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,qBAAqB,CAAA;KAAE,GAAG,IAAI,CAAA;IAC/M,qBAAqB,IAAI,IAAI,CAAA;CAC9B;AAeD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,eAAe,CAAC,EAAE,qBAAqB,GAAG,QAAQ,CAAC,aAAa,CAAC,CA+PhI"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-styles.d.ts","sourceRoot":"","sources":["../../src/styles/calendar-styles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwQH,wBAAgB,oBAAoB,IAAI,IAAI,CAe3C"}
1
+ {"version":3,"file":"calendar-styles.d.ts","sourceRoot":"","sources":["../../src/styles/calendar-styles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiUH,wBAAgB,oBAAoB,IAAI,IAAI,CAoB3C"}
package/dist/types.d.ts CHANGED
@@ -69,6 +69,15 @@ export interface CalendarBooking {
69
69
  /** In unified model, orderId === id (the booking IS the order) */
70
70
  orderId: string | null;
71
71
  locationId: string | null;
72
+ /**
73
+ * A SALA — `plg_agenda_resources`. Não confundir com `locationId`, que neste
74
+ * SDK é a UNIDADE: a sala é onde dentro da unidade o atendimento acontece
75
+ * (maca, cadeira, aparelho). 352.002 agendamentos do salão migrado já a
76
+ * carregam; até agora nenhuma linha de TypeScript a lia.
77
+ */
78
+ resourceId?: string | null;
79
+ /** O NOME da sala, resolvido na leitura — sem ele a escolha fica invisível. */
80
+ resourceName?: string | null;
72
81
  metadata: Record<string, unknown>;
73
82
  clientId: string | null;
74
83
  clientName: string | null;
@@ -97,8 +106,16 @@ export interface Professional {
97
106
  id: string;
98
107
  name: string;
99
108
  avatarUrl: string | null;
100
- locationId: string | null;
101
- locationName: string | null;
109
+ /**
110
+ * AS UNIDADES em que a pessoa atende. Vazio ou nulo = a rede inteira, que é a
111
+ * semântica de `public.scoped_resources` para pessoa.
112
+ *
113
+ * Era `locationId: string | null` — uma unidade só — e o mapeador gravava
114
+ * `null` em toda linha, porque a fonte (`v_bookable_people.unit_ids`) sempre
115
+ * foi um CONJUNTO. O resultado é que o estreitamento por local, que existe e
116
+ * tem teste, nunca teve dado para estreitar.
117
+ */
118
+ unitIds: string[] | null;
102
119
  isActive: boolean;
103
120
  }
104
121
  /**
@@ -114,6 +131,29 @@ export interface ProfessionalQuery {
114
131
  unitId?: string;
115
132
  /** Teto de linhas. */
116
133
  limit?: number;
134
+ /**
135
+ * Exatamente estas pessoas, sem teto.
136
+ *
137
+ * É como a agenda pede as COLUNAS depois de já saber quem tem grade ou
138
+ * horário marcado no período — um conjunto pequeno e conhecido, ao contrário
139
+ * da lista do seletor, que é o quadro inteiro e por isso vem cortada.
140
+ */
141
+ ids?: string[];
142
+ }
143
+ /**
144
+ * O recorte das grades que a tela precisa.
145
+ *
146
+ * Uma grade ou é SEMANAL (`dayOfWeek`) ou é EXCEÇÃO de uma data
147
+ * (`specificDate`). Pedir "as segundas e as terças, mais o que for exceção
148
+ * entre 21 e 27" devolve exatamente o que a semana desenha.
149
+ */
150
+ export interface ScheduleQuery {
151
+ professionalId?: string;
152
+ /** Os dias da semana visíveis (0 = domingo). */
153
+ daysOfWeek?: number[];
154
+ /** O período visível, para as exceções. ISO `YYYY-MM-DD`. */
155
+ from?: string;
156
+ to?: string;
117
157
  }
118
158
  /** Working hours schedule (from public.schedules) */
119
159
  export interface Schedule {
@@ -127,8 +167,109 @@ export interface Schedule {
127
167
  startsAt: string;
128
168
  endsAt: string;
129
169
  isActive: boolean;
170
+ /**
171
+ * A VIGÊNCIA da grade — "Início" e "Fim da vigência" do V1.
172
+ *
173
+ * Chegavam do banco (o mapeador converte a linha inteira) e não estavam
174
+ * declaradas aqui, então ninguém as lia: a agenda desenhava toda grade como
175
+ * se valesse desde sempre e para sempre. Ponta vazia é ponta aberta.
176
+ */
177
+ validFrom?: string | null;
178
+ validTo?: string | null;
179
+ /**
180
+ * `standard` ou `exception` — e a diferença não é rótulo: durante a vigência
181
+ * de uma grade de exceção, cada weekday que ela define SUBSTITUI a padrão
182
+ * naquele dia. Ver `lib/schedule-engine.ts`.
183
+ */
184
+ gridKind?: string | null;
185
+ /** 0 = toda semana; N = atende uma e pula N. */
186
+ weekInterval?: number | null;
130
187
  metadata: Record<string, unknown>;
131
188
  }
189
+ /**
190
+ * Uma bola da régua do atendimento.
191
+ *
192
+ * `kind` é o vocabulário do schema (`form`, `evaluation`, `products`,
193
+ * `invoice_item`, `revision_link`) e NÃO chega cru à tela — cada um tem nome de
194
+ * balcão. `blocksStart` e `blocksFinish` são as duas travas do V1, e elas são
195
+ * diferentes: a anamnese impede COMEÇAR, o termo de sessão impede TERMINAR.
196
+ */
197
+ export interface AttendanceRequirement {
198
+ id: string;
199
+ sessionId: string | null;
200
+ serviceId: string | null;
201
+ serviceName: string | null;
202
+ kind: string;
203
+ scope: string;
204
+ status: 'pending' | 'resolved' | 'not_applicable' | string;
205
+ /** O modelo de formulário que esta exigência pede, quando é um. */
206
+ refId: string | null;
207
+ refName: string | null;
208
+ blocksStart: boolean;
209
+ blocksFinish: boolean;
210
+ /** "Válido até" — a anamnese vence, e é ela que solta o resto. */
211
+ validUntil: string | null;
212
+ }
213
+ /**
214
+ * The RECORD of an attendance — what it WAS, not what it required.
215
+ *
216
+ * The ruler answers "what is missing"; this answers "what happened". Different
217
+ * questions, and migrated history can only answer the second: of the 233,981
218
+ * sessions brought over from V1, 1,338 bookings carry a stored requirement —
219
+ * the rest opened an empty screen, because requirement circles were the only
220
+ * thing that screen knew how to draw.
221
+ */
222
+ export interface AttendanceRecord {
223
+ sessionId: string;
224
+ serviceName: string | null;
225
+ status: string;
226
+ /** Who PERFORMED it — not who was booked. V1 keeps the two apart. */
227
+ performedByName: string | null;
228
+ /**
229
+ * A performer was recorded, even when the name does not come through.
230
+ *
231
+ * `people` carries a RESTRICTIVE reach policy (`people_available_in`): a
232
+ * professional allocated to another unit cannot be named from this one.
233
+ * Without this flag, "no name" and "no performer" render the same screen —
234
+ * and the second is a false claim about the medical record.
235
+ */
236
+ hadPerformer: boolean;
237
+ /** Clinical notes: V1's free text, 176,975 of them in this tenant. */
238
+ notes: string | null;
239
+ /** What this line cost, once it became an order item. */
240
+ price: number | null;
241
+ /** Revision: the session this one revises. */
242
+ revisionOf: string | null;
243
+ products: Array<{
244
+ id: string;
245
+ name: string;
246
+ quantity: number | null;
247
+ unit: string | null;
248
+ /** Recipe standard — V1 shows "Padrão: 1 SR" beside it. */
249
+ standard: number | null;
250
+ audited: boolean;
251
+ }>;
252
+ }
253
+ /**
254
+ * One service, summed across everything this person ever bought of it.
255
+ *
256
+ * V1 shows this as its own tab because it answers what a chronological list
257
+ * cannot: the balance. "Sculptra: 3 bought, 2 done, 1 left" is a sentence the
258
+ * front desk says every day, and it was nowhere on screen.
259
+ */
260
+ export interface PersonServiceBalance {
261
+ serviceId: string | null;
262
+ serviceName: string;
263
+ /** Sessions in any state — bought, scheduled, in service or done. */
264
+ total: number;
265
+ executed: number;
266
+ /** Paid or contracted and still waiting for a day. V1 calls it *a executar*. */
267
+ pending: number;
268
+ /** Revisions of this service (`parent_session_id`), counted apart. */
269
+ revisions: number;
270
+ /** Most recent execution, ISO. Null when nothing was executed yet. */
271
+ lastExecutedAt: string | null;
272
+ }
132
273
  /** Available time slot */
133
274
  export interface TimeSlot {
134
275
  start: string;
@@ -188,6 +329,8 @@ export interface CreateBookingInput {
188
329
  clientId: string;
189
330
  professionalId: string;
190
331
  locationId?: string;
332
+ /** A sala — ver `CalendarBooking.resourceId`. */
333
+ resourceId?: string | null;
191
334
  startsAt: string;
192
335
  notes?: string;
193
336
  /** Free-text event title for simple events (no client party). Maps to the
@@ -224,6 +367,7 @@ export interface UpdateBookingInput {
224
367
  clientId?: string;
225
368
  professionalId?: string;
226
369
  locationId?: string;
370
+ resourceId?: string | null;
227
371
  startsAt?: string;
228
372
  endsAt?: string;
229
373
  status?: BookingStatus;
@@ -262,6 +406,24 @@ export interface ConflictCheckParams {
262
406
  endsAt: string;
263
407
  excludeBookingId?: string;
264
408
  }
409
+ /**
410
+ * A SALA TAMBÉM É FINITA.
411
+ *
412
+ * O conflito de horário só olhava o profissional. Com a sala escolhível, dois
413
+ * atendimentos passam a poder ser mandados para a mesma maca no mesmo horário —
414
+ * e numa clínica de três salas isso não é raro, é terça-feira. A colisão só
415
+ * aparece quando as duas clientes estão na porta.
416
+ *
417
+ * Pergunta separada da do profissional, e não um booleano só, porque o aviso
418
+ * precisa dizer QUAL das duas coisas está ocupada: "a Natasha já tem
419
+ * compromisso" e "a Sala 1 já está ocupada" levam a decisões diferentes.
420
+ */
421
+ export interface ResourceConflictParams {
422
+ resourceId: string;
423
+ startsAt: string;
424
+ endsAt: string;
425
+ excludeBookingId?: string;
426
+ }
265
427
  export interface AvailableSlotsParams {
266
428
  assigneeId: string;
267
429
  date: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,19 @@ import type { StoreApi } from 'zustand/vanilla';
3
3
  import type { ResolvedAgendaConfig } from '../config';
4
4
  import type { AgendaDataProvider } from '../data/types';
5
5
  import type { AgendaUIState } from '../store';
6
- export declare function AgendaPage({ config, provider, store }: {
6
+ export declare function AgendaPage({ config, provider, store, children }: {
7
7
  config: ResolvedAgendaConfig;
8
8
  provider: AgendaDataProvider;
9
9
  store: StoreApi<AgendaUIState>;
10
+ /**
11
+ * A tela que vai DENTRO do módulo. Padrão: o calendário.
12
+ *
13
+ * Confirmações é uma tela da agenda com rota própria, e montá-la crua — só
14
+ * `<ConfirmationsView />` na rota — a punha fora deste provider: ela quebrava
15
+ * na primeira linha com "useConfig must be used within AgendaPage", e o
16
+ * shell trocava a tela pelo cartão de erro. Uma tela do módulo entra pela
17
+ * porta do módulo.
18
+ */
19
+ children?: React.ReactNode;
10
20
  }): React.JSX.Element;
11
21
  //# sourceMappingURL=AgendaPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgendaPage.d.ts","sourceRoot":"","sources":["../../src/views/AgendaPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAQ7C,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;IACtD,MAAM,EAAE,oBAAoB,CAAA;IAC5B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;CAC/B,qBAcA"}
1
+ {"version":3,"file":"AgendaPage.d.ts","sourceRoot":"","sources":["../../src/views/AgendaPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAQ7C,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAChE,MAAM,EAAE,oBAAoB,CAAA;IAC5B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IAC9B;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,qBAkBA"}
@@ -1,19 +1,3 @@
1
1
  import React from 'react';
2
- /**
3
- * "ADRIANA SILVA MOREIRA" → "Adriana M."
4
- *
5
- * O cabeçalho de uma coluna de agenda tem cerca de cem pixels e o nome completo
6
- * de um profissional brasileiro tem quatro palavras. Truncar por CSS corta no
7
- * meio da primeira ("Adriellen Cristi…") e joga fora justamente o sobrenome, que
8
- * é o que distingue duas Adrianas.
9
- *
10
- * Primeiro nome + inicial do último sobrenome preserva as duas metades que
11
- * identificam alguém. O nome inteiro continua no `title` do elemento e no link
12
- * da ficha — abreviar é uma decisão de LARGURA, não de conteúdo.
13
- *
14
- * O caixa-alta do cadastro vira caixa de nome: a fonte grita porque o V1
15
- * gritava, e um cabeçalho inteiro em maiúsculas ocupa mais espaço e lê pior.
16
- */
17
- export declare function abbreviateName(full: string): string;
18
2
  export declare function CalendarView(): React.JSX.Element;
19
3
  //# sourceMappingURL=CalendarView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarView.d.ts","sourceRoot":"","sources":["../../src/views/CalendarView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6E,MAAM,OAAO,CAAA;AA+OjG;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYnD;AAqFD,wBAAgB,YAAY,sBAi+B3B"}
1
+ {"version":3,"file":"CalendarView.d.ts","sourceRoot":"","sources":["../../src/views/CalendarView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6E,MAAM,OAAO,CAAA;AAiYjG,wBAAgB,YAAY,sBAi2D3B"}
@@ -5,9 +5,11 @@ export interface CheckinViewProps {
5
5
  * corrige um horário ou troca o profissional sem sair da fila. O host decide
6
6
  * COMO abrir porque o formulário de agendamento é da tela de agenda. */
7
7
  onOpenBooking?: (booking: CalendarBooking) => void;
8
+ /** Para onde vai o "Iniciar atendimento". Sem isto, a rota própria da régua. */
9
+ onOpenAttendance?: (bookingId: string) => void;
8
10
  /** Abre o recebimento para esta reserva. O host decide COMO — modal do
9
11
  * financeiro, ficha do pedido — porque quem tem o modal é ele. */
10
12
  onReceive?: (booking: CalendarBooking) => void;
11
13
  }
12
- export declare function CheckinView({ onReceive, onOpenBooking }: CheckinViewProps): React.JSX.Element;
14
+ export declare function CheckinView({ onReceive, onOpenBooking, onOpenAttendance }: CheckinViewProps): React.JSX.Element;
13
15
  //# sourceMappingURL=CheckinView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CheckinView.d.ts","sourceRoot":"","sources":["../../src/views/CheckinView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAgE/C,MAAM,WAAW,gBAAgB;IAC/B;;6EAEyE;IACzE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAA;IAClD;uEACmE;IACnE,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAA;CAC/C;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,gBAAgB,qBAkWzE"}
1
+ {"version":3,"file":"CheckinView.d.ts","sourceRoot":"","sources":["../../src/views/CheckinView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAezB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AA2E/C,MAAM,WAAW,gBAAgB;IAC/B;;6EAEyE;IACzE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAA;IAClD,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C;uEACmE;IACnE,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAA;CAC/C;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,gBAAgB,qBAsuB3F"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmationsView.d.ts","sourceRoot":"","sources":["../../src/views/ConfirmationsView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAA;AAiCxC,wBAAgB,iBAAiB,sBAyHhC"}
1
+ {"version":3,"file":"ConfirmationsView.d.ts","sourceRoot":"","sources":["../../src/views/ConfirmationsView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAA;AAgJnE,wBAAgB,iBAAiB,sBAkZhC"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "status": "beta",
5
5
  "dependencies": []
6
6
  },
7
- "version": "0.16.1",
7
+ "version": "0.18.0",
8
8
  "description": "Fayz SDK — plugin-agenda plugin",
9
9
  "type": "module",
10
10
  "sideEffects": [
@@ -35,17 +35,18 @@
35
35
  "dependencies": {
36
36
  "@fullcalendar/core": "^6.1.20",
37
37
  "@fullcalendar/daygrid": "^6.1.20",
38
- "@fullcalendar/timegrid": "^6.1.20",
39
- "@fullcalendar/react": "^6.1.20",
40
38
  "@fullcalendar/interaction": "^6.1.20",
39
+ "@fullcalendar/list": "^6.1.0",
40
+ "@fullcalendar/react": "^6.1.20",
41
41
  "@fullcalendar/resource": "^6.1.0",
42
- "@tanstack/react-table": "^8.20.0",
43
42
  "@fullcalendar/resource-timegrid": "^6.1.0",
44
- "@fullcalendar/list": "^6.1.0",
45
- "@fayz-ai/core": "^0.28.0",
46
- "@fayz-ai/ui": "^0.28.0",
47
- "@fayz-ai/admin": "^0.29.0",
48
- "@fayz-ai/plugin-financial": "^0.14.11"
43
+ "@fullcalendar/timegrid": "^6.1.20",
44
+ "@tanstack/react-table": "^8.20.0",
45
+ "@fayz-ai/admin": "^0.30.0",
46
+ "@fayz-ai/core": "^0.30.0",
47
+ "@fayz-ai/plugin-financial": "^0.15.0",
48
+ "@fayz-ai/plugin-forms": "^0.11.0",
49
+ "@fayz-ai/ui": "^0.30.0"
49
50
  },
50
51
  "devDependencies": {
51
52
  "@types/react": "^18.3.0",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/data/mock.ts","../src/public/data/supabase.ts"],"names":[],"mappings":"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","file":"chunk-PDYBAVXU.js","sourcesContent":["import type { AgendaDataProvider } from './types'\nimport type {\n CalendarBooking, Professional, Schedule, TimeSlot,\n CreateBookingInput, UpdateBookingInput, SaveScheduleInput,\n BookingQuery, ConflictCheckParams, AvailableSlotsParams, BookingStatus, ProfessionalQuery,\n} from '../types'\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nlet nextId = 1\nfunction uid(): string { return `mock-${nextId++}` }\nfunction now(): string { return new Date().toISOString() }\n\nfunction addMinutes(date: string, minutes: number): string {\n const d = new Date(date)\n d.setMinutes(d.getMinutes() + minutes)\n return d.toISOString()\n}\n\nfunction timeOverlaps(aStart: string, aEnd: string, bStart: string, bEnd: string): boolean {\n return aStart < bEnd && aEnd > bStart\n}\n\n// ---------------------------------------------------------------------------\n// Sample data\n// ---------------------------------------------------------------------------\n\nconst SAMPLE_PROFESSIONALS: Professional[] = [\n { id: 'prof-1', name: 'Ana Silva', avatarUrl: null, locationId: 'loc-1', locationName: 'Main Branch', isActive: true },\n { id: 'prof-2', name: 'Carlos Santos', avatarUrl: null, locationId: 'loc-1', locationName: 'Main Branch', isActive: true },\n { id: 'prof-3', name: 'Maria Oliveira', avatarUrl: null, locationId: 'loc-1', locationName: 'Main Branch', isActive: true },\n]\n\nfunction createSampleBookings(): CalendarBooking[] {\n const today = new Date()\n const year = today.getFullYear()\n const month = today.getMonth()\n const day = today.getDate()\n\n function dt(hour: number, minute = 0): string {\n return new Date(year, month, day, hour, minute).toISOString()\n }\n\n return [\n {\n id: 'bk-1', tenantId: 'mock', kind: 'appointment',\n startsAt: dt(9, 0), endsAt: dt(10, 30), status: 'confirmed',\n notes: null, orderId: 'ord-1', locationId: 'loc-1', metadata: {},\n clientId: 'cl-1', clientName: 'Sarah Johnson', clientPhone: '(11) 99999-1111', clientEmail: 'sarah@email.com', clientAvatarUrl: null,\n professionalId: 'prof-1', professionalName: 'Ana Silva', professionalAvatarUrl: null,\n locationName: 'Main Branch', orderTotal: 250, orderStatus: 'draft',\n services: [{ id: 'bi-1', serviceId: 'svc-1', name: 'Balayage', durationMinutes: 90, price: 250, assigneeId: 'prof-1' }],\n totalDurationMinutes: 90, createdAt: now(), updatedAt: now(),\n },\n {\n id: 'bk-2', tenantId: 'mock', kind: 'appointment',\n startsAt: dt(10, 0), endsAt: dt(11, 0), status: 'scheduled',\n notes: null, orderId: 'ord-2', locationId: 'loc-1', metadata: {},\n clientId: 'cl-2', clientName: 'Emily Carter', clientPhone: '(11) 99999-2222', clientEmail: 'emily@email.com', clientAvatarUrl: null,\n professionalId: 'prof-2', professionalName: 'Carlos Santos', professionalAvatarUrl: null,\n locationName: 'Main Branch', orderTotal: 80, orderStatus: 'draft',\n services: [{ id: 'bi-2', serviceId: 'svc-2', name: 'Haircut', durationMinutes: 60, price: 80, assigneeId: 'prof-2' }],\n totalDurationMinutes: 60, createdAt: now(), updatedAt: now(),\n },\n {\n id: 'bk-3', tenantId: 'mock', kind: 'appointment',\n startsAt: dt(14, 0), endsAt: dt(15, 0), status: 'confirmed',\n notes: 'First visit', orderId: 'ord-3', locationId: 'loc-1', metadata: {},\n clientId: 'cl-3', clientName: 'Rachel Kim', clientPhone: '(11) 99999-3333', clientEmail: null, clientAvatarUrl: null,\n professionalId: 'prof-3', professionalName: 'Maria Oliveira', professionalAvatarUrl: null,\n locationName: 'Main Branch', orderTotal: 120, orderStatus: 'draft',\n services: [{ id: 'bi-3', serviceId: 'svc-3', name: 'Facial Treatment', durationMinutes: 60, price: 120, assigneeId: 'prof-3' }],\n totalDurationMinutes: 60, createdAt: now(), updatedAt: now(),\n },\n {\n id: 'bk-4', tenantId: 'mock', kind: 'appointment',\n startsAt: dt(11, 0), endsAt: dt(12, 0), status: 'scheduled',\n notes: null, orderId: 'ord-4', locationId: 'loc-1', metadata: {},\n clientId: 'cl-4', clientName: 'Jessica Lima', clientPhone: '(11) 99999-4444', clientEmail: null, clientAvatarUrl: null,\n professionalId: 'prof-1', professionalName: 'Ana Silva', professionalAvatarUrl: null,\n locationName: 'Main Branch', orderTotal: 60, orderStatus: 'draft',\n services: [{ id: 'bi-4', serviceId: 'svc-4', name: 'Manicure', durationMinutes: 60, price: 60, assigneeId: 'prof-1' }],\n totalDurationMinutes: 60, createdAt: now(), updatedAt: now(),\n },\n {\n id: 'bk-5', tenantId: 'mock', kind: 'appointment',\n startsAt: dt(15, 30), endsAt: dt(17, 0), status: 'confirmed',\n notes: null, orderId: 'ord-5', locationId: 'loc-1', metadata: {},\n clientId: 'cl-5', clientName: 'Amanda Wright', clientPhone: '(11) 99999-5555', clientEmail: 'amanda@email.com', clientAvatarUrl: null,\n professionalId: 'prof-2', professionalName: 'Carlos Santos', professionalAvatarUrl: null,\n locationName: 'Main Branch', orderTotal: 350, orderStatus: 'draft',\n services: [\n { id: 'bi-5', serviceId: 'svc-1', name: 'Highlights', durationMinutes: 60, price: 200, assigneeId: 'prof-2' },\n { id: 'bi-6', serviceId: 'svc-2', name: 'Haircut', durationMinutes: 30, price: 150, assigneeId: 'prof-2' },\n ],\n totalDurationMinutes: 90, createdAt: now(), updatedAt: now(),\n },\n ]\n}\n\nfunction createSampleSchedules(): Schedule[] {\n const schedules: Schedule[] = []\n for (const prof of SAMPLE_PROFESSIONALS) {\n // Mon-Fri 08:00-12:00, 13:00-18:00\n for (let day = 1; day <= 5; day++) {\n schedules.push({\n id: uid(), tenantId: 'mock', kind: 'working_hours',\n assigneeId: prof.id, locationId: prof.locationId,\n dayOfWeek: day, specificDate: null,\n startsAt: '08:00', endsAt: '12:00', isActive: true, metadata: {},\n })\n schedules.push({\n id: uid(), tenantId: 'mock', kind: 'working_hours',\n assigneeId: prof.id, locationId: prof.locationId,\n dayOfWeek: day, specificDate: null,\n startsAt: '13:00', endsAt: '18:00', isActive: true, metadata: {},\n })\n }\n // Saturday 08:00-14:00\n schedules.push({\n id: uid(), tenantId: 'mock', kind: 'working_hours',\n assigneeId: prof.id, locationId: prof.locationId,\n dayOfWeek: 6, specificDate: null,\n startsAt: '08:00', endsAt: '14:00', isActive: true, metadata: {},\n })\n }\n return schedules\n}\n\n// ---------------------------------------------------------------------------\n// Mock provider factory\n// ---------------------------------------------------------------------------\n\n/**\n * Pre-populated agenda data. Any omitted collection falls back to the built-in\n * salon-style sample. Pass `bookings` (and optionally an empty `professionals`)\n * to render a calendar seeded with app-specific events.\n */\nexport interface MockAgendaSeed {\n bookings?: CalendarBooking[]\n professionals?: Professional[]\n schedules?: Schedule[]\n}\n\nexport interface MockAgendaProviderOptions {\n seed?: MockAgendaSeed\n}\n\nexport function createMockAgendaProvider(options?: MockAgendaProviderOptions): AgendaDataProvider {\n const seed = options?.seed\n const bookings: CalendarBooking[] = seed?.bookings ? [...seed.bookings] : createSampleBookings()\n const schedules: Schedule[] = seed?.schedules ? [...seed.schedules] : createSampleSchedules()\n const professionals: Professional[] = seed?.professionals ? [...seed.professionals] : [...SAMPLE_PROFESSIONALS]\n\n return {\n // No push in memory; the view's polling fallback covers it.\n subscribeToBookingChanges() {\n return () => {}\n },\n\n async getLocations(): Promise<Array<{ id: string; name: string }>> {\n return []\n },\n async getBookings(query: BookingQuery): Promise<CalendarBooking[]> {\n return bookings.filter((b) => {\n if (query.kind && b.kind !== query.kind) return false\n if (query.statuses?.length && !query.statuses.includes(b.status)) return false\n if (query.professionalIds?.length && !query.professionalIds.includes(b.professionalId ?? '')) return false\n if (query.locationId && b.locationId !== query.locationId) return false\n if (query.dateRange) {\n if (b.startsAt > query.dateRange.end || (b.endsAt ?? b.startsAt) < query.dateRange.start) return false\n }\n return true\n })\n },\n\n async getBookingById(id: string): Promise<CalendarBooking | null> {\n return bookings.find((b) => b.id === id) ?? null\n },\n\n async createBooking(input: CreateBookingInput): Promise<CalendarBooking> {\n const totalDuration = input.services.reduce((sum, s) => sum + s.durationMinutes, 0)\n const totalPrice = input.services.reduce((sum, s) => sum + s.price, 0)\n const booking: CalendarBooking = {\n id: uid(), tenantId: 'mock', kind: input.kind ?? 'appointment',\n startsAt: input.startsAt, endsAt: addMinutes(input.startsAt, totalDuration || 30),\n status: 'scheduled', notes: input.notes ?? null,\n orderId: input.services.length > 0 ? uid() : null, locationId: input.locationId ?? null, metadata: {},\n clientId: input.clientId, clientName: input.title?.trim() || 'New Client', clientPhone: null, clientEmail: null, clientAvatarUrl: null,\n professionalId: input.professionalId,\n professionalName: professionals.find((p) => p.id === input.professionalId)?.name ?? 'Unknown',\n professionalAvatarUrl: null,\n locationName: null, orderTotal: totalPrice, orderStatus: 'draft',\n services: input.services.map((s) => ({\n id: uid(), serviceId: s.serviceId, name: s.name,\n durationMinutes: s.durationMinutes, price: s.price,\n assigneeId: s.assigneeId ?? input.professionalId,\n })),\n totalDurationMinutes: totalDuration, createdAt: now(), updatedAt: now(),\n }\n bookings.push(booking)\n return booking\n },\n\n async updateBooking(id: string, data: UpdateBookingInput): Promise<CalendarBooking> {\n const idx = bookings.findIndex((b) => b.id === id)\n if (idx === -1) throw new Error('Booking not found')\n const existing = bookings[idx]\n const serviceUpdates: Partial<CalendarBooking> = {}\n if (data.services) {\n serviceUpdates.services = data.services.map((s) => ({\n id: uid(), serviceId: s.serviceId, name: s.name,\n durationMinutes: s.durationMinutes, price: s.price,\n assigneeId: s.assigneeId ?? existing.professionalId ?? '',\n }))\n serviceUpdates.totalDurationMinutes = data.services.reduce((sum, s) => sum + s.durationMinutes, 0)\n serviceUpdates.orderTotal = data.services.reduce((sum, s) => sum + s.price, 0)\n }\n const updated: CalendarBooking = {\n ...existing,\n ...(data.startsAt && { startsAt: data.startsAt }),\n ...(data.endsAt && { endsAt: data.endsAt }),\n ...(data.title !== undefined && { clientName: data.title }),\n ...(data.status && { status: data.status }),\n ...(data.notes !== undefined && { notes: data.notes ?? null }),\n ...(data.professionalId && { professionalId: data.professionalId }),\n ...(data.clientId && { clientId: data.clientId }),\n ...(data.locationId && { locationId: data.locationId }),\n ...serviceUpdates,\n updatedAt: now(),\n }\n bookings[idx] = updated\n return updated\n },\n\n async deleteBooking(id: string): Promise<void> {\n const idx = bookings.findIndex((b) => b.id === id)\n if (idx !== -1) bookings.splice(idx, 1)\n },\n\n async updateBookingStatus(id: string, status: string): Promise<CalendarBooking> {\n const idx = bookings.findIndex((b) => b.id === id)\n if (idx === -1) throw new Error('Booking not found')\n bookings[idx] = { ...bookings[idx], status: status as BookingStatus, updatedAt: now() }\n return bookings[idx]\n },\n\n async checkConflict(params: ConflictCheckParams): Promise<boolean> {\n return bookings.some((b) => {\n if (params.excludeBookingId && b.id === params.excludeBookingId) return false\n if (b.professionalId !== params.assigneeId) return false\n if (b.status === 'cancelled' || b.status === 'no_show') return false\n return timeOverlaps(b.startsAt, b.endsAt ?? b.startsAt, params.startsAt, params.endsAt)\n })\n },\n\n async getAvailableSlots(params: AvailableSlotsParams): Promise<TimeSlot[]> {\n // Parse 'YYYY-MM-DD' as LOCAL midnight (not UTC) so the weekday and the\n // generated slot instants land on the requested calendar day in any tz.\n const [yy, mm, dd] = params.date.split('-').map(Number)\n const date = new Date(yy, (mm ?? 1) - 1, dd ?? 1)\n const dayOfWeek = date.getDay()\n const interval = params.slotInterval ?? 30\n\n // Get working hours for this professional on this day\n const daySchedules = schedules.filter((s) =>\n s.assigneeId === params.assigneeId && s.isActive &&\n (s.dayOfWeek === dayOfWeek || s.specificDate === params.date)\n )\n\n const slots: TimeSlot[] = []\n for (const sched of daySchedules) {\n const [startH, startM] = sched.startsAt.split(':').map(Number)\n const [endH, endM] = sched.endsAt.split(':').map(Number)\n const schedStart = new Date(date); schedStart.setHours(startH, startM, 0, 0)\n const schedEnd = new Date(date); schedEnd.setHours(endH, endM, 0, 0)\n\n let slotStart = new Date(schedStart)\n while (true) {\n const slotEnd = new Date(slotStart.getTime() + params.durationMinutes * 60000)\n if (slotEnd > schedEnd) break\n const startIso = slotStart.toISOString()\n const endIso = slotEnd.toISOString()\n const hasConflict = bookings.some((b) => {\n if (b.professionalId !== params.assigneeId) return false\n if (b.status === 'cancelled' || b.status === 'no_show') return false\n return timeOverlaps(b.startsAt, b.endsAt ?? b.startsAt, startIso, endIso)\n })\n if (!hasConflict) {\n slots.push({ start: startIso, end: endIso })\n }\n slotStart = new Date(slotStart.getTime() + interval * 60000)\n }\n }\n return slots\n },\n\n async getSchedules(professionalId?: string): Promise<Schedule[]> {\n if (professionalId) return schedules.filter((s) => s.assigneeId === professionalId)\n return [...schedules]\n },\n\n async saveSchedule(input: SaveScheduleInput): Promise<Schedule> {\n const schedule: Schedule = {\n id: uid(), tenantId: 'mock', kind: 'working_hours',\n assigneeId: input.assigneeId, locationId: input.locationId ?? null,\n dayOfWeek: input.dayOfWeek ?? null, specificDate: input.specificDate ?? null,\n startsAt: input.startsAt, endsAt: input.endsAt,\n isActive: input.isActive !== false, metadata: input.metadata ?? {},\n }\n schedules.push(schedule)\n return schedule\n },\n\n async deleteSchedule(id: string): Promise<void> {\n const idx = schedules.findIndex((s) => s.id === id)\n if (idx !== -1) schedules.splice(idx, 1)\n },\n\n async getProfessionals(query?: ProfessionalQuery): Promise<Professional[]> {\n const term = query?.search?.trim().toLowerCase()\n const rows = term\n ? professionals.filter((p) => p.name.toLowerCase().includes(term))\n : [...professionals]\n return query?.limit ? rows.slice(0, query.limit) : rows\n },\n\n async getConfirmationsPending(daysAhead = 2): Promise<CalendarBooking[]> {\n const cutoff = new Date()\n cutoff.setDate(cutoff.getDate() + daysAhead)\n return bookings.filter((b) =>\n b.status === 'scheduled' && new Date(b.startsAt) <= cutoff && new Date(b.startsAt) >= new Date()\n )\n },\n\n async sendConfirmation(bookingId: string, channel: string): Promise<void> {\n const booking = bookings.find((b) => b.id === bookingId)\n if (!booking) throw new Error('Booking not found')\n const confirmations = (booking.metadata.confirmations as any[] ?? [])\n confirmations.push({ channel, sentAt: now(), status: 'sent' })\n booking.metadata = { ...booking.metadata, confirmations }\n },\n\n async completeBooking(bookingId: string): Promise<{ booking: CalendarBooking; orderId: string }> {\n const idx = bookings.findIndex((b) => b.id === bookingId)\n if (idx === -1) throw new Error('Booking not found')\n bookings[idx] = { ...bookings[idx], status: 'completed', updatedAt: now() }\n return { booking: bookings[idx], orderId: bookings[idx].orderId ?? '' }\n },\n }\n}\n","// ---------------------------------------------------------------------------\n// Supabase implementation of PublicBookingDataProvider — anon-safe.\n//\n// Public booking pages run with the publishable (anon) key and NO user session,\n// so the canonical tenant RLS (`tenant_id IN user_tenant_ids()`) yields nothing.\n// This provider therefore only touches objects designed for anon access:\n// - public.v_public_services (column-whitelisted view of active services)\n// - public.get_available_slots (SECURITY DEFINER RPC, mirrors the mock algo)\n// - public.create_public_booking (SECURITY DEFINER RPC: validates the slot,\n// upserts the customer person, writes order+booking+order_item atomically)\n// Shipped by plugins/plugin-agenda/src/migrations/001_public_booking.sql.\n// ---------------------------------------------------------------------------\n\nimport { getSupabaseClientOptional } from '@fayz-ai/core'\nimport type { TimeSlot } from '../../types'\nimport type { PublicService } from '../types'\nimport type { PublicBookingDataProvider } from './index'\n\nexport interface SupabasePublicBookingOptions {\n /** The tenant this public page books against (RPC arg — required). */\n tenantId: string\n}\n\ninterface SupabaseLikeClient {\n from(table: string): any\n rpc(fn: string, args: Record<string, unknown>): PromiseLike<{ data: unknown; error: { message: string } | null }>\n}\n\nfunction getClient(): SupabaseLikeClient {\n const client = getSupabaseClientOptional()\n if (!client) throw new Error('No Supabase client registered — call setGlobalSupabaseClient() at app startup.')\n return client as SupabaseLikeClient\n}\n\n/** Digits-only phone (RPC normalizes again server-side; keep the dial code). */\nfunction toPhoneDigits(phone: string | undefined): string {\n return (phone ?? '').replace(/\\D/g, '')\n}\n\nexport function createSupabasePublicBookingProvider(options: SupabasePublicBookingOptions): PublicBookingDataProvider {\n const { tenantId } = options\n\n return {\n async getServices(): Promise<PublicService[]> {\n const { data, error } = await getClient()\n .from('v_public_services')\n .select('id, name, description, price, currency, duration_minutes, sort_order')\n .eq('tenant_id', tenantId)\n .order('sort_order', { ascending: true })\n if (error) throw new Error(`[plugin-agenda/public] getServices: ${error.message}`)\n return ((data ?? []) as Array<Record<string, unknown>>).map((row) => ({\n id: String(row.id),\n name: String(row.name),\n description: (row.description as string | null) ?? undefined,\n price: Number(row.price ?? 0),\n durationMinutes: Number(row.duration_minutes ?? 30),\n }))\n },\n\n async getAvailableSlots(query): Promise<TimeSlot[]> {\n const { data, error } = await getClient().rpc('get_available_slots', {\n p_tenant_id: tenantId,\n p_assignee_id: query.assigneeId,\n p_date: query.date,\n p_duration_minutes: query.durationMinutes,\n p_slot_interval: query.slotInterval,\n })\n if (error) throw new Error(`[plugin-agenda/public] getAvailableSlots: ${error.message}`)\n return ((data ?? []) as Array<{ slot_start: string; slot_end: string }>).map((row) => ({\n start: row.slot_start,\n end: row.slot_end,\n }))\n },\n\n async createBooking(input) {\n const phone = toPhoneDigits(input.contact.phone)\n const { data, error } = await getClient().rpc('create_public_booking', {\n p_tenant_id: tenantId,\n p_service_id: input.serviceId,\n p_starts_at: input.startsAt,\n p_name: input.contact.name.trim(),\n p_phone: phone,\n p_email: input.contact.email?.trim() || null,\n p_notes: input.contact.notes?.trim() || null,\n // Only sent when pinned — keeps compatibility with pools still running\n // the pre-004 7-arg function (unknown named arg would 404 on PostgREST).\n ...(input.assigneeId ? { p_assignee_id: input.assigneeId } : {}),\n })\n if (error) throw new Error(`[plugin-agenda/public] createBooking: ${error.message}`)\n const row = (Array.isArray(data) ? data[0] : data) as\n | { booking_id: string; starts_at: string; ends_at: string }\n | undefined\n if (!row) throw new Error('[plugin-agenda/public] createBooking: empty RPC response')\n return { bookingId: row.booking_id, startsAt: row.starts_at, endsAt: row.ends_at }\n },\n }\n}\n"]}