# Эксперименты с визуализацией логов

## Обзор

Файл `visual_experiments.py` содержит 6 различных стилей визуализации логов, каждый с уникальными акцентами и подходами к отображению информации.

## 🎨 Стили визуализации

### 1. **MinimalLogger** - Минималистичный с акцентами

**Концепция:** Минимализм с яркими акцентами на важных моментах

**Особенности:**
- ✅ **Цветные badge для статусов** - статус код в цветном блоке (фон)
- ✅ **Акцент на медленные запросы** - красный/желтый цвет для времени
- ✅ **Простая однострочная структура**

**Пример:**
```
✓ 0.552с FETCH.PROFILE → httpbin.org/get  [200]  (зеленый фон)
✗ 1.114с SEND.FORM → httpbin.org/status/404  [404]  (красный фон)
```

**Акценты:**
- 🟢 **200 OK** - зеленый фон, черный текст
- 🔵 **2xx Success** - голубой фон
- 🟡 **404 Not Found** - желтый фон, черный текст
- 🔴 **4xx/5xx Errors** - красный фон, белый текст
- 🔴 **>3 секунды** - жирный красный текст для времени
- 🟡 **>1.5 секунды** - желтый текст для времени

**Когда использовать:**
- Простые логи без излишеств
- Нужно быстро видеть статус запроса
- Важна скорость выполнения

---

### 2. **BoxedLogger** - С рамками и блоками

**Концепция:** Структурированные блоки с границами для группировки информации

**Особенности:**
- ✅ **Box-drawing символы** - ┌─ │ └─
- ✅ **Вертикальная структура** - многострочный вывод
- ✅ **Встроенный preview тела** - показывает body внутри блока

**Пример:**
```
┌─ FETCH.COOKIES
│  httpbin.org/get
│  Status: 200  Time: 1.062s
│  {
│    "args": {},
│    ...
│  }
└────────────────────────────────────────────────────────────
```

**Акценты:**
- 📦 **Визуальные границы** - четкое разделение запросов
- ✨ **Встроенные данные** - preview JSON прямо в блоке
- 🎯 **Группировка** - вся информация о запросе в одном блоке

**Когда использовать:**
- Детальное логирование с body
- Нужна четкая визуальная изоляция запросов
- Для отчетов и debugging сессий

---

### 3. **GradientLogger** - Градиентные акценты

**Концепция:** RGB градиенты для визуальной привлекательности и акцентов

**Особенности:**
- ✅ **RGB градиенты** - True Color поддержка
- ✅ **Градиент для статус кода** - каждая цифра своего цвета
- ✅ **Rainbow для action** - каждая буква в радужном градиенте

**Пример:**
```
200 | SEND.FORM → httpbin.org/post (1.800s)
    ↑ (зеленый градиент)

404 | FETCH.BALANCE → httpbin.org/status/404 (1.169s)
    ↑ (красный градиент)
```

**Акценты:**
- 🌈 **Rainbow action** - красочное отображение названия действия
- 🟢 **Зеленый градиент** - для успешных запросов (200-299)
- 🔴 **Красный градиент** - для ошибок (400-499)
- ✨ **Визуально привлекательный** - выделяется среди логов

**Когда использовать:**
- Демонстрации и презентации
- Красивые логи для продакшена
- Когда важна визуальная идентификация

---

### 4. **EmojiLogger** - Эмодзи акценты

**Концепция:** Эмодзи для быстрой визуальной идентификации

**Особенности:**
- ✅ **Эмодзи для методов** - 📤 POST, 📥 GET, 🗑️ DELETE
- ✅ **Эмодзи для статусов** - ✅ 200, 🔍 404, 🔴 4xx
- ✅ **Эмодзи для скорости** - ⚡ быстро, 🐢 медленно, 🐌 очень медленно

**Пример:**
```
📤 ✅ SEND.FORM → httpbin.org/post ⚡ 0.922s [200]
📥 🔍 FETCH.BALANCE → httpbin.org/status/404 🐢 1.580s [404]
```

