# plugin-agenda

`@fayz-ai/plugin-agenda` · beta · Capability parcial

Every service business runs on a calendar. Salons book stylists, clinics book doctors, studios book rooms — the same primitive, rebuilt badly a thousand times. plugin-agenda is that primitive done once: a resource-aware calendar with appointments, blocks, working hours, conflict detection, and drag-and-drop, all driven by config instead of forks.

## Visão geral

O calendário como primitiva: agendamentos, bloqueios, horários de trabalho, detecção de conflito e drag-and-drop, tudo dirigido por config. O plugin monta a página `/agenda`.

Empacota quatro migrations que sustentam a **reserva pública** e a view-ponte `v_bookings` (renomeação e compatibilidade da view, além de dedupe de telefones). O provider Supabase lê e grava tabelas compartilhadas (`bookings`, `schedules`, `locations`) e a `v_bookings`, com fallback automático para um provider mock (uma agenda de salão de exemplo, semeável pelo app). A config é rica: locais, janelas de reserva, concorrência e seleção de serviços via lookup.

Traz um addon oficial de Google Calendar (`createGoogleCalendarPlugin`) e uma ponte financeira (`createFinancialBridge`) que calcula comissão ao concluir um atendimento. Para IA, expõe `listAppointments`, `createAppointment` e `checkAvailability`. Status **beta / capability parcial**.

## Quando usar

- Qualquer negócio que gira em torno de uma agenda: salões, clínicas, estúdios.
- Precisa de detecção de conflito e visão por recurso ou profissional.
- Quer sincronizar com Google Calendar ou gerar comissão a partir do atendimento.

## Ficha técnica

- **Pacote:** `@fayz-ai/plugin-agenda`
- **Versão:** 0.3.0
- **Status:** beta
- **Capability:** Capability parcial
- **Tipo de produto:** Agendamento
- **Canal stable:** `^0.4.0`
- **Migrations:** 4 migration(s)
- **Factory:** `createAgendaPlugin()`

## Modelo de dados

Sem tabelas próprias — usa a biblioteca core / archetype (mesma regra: `tenant_id` + RLS).

## Tools de IA

| id | modo | descrição |
| --- | --- | --- |
| `agenda.list-appointments` | read | Lists upcoming appointments for a given date or date range, optionally filtered by professional. |
| `agenda.create-appointment` | persist | Creates a new appointment for a client with a specific professional and service. |
| `agenda.check-availability` | read | Checks available time slots for a professional on a given date. |

## Integrações

Conector(es) hospedado(s): `google-calendar`. Veja Integrações.

## Integrar

Adicione o plugin em `surfaces.admin.plugins` do `app.manifest.json` e rode o doctor:

```json
{ "surfaces": { "admin": { "plugins": [ { "id": "agenda", "enabled": true } ] } } }
```

```bash
npx fayz doctor
```
