# Contas viram tarefas — luz e condomínio no seu quadro

Este guia liga o recurso que transforma **contas em aberto** (luz da CELESC e boletos do
condomínio no Winker) em **tarefas** no quadro `/tarefas`, com data de vencimento e link da
2ª via. Quando a conta é **paga**, a tarefa vira **concluída**; se **não** for paga até o
vencimento, ela aparece **atrasada** (em vermelho) sozinha.

> **Em uma frase:** você não precisa mais lembrar de olhar as contas — elas chegam como
> tarefas com prazo, e somem quando pagas.

---

## Antes de começar

Isto reaproveita o que você já tem:

- A **energia (CELESC)** e/ou o **condomínio (Winker)** já configurados e funcionando
  (você vê as contas em `/energia` e os boletos em `/winker/boletos`).
- O **quadro de tarefas** (`/tarefas`) disponível.

Se um dos dois não estiver ligado, tudo bem — o recurso usa o que houver.

---

## Passo 1 — Atualizar o banco

Rode a migração (uma vez), no MariaDB do WAMP:

```
"C:\wamp64\bin\mariadb\mariadb11.4.9\bin\mariadb.exe" -h 127.0.0.1 -P 3307 -u guilherme -p controle_veiculos < "C:\wamp64\www\Nexus\api\database\migration_board_conta.sql"
```

✅ **Deu certo se…** o comando terminar sem erro. (Ele só adiciona 2 colunas ao quadro; é
seguro rodar de novo.)

---

## Passo 2 (opcional, recomendado) — Endereço do sistema

Para o link da **2ª via** dentro da tarefa ficar completo (clicável/copiável), abra o
`api/.env` e preencha o endereço público:

```
APP_URL=https://SEU-DOMINIO
```

✅ **Deu certo se…** ao salvar, o endereço bater com o que você usa pra abrir o Nexus.
Sem isso, o link fica "curto" — mas o **Pix** (luz) e a **linha digitável** (condomínio),
que é o que paga, aparecem na tarefa de qualquer jeito.

---

## Passo 3 — Ligar o trabalhador automático

O recurso roda sozinho por um "trabalhador" (tarefa agendada do Windows) a cada ~6 horas.

1. Menu Iniciar → digite **cmd** → clique com o botão direito em **Prompt de Comando** →
   **Executar como administrador**.
2. Cole e dê Enter:

```
cd C:\wamp64\www\Nexus\api\scripts
install_workers.bat
```

Isso recadastra os trabalhadores (incluindo o novo **auto_contas**) e testa cada um.

3. Para testar na hora, rode uma vez manualmente:

```
"C:\wamp64\bin\php\php8.3.14\php.exe" C:\wamp64\www\Nexus\api\scripts\auto_contas.php
```

(Se a pasta do PHP tiver outra versão, ajuste o número; ou rode `auto_contas.bat`.)

✅ **Deu certo se…** aparecer uma linha como
`auto_contas: {"ok":true,"criadas":2,"concluidas":0,"energia":true,"condominio":true}` e,
em `/tarefas`, surgirem cartões com a etiqueta amarela **Conta** e a data de vencimento.

---

## Passo 4 — Conferir o interruptor

Abra **/tarefas**. No topo há um botão **"Contas → tarefas: Ligado"**. Se estiver
**Desligado**, clique para ligar. (É por aqui que você pausa o recurso quando quiser.)

✅ **Deu certo se…** o botão mostrar **Ligado**.

---

## Como fica no dia a dia

- **Conta nova em aberto** → aparece um cartão na 1ª coluna, com **vencimento**, valor e o
  link da 2ª via + Pix/linha digitável na descrição.
- **Você pagou** → na próxima sincronização (algumas horas) a conta some da lista de abertas
  e o cartão **vai para a última coluna (feito)** sozinho. (Se quiser, pode marcar como
  concluída na hora com o botão ✓ — o cartão não volta.)
- **Não pagou até o vencimento** → o cartão fica **vermelho (atrasado)** automaticamente.
- **Não duplica:** cada conta vira **um** cartão. Se você arquivar ou concluir um cartão de
  conta, ele **não** é recriado.

---

## Deu problema?

- **Não apareceu nenhuma conta.** Confirme que você vê contas em `/energia` (luz) ou boletos
  em `/winker/boletos` (condomínio). Se lá está vazio, aqui também fica. Rode
  `php api/scripts/auto_contas.php` e leia a resposta: `"energia":false` significa que a KV da
  CELESC ainda não tem contas em aberto; `"condominio":false` que o Winker não respondeu.
- **A conta paga não virou "feito".** A energia atualiza 2×/dia (08:00/20:00, worker
  `celesc_sync`); então uma conta paga pode levar até o próximo ciclo para sair. O condomínio
  é lido a cada rodada do `auto_contas` (~6 h).
- **O link da 2ª via está "quebrado".** Preencha o `APP_URL` (Passo 2) e rode o worker de
  novo. Para pagar, use o **Pix** (luz) ou a **linha digitável** (condomínio) que já estão na
  descrição.
- **Quero pausar.** Desligue no botão **"Contas → tarefas"** em `/tarefas`. (Os cartões já
  criados continuam lá; só param de surgir novos.)
- **Não vejo o worker rodando.** Confira no `/diagnostics` (seção "Serviços do sistema") se
  **Contas → tarefas** aparece; se estiver "sem dados", rode o `install_workers.bat` de novo
  como administrador.

---

## Para quem cuida do sistema (resumo técnico)

- Serviço: `App\Services\BillTasks::sync()` (camada App). Energia da KV `celesc_panel`
  (sem chamada externa); condomínio ao vivo via `WinkerClient`. Grava no `board_cartao`
  (colunas `origem`/`origem_chave` para dedup). Reconciliação de "pago" só para a fonte que
  confirmou a lista naquele ciclo.
- Worker: `auto_contas` (~6 h), no `install/uninstall_workers.bat` + `WorkerHealthRepository`.
- Interruptor: KV `configuracao.contas_tarefas` (chip em `/tarefas`). Respeita os módulos
  `celesc`/`winker`. Sem tabela nova (reusa o quadro).

## As contas também viram ALERTAS (aviso no painel + notificação)

Além de virar tarefa, uma conta **vencida** ou **a vencer** aparece em **"O que precisa de
você"** no painel inicial (e no modo tablet / Alexa / voz) e dispara uma **notificação** —
igual à conta de luz. Isso é independente do botão "Contas → tarefas".

- **Energia (luz):** já funcionava (worker `celesc_sync`).
- **Condomínio (Winker):** o worker `auto_contas` agora guarda um resumo dos boletos e
  avisa. "A vencer" acende quando faltam **5 dias** ou menos (ajuste com `WINKER_ALERT_DAYS`
  no `.env`).
- **Quero desligar um desses avisos:** vá em **Regras → Alertas do sistema** e desligue
  *"Conta de condomínio vencida"* ou *"…a vencer"* (ou os de energia). Desligar silencia a
  **notificação**; a conta continua aparecendo na lista e virando tarefa.
- **Resumo técnico:** `App\Services\CondoBills` (App) persiste a KV `winker_contas` +
  dispara alerta (`BuiltinAlerts` `condominio_vencida`/`condominio_avencer`, dedup diário).
  O dashboard/HomeStatus leem a KV (`WinkerRepository::contasResumo`), sem chamar a Winker
  no request. Gate `winker.billing` (só o dono, é dado financeiro).
