обновил документацию

This commit is contained in:
Zuev
2026-03-27 15:24:29 +03:00
parent 6be8db0cd0
commit e015758caf
3 changed files with 73 additions and 18 deletions

View File

@@ -30,6 +30,7 @@ description: Автоматическое обновление документ
| `utils/*.java` | `docs/BUSINESS_LOGIC.md` | | `utils/*.java` | `docs/BUSINESS_LOGIC.md` |
| `frontend/admin/js/views/*.js` | `docs/FRONTEND.md` | | `frontend/admin/js/views/*.js` | `docs/FRONTEND.md` |
| `frontend/admin/css/*.css` | `docs/FRONTEND.md` | | `frontend/admin/css/*.css` | `docs/FRONTEND.md` |
| `frontend/admin/settings/**` | `docs/FRONTEND.md` |
| `compose.yaml`, `Dockerfile` | `docs/INFRASTRUCTURE.md` | | `compose.yaml`, `Dockerfile` | `docs/INFRASTRUCTURE.md` |
| `application.properties` | `docs/ARCHITECTURE.md` | | `application.properties` | `docs/ARCHITECTURE.md` |

View File

@@ -26,6 +26,7 @@ magistr/
│ └── src/main/resources/db/migration/ # Flyway SQL миграции (версионирование схемы БД) │ └── src/main/resources/db/migration/ # Flyway SQL миграции (версионирование схемы БД)
├── frontend/ # Статические файлы ├── frontend/ # Статические файлы
│ ├── admin/ # Интерфейс администратора │ ├── admin/ # Интерфейс администратора
│ │ └── settings/ # Страница настроек (отдельный SPA)
│ ├── teacher/ # Интерфейс преподавателя │ ├── teacher/ # Интерфейс преподавателя
│ └── student/ # Интерфейс студента │ └── student/ # Интерфейс студента
├── docs/ # 📖 Документация проекта ├── docs/ # 📖 Документация проекта

View File

