# Tarefas — Gerenciamento de Clubes (Odonto e Médico)

## Princípio geral
Cada clube (Odonto e Médico) tem configurações **totalmente independentes** para:
- **Valores** — planos e preços
- **Condições** — condições de adesão e cobertura
- **Regras** — regras de uso do clube
- **FAQ / Sanfona** — perguntas e respostas exibidas na página pública

Todos os dados são vinculados por `club_id`, garantindo isolamento completo entre os clubes.

---

## 1. Backend — sistema-nuvem

### 1.1 Endpoints de Planos (Valores)
- [x] `GET    /api/admin/club/plans?club_id=X` — listar planos do clube
- [x] `POST   /api/admin/club/plans` — criar plano
- [x] `PUT    /api/admin/club/plans/:id` — editar plano
- [x] `DELETE /api/admin/club/plans/:id` — remover plano (bloqueia se houver membros ativos)

### 1.2 Tabela e Endpoints de Condições
- [x] Adicionar campo `conditions` (`TEXT`) e `rules` (`TEXT`) na tabela `benefit_clubs`
- [x] `GET /api/clubs/:slug` — retorna o clube com `conditions` e `rules`
- [x] `PUT /api/admin/club/:id/content` — salvar condições e regras do clube

### 1.3 Tabela e Endpoints de FAQ
- [x] Criar tabela `club_faqs` (id, club_id, tenant_id, question, answer, sort_order, active)
- [x] Seed: 4 FAQs padrão criadas para cada clube separadamente
- [x] `GET    /api/clubs/:slug/faqs` — público, usado pelo customer-app
- [x] `GET    /api/admin/club/faqs?club_id=X` — admin
- [x] `POST   /api/admin/club/faqs` — criar FAQ
- [x] `PUT    /api/admin/club/faqs/:id` — editar FAQ
- [x] `DELETE /api/admin/club/faqs/:id` — remover FAQ

---

## 2. Admin App — admin-app/src

### 2.1 ClubService — services/api.ts
- [x] Métodos de planos: `listPlans`, `createPlan`, `updatePlan`, `deletePlan`
- [x] Métodos de conteúdo: `saveContent(clubId, { conditions, rules })`
- [x] Métodos de FAQ: `listFaqs`, `createFaq`, `updateFaq`, `deleteFaq`

### 2.2 ClubPage.tsx — aba "Planos" (Valores)
- [x] Nova aba `plans` (Planos & Preços) no tab bar
- [x] Cards por plano: nome, preço/mês, máx. dependentes, lista de features
- [x] **PlanModal** com campos: Nome, Descrição, Preço mensal, Máx. dependentes, Features dinâmicas
- [x] Botão Novo Plano / Editar / Excluir (com validação de membros ativos)

### 2.3 ClubPage.tsx — aba "Condições & Regras"
- [x] Nova aba `content` (Condições & Regras) no tab bar
- [x] Dois textareas: Condições de Adesão + Regras de Uso
- [x] Pré-visualização em tempo real
- [x] Botão **Salvar** com feedback de sucesso/erro
- [x] Carrega dados atuais do clube via API pública no mount
- [x] Cada clube salva e exibe suas próprias condições e regras

### 2.4 ClubPage.tsx — aba "FAQ / Sanfona"
- [x] Nova aba `faq` (FAQ / Sanfona) no tab bar
- [x] Lista de FAQs com: pergunta, status ativo/inativo, ordem
- [x] Botões ▲ ▼ para reordenar (atualiza sort_order via API)
- [x] **FaqModal** com campos: Pergunta, Resposta, Ordem, Ativo
- [x] Botão Nova FAQ / Editar / Excluir
- [x] Cada clube gerencia seu próprio conjunto de FAQs

---

## 3. Customer App — customer-app/src

### 3.1 ClubAPI — api.ts
- [x] Adicionado `getFaqs(slug)` → `GET /api/clubs/:slug/faqs`
- [x] `get(slug)` já retorna `conditions` e `rules` da tabela

### 3.2 ClubePage.tsx — conteúdo dinâmico
- [x] **FAQs**: removido array hardcoded, busca da API via `getFaqs()`, exibido apenas se houver
- [x] **Condições**: seção exibida condicionalmente (`{club.conditions && ...}`)
- [x] **Regras**: seção exibida condicionalmente (`{club.rules && ...}`)
- [x] Cada clube exibe apenas suas próprias informações

---

## Ordem de implementação — ✅ CONCLUÍDA

1. [x] Backend: alterar `benefit_clubs` — adicionar `conditions` e `rules`
2. [x] Backend: criar tabela `club_faqs` + seed das FAQs atuais
3. [x] Backend: endpoints de planos (admin)
4. [x] Backend: endpoint de conteúdo `PUT /api/admin/club/:id/content`
5. [x] Backend: endpoints de FAQ (admin + público)
6. [x] Admin: ClubService (todos os métodos)
7. [x] Admin: aba Planos + PlanModal
8. [x] Admin: aba Condições & Regras + preview
9. [x] Admin: aba FAQ + FaqModal + reordenação ▲▼
10. [x] Customer: ClubAPI + ClubePage dinâmica
11. [x] Build dos 3 apps ✅
