feat: work on site validation

This commit is contained in:
2026-04-27 14:26:33 +02:00
parent ce3a572a0c
commit 02abd5de1f
6 changed files with 858 additions and 99 deletions

View File

@@ -29,9 +29,18 @@ defmodule BDS.Desktop.ShellLive.MiscEditor do
meta = meta(socket.assigns)
payload = Map.get(meta, :payload, %{})
project_id = Map.get(meta, :project_id, socket.assigns.projects.active_project_id)
sections = Enum.map(Map.get(payload, :sections, []), &String.to_existing_atom/1)
case Generation.apply_validation(project_id, sections) do
report = %{
sitemap_path: Map.get(payload, :sitemap_path),
sitemap_changed: Map.get(payload, :sitemap_changed, false),
missing_url_paths: Map.get(payload, :missing_url_paths, []),
extra_url_paths: Map.get(payload, :extra_url_paths, []),
updated_post_url_paths: Map.get(payload, :updated_post_url_paths, []),
expected_url_count: Map.get(payload, :expected_url_count, 0),
existing_html_url_count: Map.get(payload, :existing_html_url_count, 0)
}
case Generation.apply_validation(project_id, report) do
{:ok, result} ->
{:rerun,
socket
@@ -194,15 +203,19 @@ defmodule BDS.Desktop.ShellLive.MiscEditor do
title: Map.get(meta, :title, translated("Site Validation")),
subtitle: Map.get(meta, :subtitle, ""),
summary: %{
expected: Map.get(summary, :missing_count, 0) + Map.get(summary, :extra_count, 0) + Map.get(summary, :stale_count, 0),
expected: Map.get(summary, :expected_count, 0),
existing: Map.get(summary, :existing_count, 0),
missing: Map.get(summary, :missing_count, 0),
extra: Map.get(summary, :extra_count, 0),
stale: Map.get(summary, :stale_count, 0)
updated: Map.get(summary, :updated_count, 0)
},
missing_pages: Map.get(payload, :missing_pages, []),
extra_pages: Map.get(payload, :extra_pages, []),
stale_pages: Map.get(payload, :stale_pages, []),
sections: Map.get(payload, :sections, [])
sitemap_path: Map.get(payload, :sitemap_path),
sitemap_changed: Map.get(payload, :sitemap_changed, false),
missing_url_paths: Map.get(payload, :missing_url_paths, []),
extra_url_paths: Map.get(payload, :extra_url_paths, []),
updated_post_url_paths: Map.get(payload, :updated_post_url_paths, []),
expected_url_count: Map.get(payload, :expected_url_count, 0),
existing_html_url_count: Map.get(payload, :existing_html_url_count, 0)
}
end

View File

@@ -7,7 +7,7 @@
<div class="misc-editor-actions">
<button class="secondary" type="button" phx-click="rerun_misc_editor"><%= translated("Refresh") %></button>
<%= if @misc_editor.kind == :site_validation do %>
<button class="primary" type="button" phx-click="apply_site_validation" disabled={Enum.empty?(@misc_editor.missing_pages) and Enum.empty?(@misc_editor.extra_pages) and Enum.empty?(@misc_editor.stale_pages)}><%= translated("Apply") %></button>
<button class="primary" type="button" phx-click="apply_site_validation" disabled={Enum.empty?(@misc_editor.missing_url_paths) and Enum.empty?(@misc_editor.extra_url_paths) and Enum.empty?(@misc_editor.updated_post_url_paths)}><%= translated("Apply") %></button>
<% end %>
<%= if @misc_editor.kind == :find_duplicates do %>
<button class="secondary" type="button" phx-click="dismiss_selected_duplicates" disabled={MapSet.size(@misc_editor.selected_pairs) == 0}><%= translated("Dismiss Checked") %></button>
@@ -25,9 +25,9 @@
<%= case @misc_editor.kind do %>
<% :site_validation -> %>
<div class="misc-columns">
<section class="misc-card"><h3><%= translated("Missing URLs") %></h3><%= if Enum.empty?(@misc_editor.missing_pages) do %><p><%= translated("None found") %></p><% end %><ul><%= for path <- @misc_editor.missing_pages do %><li><%= path %></li><% end %></ul></section>
<section class="misc-card"><h3><%= translated("Extra URLs") %></h3><%= if Enum.empty?(@misc_editor.extra_pages) do %><p><%= translated("None found") %></p><% end %><ul><%= for path <- @misc_editor.extra_pages do %><li><%= path %></li><% end %></ul></section>
<section class="misc-card"><h3><%= translated("Updated URLs") %></h3><%= if Enum.empty?(@misc_editor.stale_pages) do %><p><%= translated("None found") %></p><% end %><ul><%= for path <- @misc_editor.stale_pages do %><li><%= path %></li><% end %></ul></section>
<section class="misc-card"><h3><%= translated("Missing URLs") %></h3><%= if Enum.empty?(@misc_editor.missing_url_paths) do %><p><%= translated("None found") %></p><% end %><ul><%= for path <- @misc_editor.missing_url_paths do %><li><%= path %></li><% end %></ul></section>
<section class="misc-card"><h3><%= translated("Extra URLs") %></h3><%= if Enum.empty?(@misc_editor.extra_url_paths) do %><p><%= translated("None found") %></p><% end %><ul><%= for path <- @misc_editor.extra_url_paths do %><li><%= path %></li><% end %></ul></section>
<section class="misc-card"><h3><%= translated("Updated URLs") %></h3><%= if Enum.empty?(@misc_editor.updated_post_url_paths) do %><p><%= translated("None found") %></p><% end %><ul><%= for path <- @misc_editor.updated_post_url_paths do %><li><%= path %></li><% end %></ul></section>
</div>
<% :metadata_diff -> %>