Reporting helpers for queue and job observability.
Initial implementation scans in-memory Mnesia tables — suitable for
development and moderate job volumes. See performance notes in
docs/reporting.md.
Examples
{:ok, queues} = Kathikon.Report.queue_summary()
{:ok, counts} = Kathikon.Report.job_counts()
{:ok, %{count: n}} = Kathikon.Report.dead_letter_summary()
Summary
Functions
Groups jobs by state and returns a count map.
Summarizes dead-letter queue jobs.
Summarizes failures by worker module.
Returns global job counts grouped by state.
Returns average runtime for completed jobs (microseconds).
Summarizes each configured queue with job counts by state.
Returns completed job counts per queue (throughput proxy).
Functions
@spec count_by_state([Kathikon.Job.t()]) :: %{required(atom()) => non_neg_integer()}
Groups jobs by state and returns a count map.
Used by reporting helpers and available for custom dashboards.
Summarizes dead-letter queue jobs.
Options
:queue— filter by queue
Examples
{:ok, %{count: count, jobs: jobs}} = Kathikon.Report.dead_letter_summary()
Summarizes failures by worker module.
Examples
{:ok, summary} = Kathikon.Report.failure_summary()
hd(summary)
#=> %{worker: MyApp.FailWorker, count: 3, last_error: "..."}
Returns global job counts grouped by state.
Examples
{:ok, counts} = Kathikon.Report.job_counts()
counts[:completed]
Returns average runtime for completed jobs (microseconds).
Examples
{:ok, %{samples: n, average_microseconds: avg}} = Kathikon.Report.latency()
Summarizes each configured queue with job counts by state.
Options are reserved for future filtering and are currently ignored.
Examples
{:ok, summaries} = Kathikon.Report.queue_summary()
hd(summaries)
#=> %{queue: :default, paused: false, counts: %{available: 2, completed: 10}}
Returns completed job counts per queue (throughput proxy).
Examples
{:ok, throughput} = Kathikon.Report.throughput()
#=> [%{queue: :default, completed: 42}]