feat: Site audit and Crawls screens with their MCP tools

- golem15.seo.issues (Site audit): current issues errors first, labels,
  summary and fix columns, filters, P7 issue_details, Check this address
  again, Ignore, Stop ignoring, bulk Ignore, ignored rows badged
- golem15.seo.crawls (Crawls): newest first, P6 crawl_summary with one
  status callout, staging and rendered-comparison lines, stats strip and
  per-kind table; Cancel; a running crawl refuses delete
- Start crawl toolbar action on both, refusing already_running and
  no_site_url; navigation Site audit (gauge) and Crawls (globe)
- routes and MCP tools start/cancel/list/get/delete crawls, list_issues
  with filters (open by default), recheck_url, ignore and unignore
- AdminOperations maps both controllers; toolbar actions get their own
  operation kind
- TestCrawlAdmin, TestCrawlTools, TestIssueKindLabels
This commit is contained in:
Jakub Zych
2026-11-04 15:34:22 +01:00
parent edc03cae4b
commit c4f0b4f94c
32 changed files with 2778 additions and 20 deletions

43
models/issue/columns.yaml Normal file
View File

@@ -0,0 +1,43 @@
# Site audit columns (UI-SPEC C23). severity, kind_cell, summary, source
# and fix_cell are filled by the controller's ListExtendRecords.
columns:
severity:
label: golem15.seo::lang.issues.severity
type: text
sortable: false
kind_cell:
label: golem15.seo::lang.issues.kind
type: text
sortable: false
kind:
label: golem15.seo::lang.issues.kind_code
type: text
sortable: true
invisible: true
url:
label: golem15.seo::lang.issues.url
type: text
searchable: true
sortable: true
summary:
label: golem15.seo::lang.issues.summary
type: text
sortable: false
source:
label: golem15.seo::lang.issues.source
type: text
sortable: true
fix_cell:
label: golem15.seo::lang.issues.fix
type: text
sortable: false
found_at:
label: golem15.seo::lang.issues.found
type: datetime
sortable: true
invisible: true
locale:
label: golem15.seo::lang.issues.locale
type: text
sortable: true
invisible: true

33
models/issue/fields.yaml Normal file
View File

@@ -0,0 +1,33 @@
# Issue preview (UI-SPEC C23): every field is read-only.
fields:
url:
label: golem15.seo::lang.issues.url
type: text
span: full
context: preview
kind:
label: golem15.seo::lang.issues.kind
type: dropdown
span: left
context: preview
severity:
label: golem15.seo::lang.issues.severity
type: dropdown
span: right
context: preview
source:
label: golem15.seo::lang.issues.source
type: dropdown
span: left
context: preview
found_at:
label: golem15.seo::lang.issues.found
type: datepicker
mode: datetime
span: right
context: preview
locale:
label: golem15.seo::lang.issues.locale
type: text
span: left
context: preview