# VERSION INFO - Информация о версии в футере ## 📋 Описание VersionInfo - это правая секция футера, отображающая копирайт информацию и версию приложения. Предоставляет пользователям информацию о продукте и его текущей версии. --- ## Архитектура ### Местоположение - **Компонент**: Часть `Footer.tsx` - **Позиция**: Правая часть футера - **Видимость**: Частично адаптивная (копирайт скрыт на очень маленьких экранах) ### Структура отображаемых данных ```typescript interface VersionInfoData { copyright: string; // Копирайт информация version: string; // Версия приложения } ``` --- ## Функциональность ### 1. Отображение копирайта ```typescript © 2024 NEWPULT ``` - Показывает информацию об авторских правах - Скрыта на очень маленьких экранах (< 640px) ### 2. Разделитель ```typescript ``` - Визуальная точка-разделитель между копирайтом и версией ### 3. Отображение версии ```typescript v1.0.0 ``` - Показывает текущую версию приложения - Всегда видима на всех экранах --- ## Структура компонента ### HTML разметка ```typescript
© 2024 NEWPULT v1.0.0
``` --- ## Адаптивность и стили ### 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" // Версия всегда видима (без условных классов) v1.0.0 ``` --- ## Конфигурация версии ### Текущая реализация ```typescript // Статическая версия в коде v1.0.0 ``` ### Улучшенная реализация (предложение) ```typescript // Версия из package.json import packageJson from '../../../package.json'; const VersionInfo = () => { return v{packageJson.version}; }; ``` ### Версия из переменных окружения ```typescript // Версия из environment variables const version = process.env.REACT_APP_VERSION || '1.0.0'; v{version} ``` --- ## Позиционирование в футере ### Расположение между элементами ``` [Подключения] [Система] [ Пользователь ] [ ВЕРСИЯ ] Локальный CPU: 35% Пульт: #8 © 2024 NEWPULT Внешний RAM: 45% Админ: Иванов И. • Disk: 75% Uptime: 02:15:30 v1.0.0 ``` ### Выравнивание ```typescript // justify-between в родительском контейнере размещает // этот элемент в правой части футера
{/* Левая часть */} {/* Центральная часть */} {/* ПРАВАЯ ЧАСТЬ */}
{/* VersionInfo здесь */}
``` --- ## Особенности реализации ### 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 v{version} ``` #### 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'; } }; v{version} ``` #### 4. Ссылка на changelog ```typescript v{version} ``` --- ## Интеграция с системой сборки ### 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(); expect(screen.getByText(/v1\.0\.0/)).toBeVisible(); }); test('hides copyright on small screens', () => { render(); 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