# Пользовательские истории: Индекс и обзор

## ✅ ВЕРИФИЦИРОВАНО: Только реально реализованные функции Angular

**Дата последнего обновления:** 15 апреля 2026 GMT+3
**Статус:** Верифицировано v4.1 — полный аудит Angular-кода, добавлены пропущенные функции
**Источник верификации:** `ClientApp/` (Angular 12.2.13)

**Итоги аудита (Версия 4.0):**

- 175 → **85 историй** (удалено 90, или ~51%)
- 14 → **7 документов** (удалено 4 документа полностью + 1 устаревший индекс)
- 100% оставшихся историй имеют подтверждение в исходном коде Angular

---

## 📌 Изменения в версии 4.0

### Удалены документы (нереализованные функции)

- ❌ **Документ 8: Многолётные рейсы** (US-106-120) — кроме базового отображения, всё гипотетика (трансфер услуги, переадресация багажа, риски пересадок). Базовый показ stay в Doc 4 (US-42).
- ❌ **Документ 10: Производительность** (US-136-150) — Service Worker, A/B тесты, Web Workers, виртуализация — ничего нет в коде. Только базовый CacheService 30s.
- ❌ **Документ 11: Продвинутые функции** (US-151-165) — конвертация валют, RTL, лояльность, IATA-поиск — не реализовано. Многоязычность уже описана в Doc 1 US-2.
- ❌ **Документ 12: Граничные случаи целостности** (US-166-175) — кросс-таб синхронизация, восстановление сессии, rollback — ничего нет.

### Удалённые истории внутри сохранённых документов

- **Doc 2:** US-21 (обработка ошибок сети) — нет UI обработки ошибок API
- **Doc 3:** US-34 (кнопка "Очистить") — нет такой кнопки в форме
- **Doc 4:** US-40, US-41 (перенесены в Doc 5), US-43 (фильтр по авиакомпании), US-44 (кнопка "Купить билет"), US-45 (живые обновления статусов в расписании)
- **Doc 5:** US-57 (ограничения полёта), US-58 (рецензии), US-59 (исторические данные), US-60 (сравнение рейсов), US-61 (Print version)
- **Doc 6:** US-77 (кластеризация), US-78 (выделение результатов), US-80 (топ маршруты), US-81 (легенда), US-82 (центральный офис), US-83 (ночной режим), US-84 (мобильная карта)
- **Doc 7:** US-87 (Service Worker offline), US-97 (WCAG проверка контраста), US-105 (session timeout)

### Удалён устаревший файл

- ❌ `USER_STORIES_VERIFIED_INDEX.md` — содержал устаревшие данные о 175 историях

---

## Обзор проекта

Это набор пользовательских историй для **UI Dashboard** — React-версии онлайн доски полётов Аэрофлота. Документы организованы по функциональным областям и содержат описание целей, путей клиента и критериев приёмки.

**Всего историй:** 89 пользовательских историй ✅
**Документов:** 7
**Источник:** Angular 12.2.13 (Aeroflot.Flights.Web/ClientApp)
**Языки:** 9 (ru-ru, en-us, zh-cn, ko-kr, ja-jp, de-de, fr-fr, es-es, it-it)

---

## Структура документов

### 📄 [Документ 1: Навигация и элементы интерфейса](user-stories-1-navigation-ui.md)

**US-1 до US-11** (11 историй)

- US-1: Переключение между вкладками (Онлайн-Табло, Расписание, Карта полётов)
- US-2: Переключение языка интерфейса (9 языков)
- US-3: Хлебные крошки
- US-4: Кнопка обратной связи
- US-5: Кнопка прокрутки к началу
- US-6: Боковая панель с фильтрами
- US-7: Популярные запросы (popular-requests)
- US-8: История поиска (in-memory)
- US-9: Локализация заголовков и мета-тегов
- US-10: Адаптивный дизайн
- US-11: Отсутствие ошибок в консоли

---

### 📄 [Документ 2: Онлайн доска полётов](user-stories-2-online-board.md)

**US-12 до US-22 (без US-21)** — 10 историй

- US-12: Поиск по номеру рейса (SU 1402)
- US-13: Выбор даты для поиска
- US-14: Поиск по городу отправления (с автодополнением)
- US-15: Поиск полётов с прибытием в город
- US-16: Поиск маршрута (А → Б)
- US-17: День вылета (переключение)
- US-18: Фильтр по времени вылета/прибытия
- US-19: Расширенный просмотр рейса
- US-20: Обработка пустых результатов
- US-22: Индикатор загрузки