**Эмодзи карта:**

**Методы:**
- 📤 POST/SEND
- 📥 GET/FETCH
- ✏️ PUT/UPDATE
- 🗑️ DELETE
- 📡 Другие

**Статусы:**
- ✅ 200 OK
- 🟢 2xx Success
- 🔵 3xx Redirect
- 🔍 404 Not Found
- 🔴 4xx Client Error
- 🟡 5xx Server Error

**Скорость:**
- ⚡ <0.5s - очень быстро
- ⏱️ 0.5-1.5s - нормально
- 🐢 1.5-3s - медленно
- 🐌 >3s - очень медленно

**Когда использовать:**
- Быстрая визуальная навигация
- Интуитивное понимание статуса
- Дружелюбный интерфейс

---

### 5. **ProgressLogger** - Прогресс-бар стиль

**Концепция:** Прогресс-бар для визуализации времени выполнения

**Особенности:**
- ✅ **Прогресс-бар для времени** - визуальное представление скорости
- ✅ **Цвет зависит от процента** - зеленый/желтый/красный
- ✅ **Настраиваемый max_time** - задать ожидаемое время

**Пример:**
```
● ░░░░░░░░░░░░░░░░░░░░ FETCH.COOKIES  httpbin.org/get  0.139s
                       (быстро - зеленый)

● ████████████████████ FETCH.PROFILE  httpbin.org/delay/2  4.386s
                       (медленно - красный)
```

**Визуализация:**
- 🟢 **0-30% времени** - зеленый бар
- 🟡 **30-70% времени** - желтый бар
- 🔴 **70-100% времени** - красный бар
- ● **Цветной индикатор** - статус запроса

**Когда использовать:**
- Важна скорость выполнения
- Нужен визуальный SLA индикатор
- Мониторинг производительности

---

### 6. **CompactLogger** - Компактный с Highlights

**Концепция:** Максимально компактный формат с яркими акцентами на важном

**Особенности:**
- ✅ **Highlight статусов** - инвертированные цвета (фон)
- ✅ **Highlight медленных запросов** - фон для времени
- ✅ **Детали ошибок** - показывает validation errors
- ✅ **Самый компактный** - однострочный формат

**Пример:**
```
✓  [200]  1.046s SEND.FORM | httpbin.org/post
⚠  [404]  0.226s FETCH.BALANCE | httpbin.org/status/404
  ↳ STATUS_CODE: [200] ≠ 404
```

**Акценты:**
- 🟢 **200** - зеленый фон, черный текст, жирный
- 🔵 **2xx** - голубой фон
- 🟡 **404** - желтый фон
- 🔴 **4xx** - красный фон, белый текст
- 🔴 **>2s** - красный фон для времени
- 🟡 **>1s** - желтый жирный текст
- 🔴 **Errors** - стрелка ↳ с деталями

**Когда использовать:**
- Нужен компактный вывод
- Важна плотность информации
- Детальная отладка с ошибками

---

## 🎯 Сравнительная таблица

| Стиль | Компактность | Акценты | Детальность | Сложность | Use Case |
|-------|-------------|---------|-------------|-----------|----------|
| **Minimal** | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐ | Production логи |
| **Boxed** | ⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | Debug sessions |
| **Gradient** | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | Презентации |
| **Emoji** | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐ | User-friendly |
| **Progress** | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | Performance |
| **Compact** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | All-rounder |

---

## 💡 Рекомендации по выбору стиля

### Для Production
- **MinimalLogger** - чистый, минималистичный, легко читается
- **CompactLogger** - максимум информации в минимум места

### Для Development
- **BoxedLogger** - детальный вывод с body preview
- **CompactLogger** - с деталями ошибок

### Для Демонстраций
- **GradientLogger** - красочный и привлекательный
- **EmojiLogger** - дружелюбный и интуитивный

### Для Performance Monitoring
- **ProgressLogger** - визуальный SLA индикатор
- **MinimalLogger** - акцент на медленных запросах

