# Phase 6: Deep entity pages **Status:** ⬜ Not Started **Parent plan:** [PLAN.md](./PLAN.md) **Domain:** frontend ## Objective Заменить выезжающую `.user-panel` overlay на полноценную страницу с URL `#users/123`. Аналогично для session: `#sessions/456` = full detail page. Это самая комплексная фаза — она ломает совместимость с старым overlay UI (удаляет код), потому идёт ПОСЛЕ всех остальных. ## Tasks - [ ] **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 % по предметам - [ ] **Session detail page** (`frontend/js/admin/sections/session-detail.js`): - Реагирует на route `#sessions/:id` - Layout: header (user, subject, score, дата) + список вопросов/ответов (правильно/нет, текст), back-link - [ ] **Router updates** (`frontend/js/admin/router.js` если ещё не поддерживает): - `#users/123` → emit { route: 'users', params: ['123'] } - `#sessions/456` → emit { route: 'sessions', params: ['456'] } - [ ] **Admin.js dispatch**: - При route с params → init detail-section вместо list-section - При route без params → init list-section (как раньше) - [ ] **Удалить overlay-код:** - В `frontend/admin.html` удалить `
` блок - В `sections/users.js` удалить `openUserPanel`, `closeUserPanel`, `reloadUserPanel` - В `sections/users.js` поменять onclick: `onclick="openUserPanel(event,${u.id},'${u.role}')"` → `onclick="AdminRouter.navigate('#users/${u.id}')"` - [ ] **Replace** в Phase 5 quick action "Sessions" — теперь `AdminRouter.navigate('#users/${uid}/sessions')`: - Парсить sub-tab из route - Открывать user-detail page с активным Sessions tab - [ ] **Глоссарий 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, добавить `
` и `
`, добавить `