# Phase 6: Deep entity pages **Status:** ✅ Done (sub-commits: bd30200 + final remove-overlay commit) **Parent plan:** [PLAN.md](./PLAN.md) **Domain:** frontend ## Objective Заменить выезжающую `.user-panel` overlay на полноценную страницу с URL `#users/123`. Аналогично для session: `#sessions/456` = full detail page. Это самая комплексная фаза — она ломает совместимость с старым overlay UI (удаляет код), потому идёт ПОСЛЕ всех остальных. ## Tasks - [x] **User detail page** (`frontend/js/admin/sections/user-detail.js`): - Реагирует на route `#users/:id` - Layout: - **Header**: avatar, name, role badge, email, action buttons (ban/edit/perms/delete), back-link to `#users` - **Tabs** (sub-nav в странице): - Overview — статистика (тестов, средний %, регистрация, посл вход) - Sessions — таблица последних 20 сессий с pagination - Classes — список классов где он состоит - Audit — журнал действий (если есть audit log с user_id) - **Graphs** (опционально, можно отдельным таб'ом): - Простой SVG-чарт: успеваемость по неделям - Mini-bar chart: avg % по предметам - [x] **Session detail page** (`frontend/js/admin/sections/session-detail.js`): - Реагирует на route `#sessions/:id` - Layout: header (user, subject, score, дата) + список вопросов/ответов (правильно/нет, текст), back-link - [x] **Router updates** (`frontend/js/admin/router.js` если ещё не поддерживает): router из Phase 1 уже парсит params — обновлять не пришлось - [x] **Admin.js dispatch**: добавлена `DEEP_ROUTES` map + `activateDeepPane()` + `activate(route, params)` - [x] **Удалить overlay-код:** - [x] В `frontend/admin.html` удалён `
` блок + `.user-panel*` CSS - [x] В `sections/users.js` удалены `openUserPanel`, `closeUserPanel`, `reloadUserPanel` - [x] В `sections/users.js` onclick переключён на `AdminRouter.navigate('#users/${u.id}')` - [x] **Replace** в Phase 5 quick action "Sessions": `quickOpenUserSessions(uid)` → `AdminRouter.navigate('#users/' + uid + '/sessions')` - Парсить sub-tab из route (выполнено через `params[1]` в `activate()`) - Открывать user-detail page с активным Sessions tab - [x] **Глоссарий routes после фазы:** - `#overview` — dashboard (Phase 3) - `#users` — list - `#users/123` — user detail (overview tab default) - `#users/123/sessions` — user detail with sessions sub-tab - `#sessions` — list - `#sessions/456` — session detail - … остальные без params — как было ## Files to Modify/Create - `frontend/js/admin/sections/user-detail.js` — новый, ~400-600L - `frontend/js/admin/sections/session-detail.js` — новый, ~200-300L - `frontend/admin.html` — удалить `.user-panel` overlay, добавить `
` и `
`, добавить `