Страница /reports трансформирована в Центр статусов задач:
Backend:
- GET /api/reports/summary — агрегированные счётчики тип×статус (5 корзин)
- GET/PUT /api/settings/reports — глобальные настройки отчётов
- _filter_tasks_by_rbac() — row-level фильтрация по роли
- normalize_task_report: LLM-валидация с ошибками → FAILED/PARTIAL
- get_summary(): 5 корзин pending/running/awaiting_input/success/failed
Frontend:
- TaskCenterModel.svelte.ts (400 строк) — Screen Model
- SummaryPanel — сводная панель с цветовым кодированием и active filter
- ReportCard — humanized labels, duration, task_id, failed border
- FilterBar — search + sort + time range с label'ами
- Pagination — showingText, уникальные id для select
- Quick views: «Упавшие», «В работе», «Успешные»
- TaskDrawer: scroll-to-error, footer скрыт для terminal, «Н/Д» fix
Тесты: 48 backend + 38 frontend (2521 всего)
Build: ✅ Console errors: 0
4.7 KiB
4.7 KiB
#region Quickstart [C:2] [TYPE ADR] [SEMANTICS quickstart, development, setup, task-status-center] @BRIEF Developer quickstart for the Task Status Center feature — setup, verification commands, and key file locations.
Prerequisites
- Docker + Docker Compose (for full stack)
- Python 3.13+ with venv (for backend-only development)
- Node.js 22+ (for frontend-only development)
- Git branch:
034-task-status-center
Quick Start (Docker)
# 1. Switch to feature branch
git checkout 034-task-status-center
# 2. Start full stack
docker compose up -d
# 3. Frontend at http://localhost:5173
# 4. Backend API at http://localhost:8000
# 5. WebSocket at ws://localhost:8000/ws/task-events?token=...
Development Setup (without Docker)
# Backend
cd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python -m uvicorn src.app:app --reload --port 8000
# Frontend (separate terminal)
cd frontend
npm install
npm run dev
Verification Gates
# Backend: run all tests
cd backend && source .venv/bin/activate && python -m pytest -v
# Backend: run reports-specific tests
python -m pytest tests/api/routes/test_reports.py -v
python -m pytest tests/services/reports/ -v
# Backend: lint
python -m ruff check .
# Frontend: run all tests
cd frontend && npm run test
# Frontend: run reports-specific tests
npm run test -- src/lib/components/reports/
# Frontend: lint
npm run lint
Key Files
Backend (to create/modify)
| File | Change | Purpose |
|---|---|---|
backend/src/api/routes/reports.py |
MODIFY | Add /summary endpoint; enhance list_reports with RBAC |
backend/src/services/reports/report_service.py |
MODIFY | Add get_summary(), _filter_tasks_by_rbac() |
backend/src/models/report.py |
MODIFY | Add TaskSummary, StatusCounts, TaskTypeSummary schemas |
backend/tests/api/routes/test_reports.py |
MODIFY | Add summary endpoint tests |
backend/tests/services/reports/test_report_service.py |
MODIFY | Add RBAC filtering tests |
Frontend (to create/modify)
| File | Change | Purpose |
|---|---|---|
frontend/src/lib/models/TaskCenterModel.svelte.ts |
NEW | Screen Model — state, WebSocket, filtering, actions |
frontend/src/types/reports.ts |
NEW | TypeScript DTOs matching backend schemas |
frontend/src/lib/api/reports.ts |
MODIFY | Add getReportsSummary(), add types |
frontend/src/routes/reports/+page.svelte |
REWRITE | Thin render layer with summary + filters + list |
frontend/src/routes/reports/+page.ts |
NEW | Load function for URL query param parsing |
frontend/src/lib/components/reports/SummaryPanel.svelte |
NEW | Summary dashboard grid component |
frontend/src/lib/components/reports/FilterBar.svelte |
NEW | Filter bar component |
frontend/src/lib/components/reports/TaskList.svelte |
MODIFY | Add pagination, active-first sort |
frontend/src/lib/components/reports/reportTypeProfiles.ts |
MODIFY | Add clean_release profile |
frontend/tests/lib/components/reports/SummaryPanel.test.ts |
NEW | Component UX tests |
frontend/tests/lib/components/reports/FilterBar.test.ts |
NEW | Component UX tests |
frontend/tests/lib/models/TaskCenterModel.test.ts |
NEW | Model unit tests |
Manual Testing Scenarios
1. Summary Dashboard (US1)
- Create tasks of different types (migration, backup, validation) via the API/UI.
- Open
/reports— verify summary cards show correct counts. - Complete a running task — verify count updates via WebSocket within 2 seconds.
2. Filtering (US2)
- Click a summary card — verify task list filters to matching type+status.
- Use multi-select dropdowns — verify combination filtering.
- Type in search box — verify text filtering.
- Select time range — verify temporal filtering.
3. Task Drill-Down (US3)
- Click a FAILED task — verify Task Drawer opens with logs.
- Click a RUNNING task — verify live log streaming in Drawer.
- Hover over a task row — verify tooltip with details.
4. RBAC (TSC-FR-009)
- Login as viewer — verify only own tasks visible.
- Login as analyst — verify own + system tasks visible.
- Login as admin — verify all tasks visible.
5. WebSocket Recovery
- Open
/reportswith WebSocket connected. - Kill backend (
docker compose stop backend). - Verify: yellow reconnecting indicator → red disconnected indicator.
- Restart backend — verify auto-reconnect within 5 seconds (SC-005).
Test Data
# Create test tasks via API:
POST /api/tasks
{
"plugin_id": "superset-migration",
"action": "migrate_dashboard",
"params": {"source_env": "prod", "target_env": "staging", "dashboard_id": 42}
}
#endregion Quickstart