feat: upsert stats counters, daily buckets and ETS tops for admin metrics. Refs EventHub/EventHubBack#42 #43 #44 #45 #46
CI / test (push) Failing after 25m40s
CI / deploy-ift (push) Has been skipped
CI / e2e-ift (push) Has been skipped
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped

This commit is contained in:
2026-07-17 23:10:00 +03:00
parent f2445db66c
commit dd754e28cc
20 changed files with 1885 additions and 408 deletions
+8 -15
View File
@@ -141,26 +141,19 @@ delete_ticket(AdminId, TicketId) ->
get_statistics(AdminId) ->
case admin_utils:is_admin(AdminId) of
true ->
All = core_ticket:list_all(),
Open = count_by_status(All, open),
InProgress = count_by_status(All, in_progress),
Resolved = count_by_status(All, resolved),
Closed = count_by_status(All, closed),
TotalErrors = lists:sum([T#ticket.count || T <- All]),
#{
total_tickets => length(All),
open => Open,
in_progress => InProgress,
resolved => Resolved,
closed => Closed,
total_errors => TotalErrors
total_tickets => core_ticket:count_tickets(),
open => core_ticket:count_tickets_by_status(open),
in_progress => core_ticket:count_tickets_by_status(in_progress),
resolved => core_ticket:count_tickets_by_status(resolved),
closed => core_ticket:count_tickets_by_status(closed),
total_errors => core_stats:with_counter(ticket_errors_sum, fun() ->
lists:sum([T#ticket.count || T <- core_ticket:list_all()])
end)
};
false -> {error, access_denied}
end.
count_by_status(Tickets, Status) ->
length([T || T <- Tickets, normalize_status(T#ticket.status) =:= Status]).
normalize_status(Status) when is_atom(Status) -> Status;
normalize_status(Status) when is_binary(Status) ->
try binary_to_existing_atom(Status, utf8)