Files
hotel-analysis/REQUIREMENTS.md
2026-01-12 22:42:22 +03:00

253 lines
19 KiB
Markdown
Raw Permalink 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.

# Требования к приложению HotelTask
## Содержание
1. [Функциональные требования](#1-функциональные-требования-fr)
2. [Нефункциональные требования](#2-нефункциональные-требования-nfr)
---
## 1. Функциональные требования (FR)
### 1.1 Управление пользователями (FR-USER)
| ID | Требование | Приоритет | MVP |
|----|------------|-----------|-----|
| FR-USER-001 | Система должна обеспечивать регистрацию пользователей | High | Да |
| FR-USER-002 | Система должна обеспечивать авторизацию пользователей | High | Да |
| FR-USER-003 | Система должна поддерживать назначение ролей пользователям | High | Да |
| FR-USER-004 | Система должна позволять редактировать профиль пользователя | Medium | Да |
| FR-USER-005 | Система должна позволять деактивировать пользователей | Medium | Да |
| FR-USER-006 | Система должна поддерживать привязку пользователя к подразделению | High | Да |
### 1.2 Роли и права доступа (FR-ROLE)
| ID | Требование | Приоритет | MVP |
|----|------------|-----------|-----|
| FR-ROLE-001 | Система должна поддерживать роль "Администратор системы" с полным доступом | High | Да |
| FR-ROLE-002 | Система должна поддерживать роль "Менеджер/Супервайзер" для управления задачами | High | Да |
| FR-ROLE-003 | Система должна поддерживать роль "Линейный сотрудник" для выполнения задач | High | Да |
| FR-ROLE-004 | Система должна поддерживать API-доступ для внешних систем | High | Да |
| FR-ROLE-005 | Система должна позволять настраивать гранулярные права доступа | Medium | Нет |
### 1.3 Управление задачами (FR-TASK)
| ID | Требование | Приоритет | MVP |
|----|------------|-----------|-----|
| FR-TASK-001 | Система должна позволять создавать задачу с названием и описанием | High | Да |
| FR-TASK-002 | Система должна поддерживать типы задач (уборка, ремонт, обслуживание и т.д.) | High | Да |
| FR-TASK-003 | Система должна поддерживать приоритеты задач (низкий, средний, высокий, срочный) | High | Да |
| FR-TASK-004 | Система должна позволять указывать срок выполнения задачи | High | Да |
| FR-TASK-005 | Система должна позволять назначать ответственного сотрудника | High | Да |
| FR-TASK-006 | Система должна позволять назначать супервайзера задачи | Medium | Да |
| FR-TASK-007 | Система должна позволять редактировать задачу | High | Да |
| FR-TASK-008 | Система должна позволять удалять задачу (при наличии прав) | Medium | Да |
| FR-TASK-009 | Система должна позволять переназначать исполнителей | High | Да |
| FR-TASK-010 | Система должна поддерживать трекинг времени выполнения задачи | Medium | Нет |
| FR-TASK-011 | Система должна позволять создавать встречную задачу | Medium | Нет |
### 1.4 Статусы задач (FR-STATUS)
| ID | Требование | Приоритет | MVP |
|----|------------|-----------|-----|
| FR-STATUS-001 | Система должна поддерживать статус "Новая" | High | Да |
| FR-STATUS-002 | Система должна поддерживать статус "В работе" | High | Да |
| FR-STATUS-003 | Система должна поддерживать статус "Ожидает" | High | Да |
| FR-STATUS-004 | Система должна поддерживать статус "Выполнена" | High | Да |
| FR-STATUS-005 | Система должна поддерживать статус "Пауза" | Medium | Да |
| FR-STATUS-006 | Система должна поддерживать статус "Отменена" | Medium | Да |
| FR-STATUS-007 | Сотрудник должен иметь возможность менять статус своих задач | High | Да |
### 1.5 Уведомления (FR-NOTIFY)
| ID | Требование | Приоритет | MVP |
|----|------------|-----------|-----|
| FR-NOTIFY-001 | Система должна уведомлять сотрудника о назначении новой задачи (push) | High | Да |
| FR-NOTIFY-002 | Система должна уведомлять менеджера о завершении задачи | High | Да |
| FR-NOTIFY-003 | Система должна отправлять напоминания о приближении срока выполнения | Medium | Да |
| FR-NOTIFY-004 | Система должна поддерживать настройку типов уведомлений для пользователя | Low | Нет |
### 1.6 Комментарии и вложения (FR-ATTACH)
| ID | Требование | Приоритет | MVP |
|----|------------|-----------|-----|
| FR-ATTACH-001 | Система должна позволять добавлять комментарии к задачам | High | Да |
| FR-ATTACH-002 | Система должна позволять прикреплять фотографии к задачам | High | Да |
| FR-ATTACH-003 | Система должна позволять прикреплять файлы к задачам | Medium | Да |
| FR-ATTACH-004 | Система должна сохранять историю изменений задачи | Medium | Да |
### 1.7 Поиск и фильтрация (FR-SEARCH)
| ID | Требование | Приоритет | MVP |
|----|------------|-----------|-----|
| FR-SEARCH-001 | Система должна обеспечивать поиск задач по названию | High | Да |
| FR-SEARCH-002 | Система должна обеспечивать поиск задач по описанию | Medium | Да |
| FR-SEARCH-003 | Система должна обеспечивать фильтрацию по статусу | High | Да |
| FR-SEARCH-004 | Система должна обеспечивать фильтрацию по приоритету | High | Да |
| FR-SEARCH-005 | Система должна обеспечивать фильтрацию по сотруднику | High | Да |
| FR-SEARCH-006 | Система должна обеспечивать фильтрацию по дате выполнения | Medium | Да |
| FR-SEARCH-007 | Система должна обеспечивать фильтрацию по типу задачи | Medium | Да |
### 1.8 Отчеты и аналитика (FR-REPORT)
| ID | Требование | Приоритет | MVP |
|----|------------|-----------|-----|
| FR-REPORT-001 | Система должна предоставлять отчет по выполненным задачам за период | Medium | Нет |
| FR-REPORT-002 | Система должна предоставлять статистику по сотрудникам | Medium | Нет |
| FR-REPORT-003 | Система должна предоставлять статистику по типам задач | Medium | Нет |
| FR-REPORT-004 | Система должна предоставлять процент просроченных задач | Medium | Нет |
### 1.9 Интеграции (FR-INT)
| ID | Требование | Приоритет | MVP |
|----|------------|-----------|-----|
| FR-INT-001 | Система должна получать бронирования из PMS с информацией о гостях и номерах | High | Да |
| FR-INT-002 | Система должна получать статус номера из PMS | High | Да |
| FR-INT-003 | Система должна изменять статус номера в PMS | High | Да |
| FR-INT-004 | Система должна взаимодействовать с Консьерж Resonline | Medium | Нет |
| FR-INT-005 | Система должна поддерживать подключение произвольных адаптеров | High | Да |
| FR-INT-006 | Адаптер должен регистрировать поддерживаемые типы событий | High | Да |
### 1.10 Управление связями между системами (FR-CONN)
| ID | Требование | Приоритет | MVP |
|----|------------|-----------|-----|
| FR-CONN-001 | Система должна позволять настраивать маршрутизацию событий между адаптерами | High | Да |
| FR-CONN-002 | Система должна предоставлять интерфейс для настройки связей (событие из А -> Б, В, Г) | High | Да |
| FR-CONN-003 | Система должна хранить реестр подключенных адаптеров и их возможностей | High | Да |
### 1.11 Планировщик задач (FR-SCHED)
| ID | Требование | Приоритет | MVP |
|----|------------|-----------|-----|
| FR-SCHED-001 | Система должна поддерживать создание регулярных/периодических задач | Medium | Нет |
| FR-SCHED-002 | Система должна автоматически создавать задачи по расписанию | Medium | Нет |
### 1.12 Модуль мероприятий (FR-EVENT)
| ID | Требование | Приоритет | MVP |
|----|------------|-----------|-----|
| FR-EVENT-001 | Система должна позволять описывать мероприятие | Low | Нет |
| FR-EVENT-002 | Система должна автоматически декомпозировать мероприятие на задачи | Low | Нет |
| FR-EVENT-003 | Система должна поддерживать массовое создание связанных задач | Low | Нет |
| FR-EVENT-004 | Система должна формировать документ "функшн" на основе данных мероприятия | Low | Нет |
### 1.13 Специализированный интерфейс горничных (FR-HOUSE)
| ID | Требование | Приоритет | MVP |
|----|------------|-----------|-----|
| FR-HOUSE-001 | Система должна предоставлять интерфейс с пошаговым процессом уборки | Medium | Нет |
| FR-HOUSE-002 | Система должна требовать фото до и после уборки | Medium | Нет |
| FR-HOUSE-003 | Система должна фиксировать время начала и окончания уборки | Medium | Нет |
### 1.14 Интерфейс для гостей (FR-GUEST)
| ID | Требование | Приоритет | MVP |
|----|------------|-----------|-----|
| FR-GUEST-001 | Система должна предоставлять интерфейс для гостей (бот/веб) | Low | Нет |
| FR-GUEST-002 | Система должна предоставлять набор базовых услуг с кнопками | Low | Нет |
| FR-GUEST-003 | Система должна автоматически создавать задачи из запросов гостей | Low | Нет |
---
## 2. Нефункциональные требования (NFR)
### 2.1 Производительность (NFR-PERF)
| ID | Требование | Значение |
|----|------------|----------|
| NFR-PERF-001 | Время отклика API при стандартной нагрузке | < 500ms |
| NFR-PERF-002 | Время отклика API для критических операций | < 200ms |
| NFR-PERF-003 | Прогнозируемое количество пользователей на отель | 20-50 |
| NFR-PERF-004 | Одновременных подключений на отель | до 100 |
| NFR-PERF-005 | Пропускная способность системы | 1000 задач/час на отель |
### 2.2 Доступность (NFR-AVAIL)
| ID | Требование | Значение |
|----|------------|----------|
| NFR-AVAIL-001 | Доступность системы (SLA) | 99.5% |
| NFR-AVAIL-002 | Допустимое время простоя в месяц | < 3.6 часа |
| NFR-AVAIL-003 | RTO (Recovery Time Objective) | 1 час |
| NFR-AVAIL-004 | RPO (Recovery Point Objective) | 15 минут |
### 2.3 Масштабируемость (NFR-SCALE)
| ID | Требование | Описание |
|----|------------|----------|
| NFR-SCALE-001 | Система должна поддерживать горизонтальное масштабирование сервисов | Микросервисная архитектура |
| NFR-SCALE-002 | Система должна поддерживать добавление новых адаптеров без изменения ядра | Plugin architecture |
| NFR-SCALE-003 | Система должна поддерживать мультитенантность | Несколько отелей на одной инсталляции |
### 2.4 Безопасность (NFR-SEC)
| ID | Требование | Описание |
|----|------------|----------|
| NFR-SEC-001 | Все API-запросы должны быть аутентифицированы | JWT/OAuth2 |
| NFR-SEC-002 | Передача данных должна быть зашифрована | HTTPS/TLS 1.3 |
| NFR-SEC-003 | Пароли должны храниться в зашифрованном виде | bcrypt/argon2 |
| NFR-SEC-004 | Система должна вести журнал аудита | audit-service |
| NFR-SEC-005 | Система должна поддерживать RBAC | Ролевая модель доступа |
| NFR-SEC-006 | Система должна защищать от основных OWASP уязвимостей | SQL injection, XSS, CSRF |
### 2.5 Совместимость (NFR-COMPAT)
| ID | Требование | Описание |
|----|------------|----------|
| NFR-COMPAT-001 | Веб-интерфейс должен корректно работать в современных браузерах | Chrome, Firefox, Safari, Edge (последние 2 версии) |
| NFR-COMPAT-002 | Веб-интерфейс должен быть адаптивным | Mobile-first design |
| NFR-COMPAT-003 | Мобильное приложение должно поддерживать Android | Android 8.0+ |
| NFR-COMPAT-004 | Мобильное приложение должно поддерживать iOS | iOS 14+ |
### 2.6 Поддерживаемость (NFR-MAINT)
| ID | Требование | Описание |
|----|------------|----------|
| NFR-MAINT-001 | Код должен быть покрыт unit-тестами | > 70% coverage |
| NFR-MAINT-002 | Система должна предоставлять метрики для мониторинга | Prometheus-compatible |
| NFR-MAINT-003 | Система должна предоставлять структурированные логи | JSON format |
| NFR-MAINT-004 | Документация API должна быть в формате OpenAPI | Swagger/OpenAPI 3.0 |
| NFR-MAINT-005 | Модульная структура для возможности продажи отдельных модулей | Loosely coupled services |
### 2.7 Локализация (NFR-L10N)
| ID | Требование | Описание |
|----|------------|----------|
| NFR-L10N-001 | Интерфейс должен поддерживать русский язык | Primary |
| NFR-L10N-002 | Интерфейс должен поддерживать английский язык | Secondary |
| NFR-L10N-003 | Система должна поддерживать добавление новых языков | i18n ready |
### 2.8 Инфраструктура (NFR-INFRA)
| ID | Требование | Технология |
|----|------------|------------|
| NFR-INFRA-001 | База данных | PostgreSQL |
| NFR-INFRA-002 | Кэширование | Redis |
| NFR-INFRA-003 | Файловое хранилище | S3-compatible |
| NFR-INFRA-004 | Очередь сообщений | Apache Kafka |
| NFR-INFRA-005 | Backend-сервисы | Python |
| NFR-INFRA-006 | Web Admin Frontend | TypeScript, React |
| NFR-INFRA-007 | API Gateway | REST API, gRPC, WebSocket |
### 2.9 Надежность доставки сообщений (NFR-MSG)
| ID | Требование | Описание |
|----|------------|----------|
| NFR-MSG-001 | Гарантия доставки сообщений | At-least-once delivery |
| NFR-MSG-002 | Сообщения должны сохраняться при недоступности получателя | Kafka persistence |
| NFR-MSG-003 | Система должна поддерживать retry-механизм | Exponential backoff |
| NFR-MSG-004 | Система должна поддерживать dead-letter queue | DLQ для необработанных сообщений |
---
## 3. Глоссарий
| Термин | Описание |
|--------|----------|
| PMS | Property Management System - система управления отелем |
| Адаптер | Компонент, обеспечивающий интеграцию с внешней системой |
| Событие | Стандартизированное сообщение, передаваемое между системами через Kafka |
| Задача | Единица работы в системе с назначенным исполнителем и статусом |
| Функшн | Документ с описанием мероприятия и задач для служб отеля |
| Хаускипинг | Служба уборки номеров |
| Хаусмен | Сотрудник, отвечающий за перестановку мебели и оборудования |