Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .github/workflows/publish-wiki.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Publish wiki

on:
push:
branches: [main, develop]
paths:
- wiki/**
- .github/workflows/publish-wiki.yml

concurrency:
group: publish-wiki
cancel-in-progress: true

permissions:
contents: write

jobs:
publish-wiki:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: Andrew-Chen-Wang/github-wiki-action@v4
with:
# Espelha a pasta wiki/ para a aba Wiki do repositório
path: wiki/
# Converte links .md para o formato wiki e move README.md para Home.md
preprocess: true
# Mensagem de commit opcional
commit-message: "docs(wiki): sync wiki from ${{ github.ref_name }}"
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,3 @@ themes/dcp/mix-manifest.json
.DS_Store
.idea
.env
AGENTS.md
367 changes: 367 additions & 0 deletions AGENTS.md

Large diffs are not rendered by default.

46 changes: 46 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,25 @@ Importe um dump para `compose/local/mariadb/data/` e reinicie os containers (`do
- `template-parts/`: componentes PHP utilizados nas páginas públicas e no dashboard.
- `assets/js`, `assets/scss`: código fonte compilado pelo Laravel Mix definido em `webpack.mix.js`.

### Dashboard
O dashboard é uma área administrativa frontend customizada (`/dashboard/*`), renderizada pelo template `page-dashboard.php`. Ela não utiliza o wp-admin padrão e é voltada para agentes comunitários gerenciarem conteúdo do projeto.

**Autenticação:**
- Role customizada `agente-dcp` (criada em `library/dashboard.php`) com permissões de CRUD sobre riscos.
- Acesso restrito a usuários com `edit_riscos`; não-autenticados são redirecionados para login.
- ⚠️ **Conflito conhecido:** `library/frontend_auth.php` restringe o dashboard a administradores, o que pode impedir que agentes comunitários acessem via formulário frontend.

**Principais rotas:**
- `/dashboard/inicio` — Visão geral com situação atual, novos relatos e riscos pendentes.
- `/dashboard/riscos` — Gestão de riscos (aprovação, publicação, arquivamento) com galeria de mídias.
- `/dashboard/acoes` — Gestão de ações comunitárias (sugestões, agendadas, realizadas).
- `/dashboard/apoio` — Pontos de apoio (locais seguros, caçambas, iniciativas, quem acionar).
- `/dashboard/situacao_atual` — Alerta climático ativo e recomendações de segurança.
- `/dashboard/indicadores` — Estatísticas e gráficos (Chart.js) sobre riscos e ações.

**Operações CRUD:**
Todas as operações de criação, edição e exclusão são feitas via AJAX centralizado em `library/dashboard-ajax.php`. Riscos e ações podem ser criados por usuários anônimos no frontend do site.

### API e integrações
O plugin `dcp-plugin` entrega endpoints públicos para uso em apps e integrações:
- `GET /wp-json/dcp/v1/riscos`: lista riscos com paginação, anexos e metadados.
Expand All @@ -48,6 +67,33 @@ O plugin `dcp-plugin` entrega endpoints públicos para uso em apps e integraçõ
- `GET /wp-json/dcp/v1/situacao-atual-home`: conteúdo dinâmico da home.
Outros endpoints tratam de tarefas de ETL, dashboards e sincronização com Pods. Consulte o arquivo `plugins/dcp-plugin/dcp-plugin.php` para detalhes de parâmetros e cargas.

#### Webhook `situacao-atual` (n8n)
O workflow n8n (`n8n/NOSSAS_DCP___SITUACAO_ATUAL.json`) é executado a cada hora para coletar dados meteorológicos e de estágio de risco e enviá-los ao WordPress.

**Fontes de dados:**
- **Clima:** API HG Brasil (`https://api.hgbrasil.com/weather`), consultando as coordenadas do Rio de Janeiro (`-22.8873378, -43.2559982`). Retorna `temp`, `date`, `time`, `condition_code`, `description`, `currently`, `rain`, `condition_slug`.
- **Estágio:** API da COCR (`https://aplicativo.cocr.com.br/estagio_api`), que retorna o estágio operacional de risco.

**Payload enviado ao WordPress (`multipart/form-data`):**
| Campo | Descrição |
|-------|-----------|
| `temp` | Temperatura atual (°C) |
| `condition_code` | Código numérico da condição climática |
| `description` | Descrição textual do clima |
| `is_rain` | Indicador booleano de chuva |
| `estagio` | Estágio operacional de risco da COCR |
| `date` | Data da leitura |
| `time` | Hora da leitura |
| `currently` | Período do dia (`dia` / `noite`) |
| `condition_slug` | Slug da condição climática |

**Destinos configurados no workflow:**
1. `https://<staging-url>/wp-json/dcp/v1/webhook/situacao-atual/` — ambiente staging
2. `https://defesaclimaticapopular.org/wp-json/dcp/v1/webhook/situacao-atual/` — ambiente de produção
3. `https://<ngrok-local>/wp-json/dcp/v1/webhook/situacao-atual/` — ambiente local (desabilitado)

A autenticação nos ambientes staging e produção utiliza credenciais do tipo `wordpressApi` (WP DCP PROD); o nó local usa `WP_DCP_LOCAL`.

## Deploy
O arquivo `docker-compose.deploy.yml` referencia a imagem `nossas/dcp-wp` e espera os serviços na rede externa `web` (compatível com Traefik). Ajuste as variáveis `WORDPRESS_DB_*`, `GOOGLE_MAPS_API_KEY` e a tag da imagem conforme o ambiente.

Expand Down
Loading
Loading