---

### 📄 [Документ 3: Поиск расписания полётов](user-stories-3-schedule-search.md)

**US-23 до US-33** — 11 историй

- US-23: Переход на вкладку "Расписание"
- US-24: Ввод города отправления
- US-25: Ввод города прибытия
- US-26: Кнопка "Обменять"
- US-27: Выбор недели вылета
- US-28: Поиск туров (туда и обратно)
- US-29: Фильтр "Только прямые рейсы"
- US-30: Фильтр по времени вылета
- US-31: Фильтр по времени прибытия
- US-32: Проверка валидности параметров
- US-33: URL параметры расписания

---

### 📄 [Документ 4: Результаты расписания](user-stories-4-schedule-results.md)

**US-35 до US-46 (без US-43, 44, 45; US-40, 41 в Doc 5)** — 7 историй

- US-35: Страница результатов расписания
- US-36: Переключение между днями
- US-37: Навигация между неделями (week-tabs)
- US-38: Расширенный просмотр полёта
- US-39: Сортировка результатов (6 режимов)
- US-42: Многоугольные полёты (рейсы с пересадками)
- US-46: Кнопка "Назад" на странице деталей

---

### 📄 [Документ 5: Детали полёта](user-stories-5-flight-details.md)

**US-40, US-41, US-47 до US-56, US-62, US-63, US-64** — 15 историй

- US-40: Услуги на борту
- US-41: Расписание полёта и время
- US-47: Страница деталей полёта
- US-48: Основная информация о полёте
- US-49: Статус и детали статуса
- US-50: Информация о воздушном судне
- US-51: Информация об авиакомпании (operator-logo)
- US-52: Информация об аэропортах (station)
- US-53: Дни работы рейса
- US-54: Действия с полётом (купить, регистрация, печать, поделиться)
- US-55: Схема маршрута / timeline
- US-56: Информация о пересадках
- US-62: Поделиться информацией
- US-63: Отсутствие ошибок на странице
- US-64: Целостность данных

---

### 📄 [Документ 6: Карта полётов](user-stories-6-flights-map.md)

**US-65 до US-79 (без US-77, 78)** — 13 историй

- US-65: Переход на вкладку "Карта полётов"
- US-66: Отображение маршрутов на карте (Leaflet polyline)
- US-67: Выбор города отправления (city-autocomplete)
- US-68: Выбор города прибытия
- US-69: Обмен городов
- US-70: Выбор даты
- US-71: Фильтр "Внутренние рейсы" (toggle-switch)
- US-72: Фильтр "Международные рейсы"
- US-73: Фильтр "Соединительные рейсы"
- US-74: Зуммирование (Leaflet defaults, zoom 3-6)
- US-75: Панорамирование (Leaflet defaults, maxBounds)
- US-76: Popup при выборе маршрута
- US-79: Ссылка "Купить билет" (внешняя)

---

### 📄 [Документ 7: Обработка ошибок и доступность](user-stories-7-errors-accessibility.md)

**US-85 до US-108 (без US-87, 97)** — 22 истории

**Ошибки:**

- US-85: Ошибка 404
- US-86: Ошибка 500
- US-88: Timeout при загрузке
- US-89: Некорректный ввод
- US-90: Невалидная комбинация параметров

**Граничные случаи:**

- US-91: Пустой результат поиска
- US-92: Unicode символы
- US-93: Очень длинные имена
- US-94: Быстрая последовательность поисков

**Доступность:**

- US-95: Клавиатурная навигация (PrimeNG defaults)
- US-96: ARIA-метки
- US-98: Focus visible
- US-99: Масштабирование текста
- US-100: Сенсорная навигация

**Состояние и кэш:**

- US-101: Персистентное состояние (StateService)
- US-102: История браузера
- US-103: Обработка больших объёмов
- US-104: Кэширование (CacheService, 30s)

**Real-time и инфраструктура (добавлено в v4.1):**

- US-105: Обновление данных в реальном времени (SignalR + FadeService)
- US-106: Встроенный чат-бот
- US-107: Canonical URL и SEO мета-теги по страницам
- US-108: Отображение версии API (debug-режим)

