# Requirements Checklist: Dataset Lifecycle Workspace

**Purpose**: Validate completeness of functional and non-functional requirements for the Dataset Lifecycle Workspace feature.
**Created**: 2026-05-19
**Feature**: [spec.md](../spec.md)

## Functional Coverage

- [ ] CHK001 Stats Bar renders 4 metrics (Все, Без маппинга, С маппингом, С дашбордами) in page header
- [ ] CHK002 Each Stats Bar metric is clickable and filters the dataset list accordingly
- [ ] CHK003 Active filter is visually highlighted; clicking again resets filter
- [ ] CHK004 Split-view layout renders with 40% left panel and 60% right panel on desktop
- [ ] CHK005 Right panel shows placeholder "Выберите датасет" when no dataset is selected
- [ ] CHK006 Mobile layout (< 768px) uses full-width list with slide-over for detail panel
- [ ] CHK007 Dataset cards display: table_name, schema, column_count, metric_count, progress bar, quick action buttons
- [ ] CHK008 Progress bar shows color-coded fill: green (100%), yellow (≥50%), blue (<50%)
- [ ] CHK009 Right panel header shows: table_name, schema, column_count, metric_count, linked_dashboard_count, created_on
- [ ] CHK010 Right panel has "Columns" section with table (column_name, verbose_name, type, description, ✏️ inline edit)
- [ ] CHK011 Right panel has "Metrics" section with table (metric_name, expression, verbose_name, description, ✏️ inline edit)
- [ ] CHK012 verbose_name displayed in bold; fallback to column_name/metric_name in italic when absent
- [ ] CHK013 Missing description shows "✏️ Добавить описание" / "✏️ Add description" action prompt
- [ ] CHK014 Metric without description shows expression as hint below the name
- [ ] CHK015 Inline edit opens textarea with "Save"/"Cancel" buttons
- [ ] CHK016 Existing description is pre-filled in inline edit textarea
- [ ] CHK017 Save column description sends `PUT /api/datasets/{id}/columns/{col_id}/description`
- [ ] CHK017a Save metric description sends `PUT /api/datasets/{id}/metrics/{metric_id}/description`
- [ ] CHK018 Save success shows toast and closes textarea
- [ ] CHK019 Save failure shows error message and keeps textarea open
- [ ] CHK020 Cards have checkboxes; selecting 2+ shows floating bulk action bar
- [ ] CHK021 Bulk Map Columns modal reused from existing implementation
- [ ] CHK022 Bulk Generate Docs modal reused from existing implementation
- [ ] CHK023 Deselecting all hides the bulk action bar

## Backend API Coverage

- [ ] CHK024 DatasetDetailResponse includes `metrics: list[MetricItem]` field
- [ ] CHK025 DatasetDetailResponse includes `metric_count: int` field
- [ ] CHK026 MetricItem Pydantic DTO has fields: id, metric_name, expression, verbose_name, description, metric_type
- [ ] CHK027 SupersetClient.get_dataset_detail extracts metrics from Superset API response
- [ ] CHK028 API correctly handles datasets with zero metrics (empty list, count 0)

## i18n Coverage

- [ ] CHK029 New EN keys: all, without_mapping, with_mapping, linked_to_dashboards, metrics, metric_count, no_selection, save_description, add_description
- [ ] CHK030 New RU keys: все, без_маппинга, с_маппингом, связаны_с_дашбордами, метрики, метрик, выберите_датасет, сохранить_описание, добавить_описание
- [ ] CHK031 Breadcrumb for /datasets reads "Датасеты" (RU) / "Datasets" (EN)

## Cross-Cutting Concerns

- [ ] CHK032 Stats Bar values correctly update when switching environment
- [ ] CHK033 Existing pagination works with filtered dataset list
- [ ] CHK034 Search input filters work alongside Stats Bar active filter
- [ ] CHK035 Loading states for Stats Bar, card list, and detail panel
- [ ] CHK036 Error states with retry for list, detail, and inline save failures
- [ ] CHK037 No breaking changes to existing API endpoints (backward compatible)
- [ ] CHK038 No regression in existing bulk map/generate docs workflows
- [ ] CHK039 Responsive behavior at breakpoints: 1280px, 1024px, 768px, 480px

## Out of Scope (Negative Checklist)

- [ ] CHK040 Drag-and-drop колонок NOT implemented
- [ ] CHK041 CSV export NOT implemented
- [ ] CHK042 Side-by-side сравнение датасетов NOT implemented
- [ ] CHK043 Тёмная тема NOT implemented
- [ ] CHK044 Scheduled автоматический маппинг NOT implemented

## Notes

- Check items off as completed: `[x]`
- Add comments or findings inline
- Link to relevant tasks from tasks.md after decomposition
- Items CHK040-CHK044 serve as scope boundaries to prevent creep
