NFR (Нефункциональные требования)
Нефункциональные требования для создания заявки на досрочное расторжение договора
Производительность
| ID | Требование |
|---|---|
| NFR.01 | Время ответа REST endpoint при успешном создании заявки не должно превышать 2 секунд при нормальной нагрузке |
| NFR.02 | Время ответа REST endpoint при ошибке валидации не должно превышать 1 секунды |
| NFR.03 | API Gateway должен устанавливать timeout на gRPC-вызов не более 3 секунд |
| NFR.04 | Backend-сервис должен выполнять проверку наличия активной заявки через индексированный поиск |
Доступность
| ID | Требование |
|---|---|
| NFR.05 | REST endpoint должен быть доступен в режиме 24/7, кроме согласованных технологических окон |
| NFR.06 | При недоступности backend-сервиса API Gateway должен вернуть ошибку SERVICE_UNAVAILABLE |
| NFR.07 | При недоступности Notification Service создание заявки не должно откатываться, если заявка уже создана |
Надежность и консистентность
| ID | Требование |
|---|---|
| NFR.08 | Создание заявки должно быть атомарным в рамках операции записи в БД |
| NFR.09 | Повторная отправка запроса с тем же Idempotency-Key не должна создавать дубль заявки |
| NFR.10 | В БД должен быть контроль активной заявки по contractId для предотвращения дублей |
| NFR.11 | При ошибке после создания заявки API должен позволять повторно получить результат по идемпотентному ключу |
Безопасность
| ID | Требование |
|---|---|
| NFR.12 | Endpoint должен быть доступен только авторизованным пользователям |
| NFR.13 | Клиент не должен иметь возможность создать заявку по чужому договору |
| NFR.14 | Банковские реквизиты не должны логироваться в открытом виде |
| NFR.15 | В логах допускается маскирование счета в формате ***************12345 |
| NFR.16 | Все взаимодействия должны выполняться по защищенному каналу |
| NFR.17 | API Gateway должен передавать в backend только идентификатор клиента из доверенного авторизационного контекста |
Наблюдаемость
| ID | Требование |
|---|---|
| NFR.18 | Для каждого запроса должен формироваться или прокидываться correlationId |
| NFR.19 | correlationId должен присутствовать в логах API Gateway и backend-сервиса |
| NFR.20 | Должны собираться метрики количества успешных и ошибочных созданий заявок |
| NFR.21 | Должны собираться метрики времени ответа REST endpoint и gRPC-метода |
| NFR.22 | Должны быть алерты на рост доли ошибок 5xx |
Совместимость
| ID | Требование |
|---|---|
| NFR.23 | REST API должен быть версионирован через /api/v1 |
| NFR.24 | gRPC-контракт должен быть обратно совместим при добавлении новых необязательных полей |
| NFR.25 | Новые значения enum должны обрабатываться на Frontend через fallback-текст |
Ограничения по файлам
| ID | Требование |
|---|---|
| NFR.26 | Максимальное количество документов в заявке — 10 |
| NFR.27 | Максимальный размер одного документа — 10 МБ |
| NFR.28 | Допустимые форматы документов: PDF, JPG, JPEG, PNG |