"""Джобы: кроны считаются в локальном времени, вебхуки приходят на /hooks/<имя>.""" from __future__ import annotations import os from beaver_gateway.jobs.scheduler import Job from beaver_agent.jobs.closing import close_idle from beaver_agent.jobs.deploy import deploy from beaver_agent.jobs.komodo import komodo_alert from beaver_agent.jobs.leisure import tick from beaver_agent.jobs.memory import curate, memory from beaver_agent.jobs.rotation import rotate from beaver_agent.jobs.t3code import t3code_event from beaver_agent.jobs.vibegram import vibegram from beaver_agent.jobs.voice import rotate_voice LEISURE_OFF = os.environ.get("LEISURE", "").strip().lower() in ("off", "0", "false") """Рубильник досуга в env; повседневный выключатель - строка в `мета/бобер/досуг.md`.""" jobs = [ Job("ротация", rotate, cron="0 * * * *"), # Не на ":00": там ротация, а лежащий в очереди тик держит мастера занятым # (`busy`), и она пропускала бы себя каждый час. *([] if LEISURE_OFF else [Job("досуг", tick, cron="7 * * * *")]), Job("вайбграм", vibegram, cron="*/10 * * * *", critical=False), Job("закрытие", close_idle, cron="20 4 * * *", critical=False), Job("память", memory, cron="30 4 * * 0", critical=False), Job("голосовой", rotate_voice, cron="5 4 * * *", critical=False), Job("куратор", curate, cron="0 2,8,12,16,20 * * *", critical=False), Job("deploy", deploy, webhook=True), Job("komodo", komodo_alert, webhook=True, dedupe=False), Job("t3code", t3code_event, webhook=True, dedupe=False), ] """Алерты и события t3code идут пачками (тревога и отбой подряд) - их не схлопывают."""