docs: simplify system documentation
Docs security / security (push) Successful in 7s
Docs verify / verify (push) Successful in 9s

This commit is contained in:
2026-09-14 05:51:29 +03:00
parent 67f152d365
commit 9b19a5cf4d
30 changed files with 104 additions and 2445 deletions
+1 -1
View File
@@ -15,7 +15,7 @@
| Что считается кэшем и когда прежние данные теряют право на повторное использование? | [Свежесть данных](cross-cutting/data-freshness.md) |
| Как обрабатываются ошибки и ожидание? | [HTTP API и ошибки](http-api.md), [состояния интерфейса](cross-cutting/ui-resilience.md) |
| Как связать ошибку с обработкой запроса? | [Наблюдаемость](http-api.md#наблюдаемость) |
| Как устроено подтверждённое локальное окружение? | [Container](containers.md#представление-container), [локальная диагностика](../development/local-workspace.md) |
| Как устроено подтверждённое локальное окружение? | [Container](containers.md#представление-container), [качество и ограничения](containers.md#качество-и-ограничения) |
| Что означают предметные термины? | [Глоссарий](../glossary.md) |
Эта карта покрывает вопросы архитектуры там, где о них есть подтверждённое
+18 -2
View File
@@ -104,6 +104,20 @@ credentials не являются сохраняемым представлен
[модель свежести](cross-cutting/data-freshness.md) отделяет это от хранения
учётных данных.
## Сохранение и восстановление данных
Резервная копия SQLite должна быть согласованной: для работающей базы
используется SQLite backup API с учётом WAL. Несогласованное копирование
файлов базы и WAL не сохраняет целостный снимок. Восстановление проверяется
на отдельной копии. Ключ шифрования подключения хранится отдельно от базы;
его потеря делает сохранённый T-Bank token нечитаемым.
Откат приложения требует совместимости предыдущей версии с сохранённой
схемой. Расширенная банковскими таблицами схема сохраняет пользователей,
сессии и подключения. Возврат старого backup поверх новой истории удалил бы
введённые банковские операции; откат приложения не равнозначен откату данных.
Совместимость произвольных будущих версий этим не гарантируется.
## Стратегия решения и её основания
Локальная база и Prisma дают типизированный доступ к локальному состоянию
@@ -137,8 +151,10 @@ access token и вращаемый refresh token. [Политика query-кэш
и [HTTP API](http-api.md#error-contract).
Подтверждённая топология — локальная SPA и локальный API с файлом SQLite.
Origin браузера, адрес API и cookie policy должны быть согласованы; условия
и диагностика описаны в [локальном окружении](../development/local-workspace.md).
Origin браузера, адрес API и cookie policy должны быть согласованы.
`localhost` и `127.0.0.1` задают разные browser-границы для cookie и CORS.
Локальный HTTP поддерживается в development-режиме backend; в остальных
режимах refresh-cookie имеет Secure flag и требует защищённого соединения.
Наличие локального запуска не задаёт production-топологию или гарантии SLA.
Кэши и лимитер T-Bank действуют на экземпляр backend. Ротация ключа шифрования
+4 -11
View File
@@ -4,8 +4,10 @@
Backend генерирует OpenAPI из собственного публичного API. Frontend использует
предоставленный OpenAPI snapshot как актуальный вход и локально генерирует
типизированный клиент. Направление описано в
[OpenAPI contract flow](../development/runtime-openapi-verification.md).
типизированный клиент. Backend владеет контрактом, а подготовка и доставка
схемы находятся вне frontend. Это разделение принято в
[ADR 002](../adr/002-nest-generated-openapi-contract.md) и
[ADR 014](../adr/014-trusted-openapi-input.md).
API имеет prefix `/api/v1`; Swagger публикуется для локальной разработки по
environment policy, а не используется frontend в runtime.
@@ -54,15 +56,6 @@ T-Bank token failure и временная недоступность имеют
[Connection API](../integrations/tbank.md#состояние-и-ошибки). Raw upstream/Prisma errors
и secrets не передаются frontend.
## Граница доказательства
OpenAPI snapshot задаёт frontend transport types, но сам по себе не доказывает
результат каждого запроса. Безопасная обработка неожиданной ошибки проверяется
отдельно. Валидация, доступ, статусы и cookie требуют проверки полного
HTTP-потока; атомарность хранения — проверки с изолированной реальной базой.
Известное ограничение сквозных проверок описано в
[проверке backend](../development/verification.md).
## Наблюдаемость
Backend пишет структурированные JSON-события в stdout через Pino. Обработка