用途:为 Elixir 项目中的 Oban 后台任务提供快速参考,适用于编写、调度、测试或调试 Oban 任务,包括 how-to 类问题,涉及 worker、cron、重试、唯一任务、队列以及 Oban Pro 的 Workflow/Batch。
主要能力:先检测是否使用 Oban Pro,命令为 grep -E "oban_pro|oban_web" mix.exs、grep -r "use Oban.Pro.Worker" lib/、grep -r "Oban.Pro.Engines.Smart" config/。若检测到 Pro,则新 worker 使用 Pro 模式:use Oban.Pro.Worker、process(%Job{})、Oban.Pro.Testing、Oban.Pro.Engines.Smart。Pro 可选特性包括 args_schema、Workflows、Batches、Chunks、Relay、hooks、encryption、deadlines、chaining、Smart Engine;Pro 插件 DynamicCron、DynamicLifeline、DynamicPruner 可替换 OSS 对应模块,但不要同时运行。
必要用法与铁律:任务必须幂等,支付使用幂等键;参数只存 ID 不存结构体,如 %{user_id: 1};必须处理所有返回值 :ok、{:error, _}、{:cancel, _}、{:snooze, _};参数使用字符串键,模式匹配 %{"user_id" => id};用户操作使用唯一约束防重复;不要在参数中存大块数据。Smart Engine 下不要用 attempt 限制 snooze,应使用 meta["snoozed"]。
测试:use Oban.Testing, repo: MyApp.Repo;assert_enqueued worker: MyApp.Worker, args: %{id: 1};assert :ok = perform_job(MyApp.Worker, %{id: 1})。
限制:资料未提供具体版本、安装命令、收费与平台信息;详细模式见技能目录下 references 文件。