32 lines
4.3 KiB
Markdown
32 lines
4.3 KiB
Markdown
## MODIFIED Requirements
|
||
|
||
### Requirement: Создание и замена подключения T-Bank
|
||
Система SHALL позволять авторизованному User создать или заменить единственное подключение через `PUT /api/v1/tbank-connection` с token. Система MUST удалить внешние пробелы token, отклонить пустое значение как ошибку валидации и проверить token запросом T-Bank открытых счетов до сохранения. Пустой список счетов MUST считаться успешной проверкой. Успех MUST вернуть `200` с текущим статусом подключения; успешная замена MUST установить новый `connectedAt`. После успешного подключения MUST начинаться первый часовой обход без команды frontend. История стоимости прежних счетов MUST сохраняться, но MUST быть доступна только для счетов, доступ к которым подтверждён новым подключением.
|
||
|
||
#### Scenario: Успешное создание подключения без счетов
|
||
- **WHEN** User отправляет непустой token и T-Bank успешно возвращает пустой список открытых счетов
|
||
- **THEN** система сохраняет подключение, отвечает `200` с `{ connected: true, connectedAt: <RFC 3339 UTC timestamp> }` и не создаёт фиктивные счета
|
||
|
||
#### Scenario: Успешная замена подключения
|
||
- **WHEN** User с подключением отправляет другой token и T-Bank успешно его проверяет
|
||
- **THEN** система заменяет token, обновляет `connectedAt`, отвечает текущим статусом без token и начинает первый часовой обход нового подключения
|
||
|
||
#### Scenario: Невалидный token не заменяет существующее подключение
|
||
- **WHEN** T-Bank отклоняет token как неаутентифицированный или не имеющий прав
|
||
- **THEN** система отвечает `400` Problem Details с code `INVALID_TBANK_TOKEN` и сохраняет прежнее подключение без изменений
|
||
|
||
#### Scenario: T-Bank временно недоступен при проверке token
|
||
- **WHEN** проверка token не завершается из-за временной или иной upstream-ошибки
|
||
- **THEN** система отвечает `503` Problem Details с code `TBANK_UNAVAILABLE` и не создаёт либо не изменяет подключение
|
||
|
||
### Requirement: Удаление подключения T-Bank
|
||
Система SHALL позволять авторизованному User удалить своё подключение через `DELETE /api/v1/tbank-connection`. Удаление MUST быть идемпотентным и отвечать `204`; после успешного удаления backend MUST прекратить использовать удалённый token и сделать относящиеся к User текущие личные данные недоступными. История стоимости счёта MUST сохраняться, но MUST NOT раскрываться до подтверждения нового доступа к тому же счёту.
|
||
|
||
#### Scenario: Удаление существующего подключения
|
||
- **WHEN** User удаляет существующее подключение
|
||
- **THEN** система удаляет token, скрывает текущие личные данные и историю стоимости и отвечает `204`
|
||
|
||
#### Scenario: Повторное удаление подключения
|
||
- **WHEN** User удаляет уже отсутствующее подключение
|
||
- **THEN** система отвечает `204`, не раскрывая сохранённую историю
|