Files
vue-pult/doc/ФУТЕР_VERSION_INFO.md
sasha 3e90269b0b Initial commit: Vue.js тир управления система
- Клиентская часть Vue 3 + Vite
- Серверная часть Node.js + WebSocket
- Система авторизации и смен
- Управление игровыми портами
- Поддержка тем (светлая/темная)
- Адаптивный дизайн

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-19 12:24:22 +03:00

353 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# VERSION INFO - Информация о версии в футере
## 📋 Описание
VersionInfo - это правая секция футера, отображающая копирайт информацию и версию приложения. Предоставляет пользователям информацию о продукте и его текущей версии.
---
## Архитектура
### Местоположение
- **Компонент**: Часть `Footer.tsx`
- **Позиция**: Правая часть футера
- **Видимость**: Частично адаптивная (копирайт скрыт на очень маленьких экранах)
### Структура отображаемых данных
```typescript
interface VersionInfoData {
copyright: string; // Копирайт информация
version: string; // Версия приложения
}
```
---
## Функциональность
### 1. Отображение копирайта
```typescript
<span className="hidden sm:inline">© 2024 NEWPULT</span>
```
- Показывает информацию об авторских правах
- Скрыта на очень маленьких экранах (< 640px)
### 2. Разделитель
```typescript
<span></span>
```
- Визуальная точка-разделитель между копирайтом и версией
### 3. Отображение версии
```typescript
<span>v1.0.0</span>
```
- Показывает текущую версию приложения
- Всегда видима на всех экранах
---
## Структура компонента
### HTML разметка
```typescript
<div className="flex items-center gap-2 text-xs text-gray-400">
<span className="hidden sm:inline">© 2024 NEWPULT</span>
<span></span>
<span>v1.0.0</span>
</div>
```
---
## Адаптивность и стили
### CSS классы
```css
/* Контейнер */
.flex.items-center.gap-2.text-xs.text-gray-400
/* Копирайт - скрыт до sm размера */
.hidden.sm:inline
/* Разделитель и версия - всегда видимы */
/* Используют базовые стили контейнера */
```
### Адаптивное поведение
#### Mobile (< 640px)
```
• v1.0.0
```
- Копирайт скрыт для экономии места
- Разделитель и версия остаются видимыми
#### Small и выше (≥ 640px)
```
© 2024 NEWPULT • v1.0.0
```
- Полная информация отображается
### Логика адаптивности
```typescript
// Копирайт появляется только на экранах sm и больше
className="hidden sm:inline"
// Версия всегда видима (без условных классов)
<span>v1.0.0</span>
```
---
## Конфигурация версии
### Текущая реализация
```typescript
// Статическая версия в коде
<span>v1.0.0</span>
```
### Улучшенная реализация (предложение)
```typescript
// Версия из package.json
import packageJson from '../../../package.json';
const VersionInfo = () => {
return <span>v{packageJson.version}</span>;
};
```
### Версия из переменных окружения
```typescript
// Версия из environment variables
const version = process.env.REACT_APP_VERSION || '1.0.0';
<span>v{version}</span>
```
---
## Позиционирование в футере
### Расположение между элементами
```
[Подключения] [Система] [ Пользователь ] [ ВЕРСИЯ ]
Локальный CPU: 35% Пульт: #8 © 2024 NEWPULT
Внешний RAM: 45% Админ: Иванов И. •
Disk: 75% Uptime: 02:15:30 v1.0.0
```
### Выравнивание
```typescript
// justify-between в родительском контейнере размещает
// этот элемент в правой части футера
<div className="h-full flex items-center justify-between">
{/* Левая часть */}
{/* Центральная часть */}
{/* ПРАВАЯ ЧАСТЬ */}
<div className="flex items-center gap-2 text-xs text-gray-400">
{/* VersionInfo здесь */}
</div>
</div>
```
---
## Особенности реализации
### 1. Статичность данных
- **Копирайт**: Захардкожен в коде ("© 2024 NEWPULT")
- **Версия**: Статическое значение ("v1.0.0")
- **Нет динамического обновления**: Изменения только при новой сборке
### 2. Минималистичный дизайн
- Простой серый текст
- Маленький размер шрифта (text-xs)
- Ненавязчивое позиционирование
### 3. Приоритизация версии
- Версия всегда видима
- Копирайт может быть скрыт для экономии места
- Версия критична для технической поддержки
---
## Управление версиями
### Рекомендуемые подходы
#### 1. Семантическое версионирование (SemVer)
```
v1.0.0 - MAJOR.MINOR.PATCH
v1.2.3 - 1 мажорная, 2 минорная, 3 патч версия
```
#### 2. Автоматическое обновление из package.json
```typescript
// vite.config.ts или webpack.config.js
const packageJson = require('./package.json');
export default {
define: {
'process.env.APP_VERSION': JSON.stringify(packageJson.version),
},
};
// В компоненте
const version = process.env.APP_VERSION || '1.0.0';
```
#### 3. CI/CD интеграция
```typescript
// Автоматическое обновление при деплое
const version = process.env.BUILD_NUMBER ||
process.env.GIT_COMMIT?.substring(0, 7) ||
'1.0.0';
```
---
## Расширение функциональности
### Потенциальные улучшения
#### 1. Детальная информация о версии
```typescript
interface DetailedVersionInfo {
version: string; // "1.0.0"
buildNumber: string; // "2024010901"
gitCommit: string; // "a1b2c3d"
buildDate: string; // "2024-01-09"
environment: string; // "production"
}
```
#### 2. Интерактивная версия с тултипом
```typescript
<Tooltip content={`
Версия: v${version}
Сборка: ${buildNumber}
Дата: ${buildDate}
Коммит: ${gitCommit}
`}>
<span className="cursor-help">v{version}</span>
</Tooltip>
```
#### 3. Цветовая индикация среды
```typescript
const getEnvironmentColor = (env: string) => {
switch (env) {
case 'production': return 'text-green-400';
case 'staging': return 'text-yellow-400';
case 'development': return 'text-blue-400';
default: return 'text-gray-400';
}
};
<span className={getEnvironmentColor(environment)}>
v{version}
</span>
```
#### 4. Ссылка на changelog
```typescript
<a
href="/changelog"
className="text-xs text-gray-400 hover:text-gray-300 underline"
>
v{version}
</a>
```
---
## Интеграция с системой сборки
### Package.json интеграция
```json
{
"name": "newpult",
"version": "1.0.0",
"scripts": {
"build": "vite build --mode production",
"version:bump": "npm version patch && git push && git push --tags"
}
}
```
### Автоматизация обновления
```bash
# Автоматическое обновление версии при деплое
npm version patch # 1.0.0 -> 1.0.1
npm version minor # 1.0.0 -> 1.1.0
npm version major # 1.0.0 -> 2.0.0
```
---
## Тестирование
### Тестовые сценарии
1. **Корректное отображение версии** на всех экранах
2. **Скрытие копирайта** на маленьких экранах (< 640px)
3. **Показ копирайта** на больших экранах (≥ 640px)
4. **Правильное позиционирование** в правой части футера
5. **Стилизация текста** (размер, цвет, отступы)
### Unit тесты
```typescript
describe('VersionInfo', () => {
test('shows version on all screen sizes', () => {
render(<VersionInfo />);
expect(screen.getByText(/v1\.0\.0/)).toBeVisible();
});
test('hides copyright on small screens', () => {
render(<VersionInfo />);
const copyright = screen.getByText(/© 2024 NEWPULT/);
expect(copyright).toHaveClass('hidden', 'sm:inline');
});
});
```
---
## Безопасность и конфиденциальность
### Соображения
1. **Версия не содержит чувствительной информации**
2. **Копирайт указывает на владельца продукта**
3. **Публичная информация** - безопасна для отображения
4. **Не раскрывает внутреннюю архитектуру** или уязвимости
### Рекомендации
- Избегать отображения детальной информации о сборке
- Не показывать пути к файлам или внутренние идентификаторы
- Ограничить информацию до необходимого минимума
---
## Связь с брендингом
### Элементы бренда
- **"NEWPULT"**: Название продукта в копирайте
- **"© 2024"**: Актуальный год авторских прав
- **Цветовая схема**: Серый цвет соответствует общей теме
### Консистентность
- Соответствует общему стилю приложения
- Гармонирует с другими элементами футера
- Поддерживает профессиональный вид интерфейса
---
## Заключение
VersionInfo служит важной идентификационной функцией, предоставляя пользователям информацию о текущей версии продукта и авторских правах. Несмотря на свою простоту, компонент играет ключевую роль в поддержке пользователей и идентификации версии при решении технических вопросов.
---
**Дата создания**: 2025-01-09
**Версия документации**: 1.0
**Родительский компонент**: Footer.tsx