feat(gui): sidebar sections + non-technical tool labels

Sidebar nav now groups tools under Data Review / Data Cleaners /
Transformations / Automations via st.navigation, replacing the flat
auto-discovered list. Tool display names switch to action-first
phrasing (Find Duplicates, Fix Missing Values, Find Unusual Values,
Standardize Formats, Clean Text, Quality Check, Map Columns, Combine
Files, Automated Workflows) in EN + ES packs and on each page's H1.

The Data Cleaners section follows the requested order: Missing
Values → Outliers → Text Cleaner → Format Standardizer → Deduplicator
→ Quality Check. (Text Cleaner kept inside cleaners since the request
didn't list it but the tool still ships.) Registry now carries a
section field; helpers added: tools_in_section(), section_label().

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-16 19:36:01 +00:00
parent 624f99653e
commit 93e43fc0d9
19 changed files with 356 additions and 199 deletions

View File

@@ -53,17 +53,17 @@ PAGE_SLUGS = [
# When a page gains real Spanish translation, flip its 'es' entry to
# the localized substring — the test surface stays the same.
EXPECTED_SUBSTRINGS: dict[str, dict[str, str]] = {
"0_Review": {"en": "Review", "es": "Review"},
"1_Deduplicator": {"en": "Deduplicator", "es": "Deduplicator"},
"2_Text_Cleaner": {"en": "Text Cleaner", "es": "Text Cleaner"},
"3_Format_Standardizer": {"en": "Format", "es": "Format"},
"4_Missing_Values": {"en": "Missing", "es": "Missing"},
"5_Column_Mapper": {"en": "Column", "es": "Column"},
"6_Outlier_Detector": {"en": "Outlier", "es": "Outlier"},
"7_Multi_File_Merger": {"en": "Merger", "es": "Merger"},
"8_Validator_Reporter": {"en": "Validator", "es": "Validator"},
"9_Pipeline_Runner": {"en": "Pipeline", "es": "Pipeline"},
"99_Close": {"en": "Close DataTools", "es": "Cerrar DataTools"},
"0_Review": {"en": "Review", "es": "Review"},
"1_Deduplicator": {"en": "Find Duplicates", "es": "Find Duplicates"},
"2_Text_Cleaner": {"en": "Clean Text", "es": "Clean Text"},
"3_Format_Standardizer": {"en": "Standardize", "es": "Standardize"},
"4_Missing_Values": {"en": "Fix Missing", "es": "Fix Missing"},
"5_Column_Mapper": {"en": "Map Columns", "es": "Map Columns"},
"6_Outlier_Detector": {"en": "Unusual", "es": "Unusual"},
"7_Multi_File_Merger": {"en": "Combine Files", "es": "Combine Files"},
"8_Validator_Reporter": {"en": "Quality Check", "es": "Quality Check"},
"9_Pipeline_Runner": {"en": "Automated", "es": "Automated"},
"99_Close": {"en": "Close DataTools", "es": "Cerrar DataTools"},
}
@@ -95,7 +95,7 @@ class TestHomePageRenders:
with_language(home_app, "es")
home_app.run()
text = collected_text(home_app)
assert "Eliminador de duplicados" in text
assert "Buscar duplicados" in text
class TestEveryPageRenders: