fix: localize the primary data-quality evidence summary (live-caught on Unraid)
Live validation on the deployed fix branch caught a real bug: every data-quality issue's top-of-page "Evidence summary" line rendered the raw, always-English legacy evidence.summary string unconditionally -- in all three languages -- even though the backend has been emitting structured, localizable evidence.signals for a while (app/services/data_quality.py already documented this exact intent). The frontend side of that conversion was never finished. - DataQualityIssueDetail.tsx now renders evidence.signals through the operator's locale as the primary summary; the raw evidence.summary string is only visible inside "Technical details" (via the existing EvidenceDisclosure JSON dump). - The four DQ-DEMO-* seed rows that anchor the guided demo's scripted scenarios now carry real, accurate signals computed at seed time (duplicate-customer's similarity score is the actual SequenceMatcher ratio on the seeded names, not invented) instead of only a legacy English sentence. - Rows with no structured signals (generic filler seed data) fall back to the raw text rather than showing a blank summary; the one known placeholder string gets its own localized rendering so it never displays as English filler either. - New regression test: the vehicle_status_conflict evidence summary must show localized text and must never contain the specific raw English sentence that was live-visible before this fix, in all 3 languages. 151 backend tests, Ruff, mypy green; full local Playwright suite green (a couple of sequential-run-only flakes, both confirmed to pass in isolation and unrelated to this change). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
cda2c32bd0
commit
2e4fb43f09
@@ -350,3 +350,30 @@ test.describe("route matrix (section 11F)", () => {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
test.describe("data-quality evidence summary is localized, not raw English (section 6)", () => {
|
||||
// The primary evidence line at the top of every issue's detail page must render the
|
||||
// structured `evidence.signals` in the operator's language; the legacy English
|
||||
// `evidence.summary` string is a technical fallback only, visible solely inside
|
||||
// "Technical details". Live-caught: this line was unconditionally showing raw
|
||||
// English ("vehicle marked available while reserved bookings conflict") in every
|
||||
// language until fixed.
|
||||
const cases: { lang: string; expectedText: RegExp }[] = [
|
||||
{ lang: "nl-BE", expectedText: /overlappende reserveringen/i },
|
||||
{ lang: "en-GB", expectedText: /overlapping bookings/i },
|
||||
{ lang: "fr-BE", expectedText: /chevauchent|chevauchement/i },
|
||||
];
|
||||
|
||||
for (const { lang, expectedText } of cases) {
|
||||
test(`vehicle_status_conflict evidence is localized (${lang})`, async ({ page, request }) => {
|
||||
await resetDemoData(request);
|
||||
await loginAsOpsManager(page, lang);
|
||||
await page.goto("/data-quality/DQ-DEMO-STATUS");
|
||||
|
||||
const summarySection = page.locator(".record-surface-evidence");
|
||||
await expect(summarySection).toBeVisible();
|
||||
await expect(summarySection).toContainText(expectedText);
|
||||
await expect(summarySection).not.toContainText("vehicle marked available while reserved bookings conflict");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user