Files
flights_web/docs/USER_STORIES_INDEX.md
gnezim 71d0c983fd
CI / ci (push) Failing after 28s
Deploy / build-and-deploy (push) Failing after 5s
Fix API calls: bind fetch to globalThis, fix date format for calendar
Root cause of search not working: globalThis.fetch stored as a class
field loses its Window binding, causing 'Illegal invocation'. Fixed
with fetch.bind(globalThis).

Also fix calendar days endpoint date format from yyyyMMdd to
yyyy-MM-ddT00:00:00 matching Angular's ApiFormatterService.
2026-04-15 22:32:51 +03:00

16 KiB

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

ВЕРИФИЦИРОВАНО: Только реально реализованные функции 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: Навигация и элементы интерфейса

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: Онлайн доска полётов

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: Поиск расписания полётов

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: Результаты расписания

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: Детали полёта

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: Карта полётов

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: Обработка ошибок и доступность

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), обновлены тултипы, календарь, автодополнение, код-шеринг