@@ -28,12 +28,14 @@ frontend/
│ │ ├── main.css # CSS-переменные, цвета, типографика │ │ ├── main.css # CSS-переменные, цвета, типографика
│ │ ├── layout.css # Раскладка (sidebar, topbar, content) │ │ ├── layout.css # Раскладка (sidebar, topbar, content)
│ │ ├── components.css # Кнопки, таблицы, карточки, формы │ │ ├── components.css # Кнопки, таблицы, карточки, формы
│ │ ── modals.css # Модальные окна │ │ ── modals.css # Модальные окна
│ │ ├── department.css # Стили кафедры
│ │ └── departments-data.css # Стили создания кафедры/специальности
│ ├── js/ │ ├── js/
│ │ ├── main.js # Инициализация, маршрутизация, навигация │ │ ├── main.js # Инициализация, маршрутизация, навигация
│ │ ├── api.js # HTTP-обёртка (fetch + Authorization) │ │ ├── api.js # HTTP-обёртка (fetch + Authorization)
│ │ ├── utils.js # Утилиты │ │ ├── utils.js # Утилиты
│ │ ├── otel.js # OpenTelemetry (клиентская телеметрия) │ │ ├── otel.js # OpenTelemetry (клиентская телеметрия, только прод)
│ │ └── views/ # Модули представлений │ │ └── views/ # Модули представлений
│ │ ├── users.js # Управление пользователями │ │ ├── users.js # Управление пользователями
│ │ ├── groups.js # Управление группами │ │ ├── groups.js # Управление группами
@@ -42,16 +44,30 @@ frontend/
│ │ ├── equipments.js # Управление оборудованием │ │ ├── equipments.js # Управление оборудованием
│ │ ├── edu-forms.js # Формы обучения │ │ ├── edu-forms.js # Формы обучения
│ │ ├── schedule.js # Расписание занятий │ │ ├── schedule.js # Расписание занятий
│ │ ── database.js # Управление тенантами │ │ ── database.js # Управление тенантами
└── views/ # HTML-шаблоны представлений │ ├── department.js # Кафедры
── users.html ── departments-data.js # Создание кафедры/специальности
├── groups.html ├── views/ # HTML-шаблоны представлений
├── classrooms.html ├── users.html
├── subjects.html ├── groups.html
├── equipments.html ├── classrooms.html
├── edu-forms.html ├── subjects.html
├── schedule.html ├── equipments.html
── database.html ── edu-forms.html
│ │ ├── schedule.html
│ │ ├── database.html
│ │ ├── department.html
│ │ └── departments-data.html
│ │
│ └── settings/ # ⚙️ Страница настроек (отдельный SPA)
│ ├── index.html # Оболочка с собственной sidebar
│ ├── css/
│ │ ├── main.css # CSS-переменные, базовые стили
│ │ └── layout.css # Sidebar, topbar, content
│ ├── js/
│ │ └── main.js # Навигация по вкладкам настроек
│ └── views/
│ └── general.html # Общие настройки (заглушка)
├── teacher/ # 👩‍🏫 Интерфейс преподавателя ├── teacher/ # 👩‍🏫 Интерфейс преподавателя
│ └── index.html # Просмотр расписания │ └── index.html # Просмотр расписания
@@ -92,6 +108,17 @@ frontend/
| `subjects` | Дисциплины | `/api/subjects` | | `subjects` | Дисциплины | `/api/subjects` |
| `schedule` | Расписание | `/api/users/lessons` | | `schedule` | Расписание | `/api/users/lessons` |
| `database` | Тенанты | `/api/database` | | `database` | Тенанты | `/api/database` |
| `department` | Кафедры | `/api/departments` |
| `departments-data` | Создание кафедры/специальности | `/api/departments` |
### Страница настроек (`/admin/settings/`)
Настройки — это **отдельный SPA** со своей боковой панелью и вкладками, не связанными с основной админ-панелью.
- Доступ: через dropdown «Настройки» в footer боковой панели админки
- Кнопка «Назад в панель» для возврата в `/admin/`
- Текущие вкладки:
- **Общие настройки** — заглушка (в разработке)
--- ---
@@ -157,7 +184,7 @@ export function isAuthenticatedAsAdmin() {
### Выход ### Выход
Кнопка «Выйти» очищает `localStorage` и перенаправляет на `/`. Кнопка «Выйти» находится в dropdown-меню «Настройки» в footer боковой панели. Очищает `localStorage` и перенаправляет на `/`.
--- ---
@@ -165,12 +192,14 @@ export function isAuthenticatedAsAdmin() {
### Модульный подход ### Модульный подход
Стили разделены на 4 файла (порядок подключения важен): Стили разделены на модульные файлы (порядок подключения важен):
1. **`main.css`** — CSS-переменные (цвета, шрифты, отступы), глобальные стили, тёмная тема 1. **`main.css`** — CSS-переменные (цвета, шрифты, отступы), глобальные стили, тёмная тема
2. **`layout.css`** — Sidebar, topbar, content area, responsive 2. **`layout.css`** — Sidebar, topbar, content area, dropdown настроек, responsive
3. **`components.css`** — Кнопки, таблицы, карточки, badge, формы 3. **`components.css`** — Кнопки, таблицы, карточки, badge, формы, theme-toggle
4. **`modals.css`** — Модальные окна 4. **`modals.css`** — Модальные окна
5. **`department.css`** — Стили страницы кафедр
6. **`departments-data.css`** — Стили создания кафедры/специальности
### Темизация ### Темизация
@@ -194,10 +223,34 @@ CSS-переменные позволяют поддерживать светл
--- ---
## Боковая панель (Sidebar)
- **Скрытие/раскрытие** — кнопка-крестик в правом верхнем углу sidebar
- **Десктоп** (`>768px`): sidebar складывается влево, контент расширяется; состояние сохраняется в `localStorage` (`sidebar-collapsed`)
- **Мобильные** (`≤768px`): sidebar скрывается за кнопкой-гамбургер, выезжает как overlay с затемнением
- **Dropdown «Настройки»** в footer sidebar — содержит ссылку на страницу настроек и кнопку выхода
---
## OpenTelemetry (`otel.js`)
Клиентская телеметрия (document-load, fetch, XHR) отправляется через `BatchSpanProcessor` на `/otel/v1/traces`.
- **На production** — загружается автоматически через динамический `import()`
- **На localhost** — пропускается, чтобы избежать таймаутов CDN `esm.sh`
```javascript
if (!['localhost', '127.0.0.1'].includes(window.location.hostname)) {
import('./otel.js').catch(e => console.warn('OTel init skipped:', e.message));
}
```
---
## Адаптивность ## Адаптивность
Интерфейс адаптирован под мобильные устройства: Интерфейс адаптирован под мобильные устройства:
- Sidebar скрывается на экранах < 768px - Sidebar скрывается на экранах < 768px, выезжает как overlay
- Появляется кнопка-гамбургер (`#menu-toggle`) - Появляется кнопка-гамбургер (`#menu-toggle`)
- Sidebar выезжает как overlay - Кнопка-крестик закрывает sidebar на всех устройствах
- Таблицы получают горизонтальный скролл - Таблицы получают горизонтальный скролл