### Universal Choice
- **CompactLogger** - лучший баланс между всеми параметрами

---

## 🔧 Технические детали

### RGB Gradient (Стиль 3)

```python
# True Color градиент для статуса
status_str = (
    f"{Colors.rgb(144, 238, 144)}{status//100}"  # Светло-зеленый
    f"{Colors.rgb(50, 205, 50)}{(status//10)%10}"  # Зеленый
    f"{Colors.rgb(34, 139, 34)}{status%10}"  # Темно-зеленый
)
```

### Progress Bar (Стиль 5)

```python
# Прогресс-бар из времени
bar_width = 20
percent = min(elapsed / max_time, 1.0)
filled = int(bar_width * percent)

bar = f"{bar_color}{'█' * filled}{'░' * (bar_width - filled)}"
```

### Box Drawing (Стиль 2)

```python
# Unicode box-drawing characters
print(f"┌─ {action}")
print(f"│  {info}")
print(f"└{'─' * 60}")
```

---

## 🚀 Запуск экспериментов

```bash
python visual_experiments.py
```

Демонстрирует все 6 стилей с живыми HTTP запросами.

---

## 📝 Примеры интеграции

### Minimal стиль в твой проект

```python
from visual_experiments import MinimalLogger

@MinimalLogger.log(LOG_ACTION.SEND.FORM)
@ResponseValidator.status([200])
async def send_form(client):
    return await client.post(...)
```

### Progress стиль для SLA мониторинга

```python
from visual_experiments import ProgressLogger

@ProgressLogger.log(LOG_ACTION.FETCH.DATA, max_time=2.0)  # SLA 2 секунды
@ResponseValidator.status([200])
async def fetch_data(client):
    return await client.get(...)
```

### Compact для production

```python
from visual_experiments import CompactLogger

@CompactLogger.log(LOG_ACTION.AUTH.LOGIN, show_errors=True)
@ResponseValidator.status([200])
async def login(client):
    return await client.post(...)
```

---

## 🎨 Цветовая палитра

Все стили используют класс `Colors` с расширенной палитрой:

### ANSI цвета
```python
Colors.RED     # \033[91m
Colors.GREEN   # \033[92m
Colors.YELLOW  # \033[93m
Colors.BLUE    # \033[94m
Colors.MAGENTA # \033[95m
Colors.CYAN    # \033[96m
Colors.GRAY    # \033[90m
```

### RGB True Color
```python
Colors.rgb(255, 0, 0)        # Красный
Colors.rgb(0, 255, 0)        # Зеленый
Colors.bg_rgb(100, 100, 100) # Серый фон
```

### Стили текста
```python
Colors.BOLD      # Жирный
Colors.DIM       # Приглушенный
Colors.ITALIC    # Курсив
Colors.UNDERLINE # Подчеркнутый
```

---

## 💎 Лучшие практики

### Акценты на важном
1. **Статус коды** - самый яркий элемент (фон, жирный)
2. **Медленные запросы** - красный/желтый для времени
3. **Ошибки** - красный цвет + детали
4. **URL** - спокойный голубой цвет

### Читаемость
1. **Не перегружать цветами** - максимум 3-4 цвета
2. **Консистентность** - одинаковые цвета для одних вещей
3. **Контраст** - яркое на темном/светлом фоне
4. **Dim для деталей** - важная информация ярче

### Производительность
1. **Минимум вычислений** - не генерировать градиенты для каждого символа
2. **Кэширование цветов** - переиспользовать ANSI коды
3. **Компактность** - меньше строк = быстрее вывод

---

## 🎯 Итог

Каждый стиль решает определенную задачу:
- **Minimal** - быстрый production
- **Boxed** - детальный debug
- **Gradient** - красивые демо
- **Emoji** - дружелюбный UX
- **Progress** - performance tracking
- **Compact** - универсальный выбор

Экспериментируй с разными стилями и выбирай то, что подходит для твоего use case! 🚀
