обновил документацию
This commit is contained in:
@@ -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` |
|
||||||
|
|
||||||
|
|||||||
@@ -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/ # 📖 Документация проекта
|
||||||
|
|||||||
@@ -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 на всех устройствах
|
||||||
- Таблицы получают горизонтальный скролл
|
- Таблицы получают горизонтальный скролл
|
||||||
|
|||||||
Reference in New Issue
Block a user