Task Scheduler
Duas surfaces complementares: um scheduler in-app para jobs one-off (Ctrl+Alt+S) e um scheduler OS-level que registra entries cron / launchd / Windows Task Scheduler com o helper `nbcli` bundled (Ctrl+Alt+Shift+K).
O que é
Agende chores DBA recorrentes — mongodump, mongoexport, shell scripts custom — a partir da UI do NoSqlStudio. O scheduler in-app roda enquanto o app está aberto; o scheduler OS entrega o job para o scheduler nativo do seu sistema operacional para que rode mesmo quando o app está fechado.
Quando usar
Use o scheduler in-app para runs one-off / dev-time. Use o scheduler OS para backups grau produção, exports recorrentes para S3, jobs semanais de mask-and-refresh, ou qualquer coisa que precise sobreviver a um reboot da workstation.
Como abrir
- Jobs in-app — abra Tools menu → Tasks Scheduler, ou pressione Ctrl+Alt+S.
- Jobs OS — abra Tools menu → OS Task Scheduler, ou pressione Ctrl+Alt+Shift+K.
- Cada um abre uma tab de workspace com uma lista de tasks registradas + um botão New Task.
Construindo uma task OS
- Escolha um tipo de task: mongodump, mongoexport, shell script, ou um dos templates predefinidos (mask-and-copy, schema-diff-report, audit-export).
- Escolha um schedule: hourly / daily / weekly / monthly / expressão cron (ex.: `0 2 * * *` para toda noite às 02:00).
- Escolha janela start / end (opcional). O scheduler OS arma o job só dentro desta janela.
- Preencha os argumentos task-specific (target connection, output directory, filter --collection, etc.). O placeholder `{date}` expande no momento da execução para que cada run escreva um artifact com nome único.
- Clique em Register. NoSqlStudio escreve a entry OS-nativa: no Windows usa `schtasks.exe`, no macOS escreve um `~/Library/LaunchAgents/...plist`, no Linux escreve `~/.config/cron.d/` + um systemd timer se disponível.
O helper `nbcli`
Tasks do scheduler OS chamam `nbcli` (NoSqlStudio CLI), um binário bundled que roda seu job a partir da linha de comando sem precisar da UI. Ele lê seus argumentos via JSON encodado em base64, executa via spawn, escreve suas próprias linhas de audit direto em `userData/AuditLog/audit.jsonl`, e rotaciona seu log sob `userData/OsTaskSchedules/nbcli.log`.
Auditoria
Toda task OS emite linhas de audit `os-task.start` e `os-task.finish` (outcome success / failure). O workspace de log in-app mostra estas ao lado de linhas DataMask / DB Copy — mesma source para investigação forense.
Limitações (v1)
- Scheduler OS requer que `nbcli` esteja no seu PATH (o installer dropa o wrapper no dir do exe do app; bundles `.app` no macOS podem precisar de um symlink). Tools Mongo (`mongodump`, `mongoexport`) também devem estar no PATH ou em `NBCLI_MONGO_TOOLS_DIR`.
- Sync entre máquinas — schedules são locais. Use uma ferramenta de config-management (Chef / Ansible / SCCM) para empurrar templates se você precisa de consistência fleet-wide.
- Notificações de falha usam os mesmos webhooks Alerting. Se você não tem webhooks configurados, falhas caem silenciosamente no audit log.