---

## Статистика

| Документ                 | Диапазон                         | Историй | Статус                      |
| ------------------------ | -------------------------------- | ------- | --------------------------- |
| 1. Навигация             | US-1 до US-11                    | 11      | ✅ Все реализованы          |
| 2. Онлайн-Табло          | US-12 до US-22                   | 10      | ✅ Все реализованы          |
| 3. Поиск расписания      | US-23 до US-33                   | 11      | ✅ Все реализованы          |
| 4. Результаты расписания | US-35-39, 42, 46                 | 7       | ✅ Все реализованы          |
| 5. Детали полёта         | US-40, 41, 47-56, 62-64         | 15      | ✅ Все реализованы          |
| 6. Карта полётов         | US-65-76, 79                     | 13      | ✅ Все реализованы          |
| 7. Ошибки и доступность  | US-85-86, 88-96, 98-104, 105-108 | 22      | ✅ Все реализованы          |
| **ИТОГО**                | **89 историй**                   | **89**  | ✅ Полностью верифицировано |

---

## Удалённые документы и истории

### Полностью удалённые документы

| Документ                             | Историй | Причина                                         |
| ------------------------------------ | ------- | ----------------------------------------------- |
| 8. Многолётные рейсы (US-106-120)    | 15      | Только базовый показ работает (см. Doc 4 US-42) |
| 10. Производительность (US-136-150)  | 15      | Service Worker, A/B, Web Workers — нет в коде   |
| 11. Продвинутые функции (US-151-165) | 15      | Валюта, лояльность, RTL, IATA-поиск — нет       |
| 12. Граничные случаи (US-166-175)    | 10      | Кросс-таб синхронизация, recovery — нет         |
| **Всего удалено**                    | **55**  |                                                 |

### Удалённые истории внутри сохранённых документов

| Doc       | Удалено        | Причина                                                       |
| --------- | -------------- | ------------------------------------------------------------- |
| 2         | US-21          | Нет UI обработки сетевых ошибок                               |
| 3         | US-34          | Нет кнопки "Очистить" в форме                                 |
| 4         | US-43,44,45    | Нет фильтра по авиакомпании, кнопки "Купить", live-обновлений |
| 5         | US-57-61       | Нет ограничений, рецензий, истории, сравнения, print-версии   |
| 6         | US-77,78,80-84 | Нет кластеризации, выделения, легенды, ночного режима, моб.   |
| 7         | US-87,97,105   | Нет Service Worker, WCAG-проверки контраста, session timeout  |
| **Всего** | **35**         |                                                               |

---

## Источник верификации

Каждая оставшаяся история подтверждена в исходном коде по следующим путям:

- `ClientApp/src/app/features/online-board/` — Doc 2
- `ClientApp/src/app/features/schedule/` — Docs 3, 4
- `ClientApp/src/app/features/flights-map/` — Doc 6
- `ClientApp/src/app/features/popular-requests/` — Doc 1 US-7
- `ClientApp/src/app/modules/pages/details/` — Doc 5
- `ClientApp/src/app/components/` (city-autocomplete, dates-selectors, breadcrumds, search-history, page) — Doc 1, общие
- `ClientApp/src/app/shared/services/` (localization, state, cache) — Doc 1, Doc 7
- `ClientApp/src/app/modules/pages/error-pages/` — Doc 7

---

## Управление версиями

| Версия  | Дата           | Историй | Документов | Примечания                                            |
| ------- | -------------- | ------- | ---------- | ----------------------------------------------------- |
| 1.0     | Feb 2026       | 103     | 7          | Начальная версия                                      |
| 1.4     | Mar 2026       | 103     | 7          | Исправления, восстановлены US-40, US-41               |
| 2.0     | Apr 2026       | 210     | 14         | Расширение (многолётные, история, производительность) |
| 3.0     | Apr 2026       | 175     | 11         | Удалены удалённые: история, уведомления, аккаунты     |
| 4.0     | Apr 9 2026     | 85      | 7          | Кодовая верификация: удалено всё неподтверждённое     |
| **4.1** | **Apr 15 2026**| **89**  | **7**      | **Повторная верификация: +4 истории (SignalR, чат-бот, SEO, debug), обновлены тултипы, календарь, автодополнение, код-шеринг** |
