28 lines
2.9 KiB
Markdown
28 lines
2.9 KiB
Markdown
## 1. Backend foundation
|
||
|
||
- [x] 1.1 Добавить gRPC dependencies, полный vendored набор T-Bank protobuf contracts из `references/moex-vibe`, environment validation для `TOKEN_ENCRYPTION_KEY`, `TBANK_GRPC_ENDPOINT`, `TBANK_RATE_LIMIT_PER_SECOND` и optional `TBANK_CA_CERT_PATH`.
|
||
- [x] 1.2 Добавить Prisma-модель `TbankConnection` с уникальным `userId`, зашифрованным token и `connectedAt`, затем создать migration.
|
||
- [x] 1.3 Реализовать AES-256-GCM storage для versioned base64 payload и fail-fast обработку невалидного encryption key без логирования secret.
|
||
|
||
## 2. T-Bank connection API
|
||
|
||
- [x] 2.1 Реализовать TLS T-Bank gRPC client для `UsersService/GetAccounts`: 10-second deadline, FIFO limit 5 RPS, максимум 50 ожидающих вызовов, один retry временных кодов через 1 second и safe error mapping.
|
||
- [x] 2.2 Реализовать authenticated `GET`, `PUT` и idempotent `DELETE /api/v1/tbank-connection`, включая OpenAPI DTO и Problem Details codes `INVALID_TBANK_TOKEN` и `TBANK_UNAVAILABLE`.
|
||
- [x] 2.3 Убедиться, что token и его фрагменты не попадают в HTTP responses, OpenAPI examples, exception messages, application logs или gRPC metadata logs.
|
||
- [x] 2.4 Добавить минимальные backend checks: crypto round-trip/invalid key, неуспешный `PUT` не сохраняет token, `DELETE` удаляет connection, endpoints требуют auth и не раскрывают token.
|
||
|
||
## 3. Generated API contract
|
||
|
||
- [x] 3.1 Запустить backend и перегенерировать коммитируемые frontend OpenAPI-типы из `/api/docs-json`.
|
||
|
||
## 4. Frontend settings
|
||
|
||
- [x] 4.1 Добавить FSD feature T-Bank connection на typed API client и React Query: загрузка статуса, create/replace, delete и обновление cache.
|
||
- [x] 4.2 Заменить settings placeholder секцией подключения: read-only token hint, password field, локализованный status/ошибки и disabled pending state.
|
||
- [x] 4.3 Добавить Mantine confirmation modal для удаления; после успешного `PUT` очищать token field, при error сохранять его. Проверить UI-flow вручную.
|
||
|
||
## 5. Documentation and verification
|
||
|
||
- [x] 5.1 Создать `docs/features/tbank-connection.md` с пользовательским потоком, API, configuration, RFC 3339 UTC, правилами secret handling и Mermaid sequence diagram; описать 5 RPS, FIFO queue 50, retry и MVP-ограничения.
|
||
- [x] 5.2 Запустить backend lint, tests и build; frontend lint, typecheck, tests, build и no-todo check; провалидировать OpenSpec change.
|