Fix business compare history, search, sampling and exports

This commit is contained in:
oliver 2026-10-10 23:20:50 +08:00
parent afa8e06b2d
commit 4d5101ec3a
19 changed files with 1598 additions and 274 deletions

View file

@ -474,6 +474,10 @@ const en = {
sideAfter: "After",
sidesVs: "vs",
sidesTitle: "Compare sides",
configSnapshot: "Execution settings saved",
configSnapshotHint: "Template rules and port mapping are fixed for this run. Later edits do not affect historical lookup. The downloaded report includes the execution settings.",
configLegacy: "Legacy run: settings not saved",
configLegacyHint: "This run has no configuration snapshot. Success lookup and compact row reconstruction use the current settings, which may differ from the original execution.",
pick: "Select…",
sameAsBefore: "Same as before / select…",
autoHint: "auto: new after-task batches trigger compare",
@ -532,8 +536,14 @@ const en = {
ranWithDuration: "Compare finished ({{s}}s)",
unchangedNotStored: "Success rows were counted but not stored. Set “Store success rows” to sample and re-run for spot-check.",
unchangedSampleHint: "{{total}} success rows total; browsing a stratified sample of {{listed}}. Search any route for live source lookup. Pass rate uses all {{total}}.",
liveSearchHint: "Field filters look up source batches live; tabs only filter kind. E.g. direction=out, network=1.1.1.1.",
liveSearchTruncatedHint: "Search results truncated — narrow the field filters.",
liveSearchHint: "Pairs are completed from source batches before filtering. Pass rate still uses the full sheet.",
liveSearchTruncatedHint: "Search limit reached; some entries are omitted. Narrow the filters. Incomplete key groups were skipped.",
clearSearch: "Clear filters",
resultLoading: "Loading comparison details…",
resultRange: "{{from}}–{{to}} of {{total}}",
resultLoadFailed: "Could not load comparison details",
retry: "Retry",
searchEmpty: "No results match these filters. Clear filters or select another result type.",
clearKeyFilters: "Clear fields",
storeUnchanged: "Store success rows",
storeUnchangedAuto: "Auto (full if small / sample 5k + hydrate if large)",
@ -567,8 +577,6 @@ const en = {
pickBatchRun: "Select compare run",
pickRun: "Select run…",
runCount: "{{n}} runs",
resultEmpty: "No matching diff rows",
resultFilterPh: "Free text, or direction:out network:1.1.1.1",
kindAll: "All",
kindDiff: "Fail",
kindAdded: "Added",
@ -712,7 +720,6 @@ const en = {
newBaseline: "New baseline batch",
needProjectFields: "Enter a name and pick old/new portrait tasks",
needExpectPorts: "Select at least one expected object for this batch",
needBaselineFirst: "Save an old baseline batch first to list expect objects",
needBothBaselines: "Save both old and new baseline batches before evaluating",
errOldBaselineRequired: "Old baseline batch is required",
errNewBaselineRequired: "New baseline batch is required",