The trail of storage that went wrong, read back for people: every copy found
missing or damaged (storage.copy.damaged) and every repair of a file
(storage.file.repaired), with the file, the library and the bucket each
concerns, so a page can link to all three.
The entries are written by PhoenixKit.Modules.Storage.Audit.log_damage/3 and
log_repair/4 into the Activity log; this module is the reading side. It
filters (:file_uuid, :bucket_uuid, :library_uuid, :kind), pages, and
resolves what each entry points at: a file or bucket that is gone is a name
without a link, and an entry written before library names were recorded finds
its library through the file.
Options of list/1: :file_uuid, :bucket_uuid, :library_uuid, :kind
(:damaged or :repaired), :page (1) and :per_page (25).
Returns %{rows, page, total_pages, total}; a row is
%{uuid, at, kind, actor, file: %{uuid, name, exists?}, library: %{uuid, name, site?},
bucket: %{uuid, name} | nil, rendition, problem, found_by,
actions: [%{rendition, kind, bucket, from}], problems_left}