fix: auto-resolve Gaiia reconciliation insights when issues are fixed
This commit is contained in:
parent
11d976531b
commit
daf66038c6
1 changed files with 35 additions and 0 deletions
|
|
@ -26,11 +26,46 @@ defmodule Towerops.Workers.GaiiaInsightWorker do
|
|||
defp process_reconciliation(organization_id) do
|
||||
result = Reconciliation.reconcile(organization_id)
|
||||
|
||||
# Auto-resolve insights when issues are fixed
|
||||
maybe_dismiss_resolved_insights(organization_id, "untracked", result.untracked_devices)
|
||||
maybe_dismiss_resolved_insights(organization_id, "ghost", result.ghost_devices)
|
||||
maybe_dismiss_resolved_insights(organization_id, "mismatch", result.data_mismatches)
|
||||
|
||||
generate_untracked_insights(organization_id, result.untracked_devices)
|
||||
generate_ghost_insights(organization_id, result.ghost_devices)
|
||||
generate_mismatch_insights(organization_id, result.data_mismatches)
|
||||
end
|
||||
|
||||
defp maybe_dismiss_resolved_insights(organization_id, dedup_key, current_items) do
|
||||
# If the issue is resolved (no items), dismiss any active insights
|
||||
if Enum.empty?(current_items) do
|
||||
import Ecto.Query
|
||||
|
||||
alias Towerops.Preseem.Insight
|
||||
alias Towerops.Repo
|
||||
|
||||
now = DateTime.truncate(DateTime.utc_now(), :second)
|
||||
|
||||
{count, _} =
|
||||
Insight
|
||||
|> where(
|
||||
organization_id: ^organization_id,
|
||||
type: "reconciliation_finding",
|
||||
status: "active"
|
||||
)
|
||||
|> where([i], fragment("?->>'dedup_key' = ?", i.metadata, ^dedup_key))
|
||||
|> Repo.update_all(set: [status: "dismissed", dismissed_at: now])
|
||||
|
||||
if count > 0 do
|
||||
require Logger
|
||||
|
||||
Logger.info(
|
||||
"Auto-dismissed #{count} reconciliation_finding insight(s) for #{dedup_key} in org #{organization_id}"
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
defp generate_untracked_insights(organization_id, untracked_devices) do
|
||||
count = length(untracked_devices)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue