docs: reorganize system knowledge by domain
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
# Сопровождение системы
|
||||
|
||||
Здесь описаны локальное окружение, согласованность компонентов, проверка
|
||||
качества и поддержание проектных знаний. Материалы самостоятельны и не
|
||||
требуют открытия внутренних файлов приложений.
|
||||
Здесь описаны локальное окружение, согласованность компонентов, границы
|
||||
проверки и поддержание проектных знаний. Команды разработки и coding conventions
|
||||
принадлежат [frontend](../../frontend/AGENTS.md) и [backend](../../backend/AGENTS.md).
|
||||
|
||||
- [Локальное окружение](local-workspace.md) — предпосылки работы, первый пользовательский сценарий и диагностика.
|
||||
- [Frontend](frontend-workflow.md) / [backend](backend-workflow.md) — ответственность приложений и границы проверки.
|
||||
- [Проверки системы](verification.md) — что доказывают проверки интерфейса, API и хранения данных, известные ограничения.
|
||||
- [HTTP contract](runtime-openapi-verification.md) — направление генерации OpenAPI и проверка совместимости.
|
||||
- [Дизайн-система](design-system.md) / [UI-каталог](ui-catalog.md) — визуальные роли, реальные состояния и ограничения примеров.
|
||||
- [Принципы изменений](engineering-governance.md) — связность системы, риск и доказательства результата.
|
||||
- [Ведение документации](documentation.md) — самостоятельные объяснения и их обновление вместе с системой.
|
||||
- [Ведение документации](../CONTRIBUTING.md) — самостоятельные объяснения и их обновление вместе с системой.
|
||||
- [Контекст знаний](agent-token-efficiency.md) / [проверочные вопросы](agent-context-evals.md) — поиск ответа и обнаружение пробелов документации.
|
||||
- [OpenSpec](openspec-authority-and-lifecycle.md) — роль сохранённых требований и статус прежнего процесса.
|
||||
|
||||
@@ -17,6 +17,5 @@
|
||||
|
||||
[Remediation registry](audit-remediation.md) и [Completion Evidence](completion-evidence.md)
|
||||
сохраняют статусы, исходные адреса и результаты прежних проверок.
|
||||
[Аудиты](../audits/README.md) — неизменяемые снимки своего времени. Эти материалы
|
||||
не входят в самостоятельное описание текущей системы; их внутренние ссылки
|
||||
Эти материалы не входят в самостоятельное описание текущей системы; их внутренние ссылки
|
||||
могут требовать архивного окружения и не являются условием чтения документации.
|
||||
|
||||
@@ -8,18 +8,18 @@
|
||||
|
||||
| Вопрос | Объяснение | Существенная граница |
|
||||
| --- | --- | --- |
|
||||
| Кто подтверждает доступ к брокерскому счёту? | [Обзор](../architecture/system-overview.md#предметная-модель) | Сессия подтверждает пользователя, но идентификатор счёта не доказывает доступ |
|
||||
| Как меняются финансовые данные при замене token? | [Подключение](../features/tbank-connection.md#граница-финансового-кэша) | Данные прежнего поколения не становятся сохранённым снимком нового подключения |
|
||||
| Что происходит при конкурентном refresh? | [Authentication](../features/authentication.md), [ADR 009](../adr/009-concurrent-refresh-rotation-policy.md) | Один победитель; заменённый token не отзывает его сессию сам по себе |
|
||||
| Как восстанавливается интерфейс после ошибки обновления? | [UI resilience](../features/frontend-ui-resilience.md) | Фоновая ошибка отличается от первой загрузки и смены пользователя |
|
||||
| Чем будущая выплата отличается от дохода? | [События](../features/brokerage-account-upcoming-events.md), [доходы](../features/brokerage-account-income-analytics.md) | Прогноз не подтверждает личное зачисление |
|
||||
| Можно ли складывать разные валюты или заменить неизвестное нулём? | [Money](../architecture/domain-glossary.md#money) | Точность, валюта и отсутствие значения сохраняются отдельно |
|
||||
| Откуда рейтинг и доходность облигации? | [Bond detail](../features/bond-detail.md) | Рейтинг эмитента не заменяет рейтинг выпуска; рыночная доходность не равна личному результату |
|
||||
| Кто подтверждает доступ к брокерскому счёту? | [Обзор](../overview.md#как-связаны-представления) | Сессия подтверждает пользователя, но идентификатор счёта не доказывает доступ |
|
||||
| Как меняются финансовые данные при замене token? | [Подключение](../integrations/tbank.md#граница-финансового-кэша) | Данные прежнего поколения не становятся сохранённым снимком нового подключения |
|
||||
| Что происходит при конкурентном refresh? | [Authentication](../domains/authentication/overview.md), [ADR 009](../adr/009-concurrent-refresh-rotation-policy.md) | Один победитель; заменённый token не отзывает его сессию сам по себе |
|
||||
| Как восстанавливается интерфейс после ошибки обновления? | [UI resilience](../architecture/cross-cutting/ui-resilience.md) | Фоновая ошибка отличается от первой загрузки и смены пользователя |
|
||||
| Чем будущая выплата отличается от дохода? | [События](../domains/income/upcoming-events.md), [доходы](../domains/income/overview.md) | Прогноз не подтверждает личное зачисление |
|
||||
| Можно ли складывать разные валюты или заменить неизвестное нулём? | [Money](../glossary.md#money) | Точность, валюта и отсутствие значения сохраняются отдельно |
|
||||
| Откуда рейтинг и доходность облигации? | [Bond detail](../domains/instruments/bonds.md) | Рейтинг эмитента не заменяет рейтинг выпуска; рыночная доходность не равна личному результату |
|
||||
| Доказывает ли OpenAPI правильность ошибки запроса? | [HTTP API](../architecture/http-api.md#error-contract) | Равенство схем не доказывает полный HTTP-поток |
|
||||
| Что гарантирует проверка хранения данных? | [Backend](backend-workflow.md#локальная-проверка) | Проверка с подставными ответами не доказывает атомарность реальной базы |
|
||||
| Как ограничиваются обращения к внешнему сервису? | [T-Bank](../features/tbank-connection.md#конфигурация-и-ограничения) | Повторы, очередь и лимит ограничены; TLS остаётся включённым |
|
||||
| Что гарантирует проверка хранения данных? | [Backend](verification.md#api-и-хранение-данных) | Проверка с подставными ответами не доказывает атомарность реальной базы |
|
||||
| Как ограничиваются обращения к внешнему сервису? | [T-Bank](../integrations/tbank.md#конфигурация-и-ограничения) | Повторы, очередь и лимит ограничены; TLS остаётся включённым |
|
||||
| Защищает ли фильтрация логов любое сообщение? | [ADR 008](../adr/008-pino-backend-logging.md) | Секрет в свободном тексте требует отдельной проверки |
|
||||
| Есть ли восстановление пароля по письму? | [Ограничения auth](../features/authentication.md#limitations) | Пример будущего сценария не является поставленной возможностью |
|
||||
| Есть ли восстановление пароля по письму? | [Ограничения auth](../domains/authentication/overview.md#ограничения) | Пример будущего сценария не является поставленной возможностью |
|
||||
|
||||
## Что измерять
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
## Routing context
|
||||
|
||||
[Тематический индекс](../AI_INDEX.md) направляет к нужному предмету:
|
||||
[Тематическая карта](../README.md#предметные-области) направляет к нужному предмету:
|
||||
аутентификация связана с безопасностью и сессиями, денежный показатель —
|
||||
с его происхождением и валютой, ошибка интерфейса — с восстановлением данных.
|
||||
Вопрос о внешнем виде не требует автоматически изучать хранение данных.
|
||||
@@ -22,7 +22,7 @@
|
||||
При расхождении возможны устаревшее объяснение, дефект реализации или
|
||||
незавершённое изменение. Неустановленный смысл, особенно в безопасности,
|
||||
данных и публичном контракте, явно отмечается для ручного решения.
|
||||
Карта ответственности за знания — [ведение документации](documentation.md).
|
||||
Карта ответственности за знания — [ведение документации](../CONTRIBUTING.md).
|
||||
|
||||
## Recovery и handoff
|
||||
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
# Backend: ответственность и проверка
|
||||
|
||||
## Предварительные условия
|
||||
|
||||
Backend обслуживает публичный HTTP API, локальные сессии, хранение данных
|
||||
и интеграции с внешними источниками. Локальная поставка использует Node 22
|
||||
и SQLite. Окружению нужны адрес frontend, адрес базы, секрет подписи сессий
|
||||
и отдельный ключ шифрования подключения. T-Bank token вводится пользователем
|
||||
через настройки и не является общим секретом окружения.
|
||||
|
||||
Назначение параметров, согласование адресов и сохранение данных описаны в
|
||||
[локальном окружении](local-workspace.md).
|
||||
|
||||
## Локальная проверка
|
||||
|
||||
Проверка backend объединяет статический анализ, проверку типов приложения
|
||||
и тестов, автоматические сценарии и сборку. Она не изменяет исходные материалы;
|
||||
автоматическое исправление форматирования не считается доказательством проверки.
|
||||
Диагностика покрытия доступна отдельно, общего числового порога для backend нет.
|
||||
|
||||
[Сравнение OpenAPI](runtime-openapi-verification.md) проверяет соответствие
|
||||
публичного контракта ожиданиям frontend. Валидация запросов, cookie, доступ
|
||||
и ошибки требуют полного HTTP-потока; целостность и конкурентные изменения
|
||||
данных — проверки с изолированной реальной базой.
|
||||
|
||||
**Известное ограничение:** движок Prisma 7.9.1 при применении миграций к новой
|
||||
SQLite-базе возвращает `Schema engine error` до запуска сквозных тестов.
|
||||
Это воспроизведено и при проверке локального окружения 12 сентября 2026 года.
|
||||
Успех остальных проверок не подтверждает прохождение этой границы. Условие
|
||||
пересмотра — стабильная версия с тремя последовательными успешными применениями
|
||||
миграций на новых базах под Node 22.
|
||||
@@ -38,6 +38,10 @@ dark, red, green, yellow, grape и orange; базовые white/black, отте
|
||||
Отдельные градиенты, тени и размеры экранов остаются локальными визуальными
|
||||
решениями; переход всех существующих значений в общую шкалу не завершён.
|
||||
|
||||
Точные значения определены в [токенах приложения](../../frontend/src/shared/theme/tokens.json),
|
||||
согласованное поведение — в [спецификации дизайн-системы](../../specs/openspec/specs/frontend-design-system/spec.md).
|
||||
Эта страница объясняет их смысл, не вводя отдельную систему значений.
|
||||
|
||||
## Переносимый JSON
|
||||
|
||||
Опубликованные токены представлены в собственном формате WealthLedger,
|
||||
@@ -70,7 +74,7 @@ dark, red, green, yellow, grape и orange; базовые white/black, отте
|
||||
аутентификацией. Состояние выполнения действия отличается от загрузки всей
|
||||
страницы. При фоновом обновлении доступные данные сохраняются с локальным
|
||||
индикатором; правила восстановления описаны в
|
||||
[UI resilience](../features/frontend-ui-resilience.md).
|
||||
[UI resilience](../architecture/cross-cutting/ui-resilience.md).
|
||||
|
||||
Каркас с продуктовой навигацией не входит в заявленный общий набор.
|
||||
Предметные карточки и композиции представлены в [UI-каталоге](ui-catalog.md).
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
# Ведение документации
|
||||
|
||||
Документация объясняет систему независимо от размещения исходного кода.
|
||||
За актуальность затронутого объяснения отвечает автор изменения предметной
|
||||
области; проверка сопоставляет изложение с фактическим поведением и принятыми
|
||||
решениями. Ответственность подсистем описана в [карте возможностей](../features/README.md).
|
||||
|
||||
## Владельцы фактов
|
||||
|
||||
| Тип знания | Где объясняется | Граница достоверности |
|
||||
| --- | --- | --- |
|
||||
| Устройство и взаимодействие системы | [Обзор](../architecture/system-overview.md) | Описывает существующие подсистемы, данные и потоки |
|
||||
| Наблюдаемое поведение | [Возможности](../features/README.md) | Сценарий, инвариант, ошибка и ограничение объясняются здесь полностью |
|
||||
| Значение терминов | [Глоссарий](../architecture/domain-glossary.md) | Одно определение, ссылки из связанных сценариев |
|
||||
| HTTP-контракт | [HTTP API](../architecture/http-api.md), публичный OpenAPI backend | Объяснение семантики не создаёт второй независимо редактируемый wire contract |
|
||||
| Причины значимого решения | [ADR](../adr/README.md) | Контекст, решение и последствия относятся к указанному статусу решения |
|
||||
| Окружение и восстановление | [Локальное окружение](local-workspace.md) | Предпосылки и ограничения описаны без знания устройства репозиториев |
|
||||
| Принципы сопровождения | [Engineering governance](engineering-governance.md) | Объясняют согласованность и доказательства результата |
|
||||
| Гипотезы и внешние наблюдения | [Исследования](../research/README.md) | Рекомендация не означает реализованную возможность |
|
||||
| Результаты прежних проверок | [Исторические свидетельства](README.md#исторические-свидетельства) | Действительны для состояния и условий своего времени |
|
||||
|
||||
Поведенческие требования и предложения изменений могут отдельно согласовываться
|
||||
в OpenSpec. Их роль описана [здесь](openspec-authority-and-lifecycle.md);
|
||||
понимание текущего сценария не требует доступа к хранилищу спецификаций.
|
||||
|
||||
При конфликте возможны устаревший текст, нарушение договорённости реализацией
|
||||
или незавершённое изменение. Текущее поведение не отменяет согласованное
|
||||
требование автоматически. Неустановленный смысл явно отмечается для ручного
|
||||
решения; особенно это важно для безопасности, данных и публичного контракта.
|
||||
|
||||
## Куда поместить знание
|
||||
|
||||
Объяснение принадлежит существующему документу о соответствующей области.
|
||||
Понятие определяется в глоссарии; сценарий связывает его с поведением и
|
||||
ограничениями; ADR сохраняет причину выбора; исследование — ещё не принятый
|
||||
вариант и его источники. Новый документ нужен для самостоятельного вопроса,
|
||||
которому нет подходящего места. Навигация делает его доступным из индекса.
|
||||
|
||||
Один факт имеет одно полное объяснение, на которое ссылаются остальные страницы.
|
||||
Ссылка внутри документации уточняет контекст, а не скрывает необходимое условие
|
||||
понимания за внутренним файлом другого репозитория.
|
||||
|
||||
## Содержание страницы
|
||||
|
||||
Связное объяснение содержит назначение, ответственность компонентов,
|
||||
предпосылки и инварианты, основной поток, ошибки, восстановление и ограничения.
|
||||
Диаграмма нужна, когда помогает понять взаимодействие. Это ориентир, а не
|
||||
обязательный набор пустых разделов.
|
||||
|
||||
Вместо имён классов, внутренних вспомогательных функций и настроек разработки
|
||||
излагается их архитектурный или функциональный смысл. Публичные API, единицы
|
||||
показателей, внешние системы и принятые технологические решения остаются
|
||||
частью объяснения, если нужны читателю. Детали разработки и инструкции
|
||||
инструментам не входят в описание системы.
|
||||
|
||||
Статус понятен из вступления или индекса: текущее поведение, объяснение решения,
|
||||
исследование или история. Дата наблюдения не гарантирует актуальность спустя
|
||||
время. Для замены принятого решения сохраняются его прежний контекст и ссылка
|
||||
на последующее решение.
|
||||
|
||||
## Обновление вместе с кодом
|
||||
|
||||
| Что изменилось в системе | Какое знание затронуто |
|
||||
| --- | --- |
|
||||
| Сценарий, инвариант, ошибка или восстановление | Объяснение возможности и её ограничений |
|
||||
| Ответственность, внешний источник или поток данных | Обзор, схема и причина значимого решения |
|
||||
| Значение понятия | Глоссарий и связанные сценарии |
|
||||
| Окружение, диагностика или граница проверки | Материалы сопровождения |
|
||||
| Новая возможность | Карта возможностей и тематический индекс |
|
||||
| Только внутреннее устройство без изменения описанных знаний | Изменение документации может не требоваться |
|
||||
|
||||
Изменения нескольких компонентов относятся к общей задаче; объяснение
|
||||
поставленного результата не должно обещать ещё отсутствующую часть.
|
||||
Смысловая согласованность важнее совпадения названий задач и формальных отметок.
|
||||
|
||||
## Проверка
|
||||
|
||||
Проверка охватывает Markdown, внутренние ссылки и якоря, доступность страниц
|
||||
через навигацию и чтение основной документации без соседних репозиториев.
|
||||
Внешние URL и HTML-ссылки не проверяются правилом относительных ссылок.
|
||||
Исторические аудиты, журнал устранения замечаний и свидетельства завершения
|
||||
сохраняют исходные адреса отдельно от основной книги.
|
||||
|
||||
Смысловая проверка подтверждает, что читатель понимает ответственность,
|
||||
инвариант и ограничение; будущая возможность не выдана за существующую;
|
||||
API и архитектура не изменены редакторским пересказом. Непонятный смысл
|
||||
внешней ссылки отмечается для ручной проверки, а не восполняется догадкой.
|
||||
Успешная синтаксическая проверка не доказывает актуальность знания.
|
||||
@@ -50,7 +50,7 @@ OpenSpec остаётся [необязательным средством со
|
||||
новый результат. Автоматическое исправление материалов и проверка без их
|
||||
изменения — разные действия.
|
||||
|
||||
[Влияние на документацию](documentation.md#обновление-вместе-с-кодом) входит
|
||||
[Влияние на документацию](../CONTRIBUTING.md#обновление-вместе-с-кодом) входит
|
||||
в оценку результата: описанные понятия, сценарии, решения и ограничения
|
||||
обновляются вместе с системой. Отсутствие влияния может быть обоснованным
|
||||
результатом. Отчёт о поставке различает выполненное, проверенное и остающиеся
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
# Frontend: ответственность и проверка
|
||||
|
||||
Frontend предоставляет пользовательские экраны, навигацию и представление
|
||||
финансовых данных. Он получает данные только через публичный API backend;
|
||||
credentials T-Bank остаются на сервере. Состав приложения и потоки показаны
|
||||
в [обзоре системы](../architecture/system-overview.md).
|
||||
|
||||
## Совместимость с backend
|
||||
|
||||
Типизированный клиент frontend производится из опубликованного backend
|
||||
OpenAPI. Согласованность клиента с сохранённым описанием API и согласованность
|
||||
этого описания с работающим backend проверяются отдельно.
|
||||
Изменение публичного контракта требует обновления производного клиента;
|
||||
подробности — [согласованность OpenAPI](runtime-openapi-verification.md).
|
||||
|
||||
## Проверка интерфейса
|
||||
|
||||
Локальная проверка frontend охватывает корректность типов, статический анализ,
|
||||
автоматические сценарии, зависимости и сборку приложения и UI-каталога.
|
||||
Она может выполняться без запущенного backend. Покрытие тестами ограничивает
|
||||
регрессии; само по себе число покрытых строк не доказывает правильность
|
||||
финансового расчёта, доступность или прохождение пользовательского сценария.
|
||||
|
||||
[Каталог](ui-catalog.md) показывает существующие визуальные решения.
|
||||
Соответствие задаче, широкий и узкий экран, клавиатурная навигация и восстановление
|
||||
после ошибок проверяются в интерфейсе отдельно от успешной сборки.
|
||||
|
||||
## Состояние тестового клиента
|
||||
|
||||
Независимые проверки получают изолированное состояние клиента. Обновление
|
||||
представления внутри одного сценария сохраняет его кэш; следующий сценарий
|
||||
не наследует сессию и ответы предыдущего. Повторные попытки в тестовой среде
|
||||
могут быть отключены для предсказуемого результата. Это не меняет
|
||||
[политику обновления данных приложения](../adr/007-react-query-fetch-policy.md).
|
||||
@@ -3,7 +3,8 @@
|
||||
WealthLedger поставляется как локальное приложение: frontend работает
|
||||
в браузере, backend обслуживает API и обращается к SQLite и внешним источникам.
|
||||
Это описание предпосылок и ограничений работы, без привязки к устройству
|
||||
исходного кода. Production-развёртывание в текущую поставку не входит.
|
||||
исходного кода. Описано локальное окружение; production-топология по нему
|
||||
не подтверждается.
|
||||
|
||||
## Подготовка backend
|
||||
|
||||
@@ -16,7 +17,7 @@ WealthLedger поставляется как локальное приложен
|
||||
| Порт API | По умолчанию 3000 |
|
||||
| Секрет подписи сессий | Секрет не короче 32 символов; отличается от ключа шифрования подключения |
|
||||
| Ключ шифрования подключения | 32 байта в base64; требуется для чтения сохранённого T-Bank token |
|
||||
| Параметры интеграции | Адрес T-Bank, лимит запросов и при необходимости доверенный CA; [ограничения](../features/tbank-connection.md#конфигурация-и-ограничения) |
|
||||
| Параметры интеграции | Адрес T-Bank, лимит запросов и при необходимости доверенный CA; [ограничения](../integrations/tbank.md#конфигурация-и-ограничения) |
|
||||
|
||||
T-Bank token вводится пользователем через интерфейс после входа и не является
|
||||
общим параметром окружения. Существующая база и её ключ шифрования сохраняются
|
||||
@@ -24,11 +25,11 @@ T-Bank token вводится пользователем через интерф
|
||||
на отдельной копии. Потеря или замена ключа не является безвредным сбросом:
|
||||
прежнее подключение нельзя расшифровать новым ключом.
|
||||
|
||||
**Известное ограничение:** проверка новой временной SQLite-базы 12 сентября
|
||||
2026 года под Node 22 воспроизвела `Schema engine error` до создания схемы.
|
||||
Полный первый запуск на чистой базе пока не подтверждён; пользовательская база
|
||||
в этой проверке не использовалась. Условия пересмотра —
|
||||
[проверка backend](backend-workflow.md#локальная-проверка).
|
||||
**Известное ограничение:** ранее была зафиксирована ошибка `Schema engine error`
|
||||
на новой временной SQLite-базе до создания схемы. Условия проверки и пересмотра —
|
||||
в [ограничении сквозной проверки](verification.md#известное-ограничение-сквозной-проверки).
|
||||
Пользовательская база для такого воспроизведения не нужна; полный первый запуск
|
||||
на чистой базе этим свидетельством не подтверждён.
|
||||
|
||||
В development доступна [локальная Swagger UI](http://localhost:3000/api/docs)
|
||||
при стандартном порте API. Она показывает контракт, но не доказывает доступность
|
||||
@@ -43,7 +44,7 @@ backend — с origin браузера. Смена порта требует с
|
||||
|
||||
Локальный HTTP предполагает development-режим backend: в других режимах
|
||||
refresh-cookie получает Secure flag и требует защищённого соединения.
|
||||
Поведение сессии описано в [Authentication](../features/authentication.md).
|
||||
Поведение сессии описано в [Authentication](../domains/authentication/overview.md).
|
||||
|
||||
## Первый сценарий
|
||||
|
||||
@@ -79,6 +80,6 @@ HTTP-запросы связываются с безопасными журна
|
||||
## Проверка первого изменения
|
||||
|
||||
Успешная сборка, запуск и прохождение сценария — разные доказательства.
|
||||
Границы проверки описаны для [frontend](frontend-workflow.md),
|
||||
[backend](backend-workflow.md) и [HTTP-контракта](runtime-openapi-verification.md).
|
||||
Границы [проверок системы](verification.md) и
|
||||
[HTTP-контракта](runtime-openapi-verification.md) рассматриваются отдельно.
|
||||
Завершённость результата учитывает фактические проверки и остающиеся ограничения.
|
||||
|
||||
@@ -7,10 +7,16 @@ artifacts и архивирование не являются условием
|
||||
|
||||
## Существующие материалы
|
||||
|
||||
OpenSpec сохраняет поведенческие требования, предложенные изменения и историю
|
||||
согласования. Существующее описание изменения относится только к своему объёму
|
||||
и не доказывает готовность другой возможности. Текущее поведение системы
|
||||
объясняется в [карте возможностей](../features/README.md).
|
||||
Основные спецификации сохраняют согласованное проверяемое поведение, включая
|
||||
текущее. OpenSpec changes содержат предложения, их дизайн и задачи, архив —
|
||||
историю согласования. Store `wealth-ledger-specs` находится в `specs/openspec/`:
|
||||
основные спецификации — `specs/`, изменения — `changes/` внутри Store.
|
||||
[Предметный индекс](../../specs/AI_INDEX.md) ведёт к конкретным requirements/scenarios.
|
||||
|
||||
Существующее описание изменения относится только к своему объёму и не доказывает
|
||||
готовность возможности. Docs объясняет систему и последствия правил;
|
||||
при расхождении со спецификацией нужно установить причину, а не объявлять
|
||||
реализацию или текст автоматически верным.
|
||||
|
||||
## Если OpenSpec запрошен явно
|
||||
|
||||
|
||||
@@ -38,4 +38,4 @@ HTTP-потока. Согласованность описаний и функц
|
||||
|
||||
Сравнение OpenAPI не запускает сквозные проверки с миграциями базы.
|
||||
Известная ошибка движка миграций и условие пересмотра описаны в
|
||||
[проверке backend](backend-workflow.md#локальная-проверка).
|
||||
[сквозной проверке](verification.md#известное-ограничение-сквозной-проверки).
|
||||
|
||||
@@ -12,7 +12,7 @@ Storybook 10.6.0 показывает реальные представлени
|
||||
|
||||
## Компоненты и работа с примерами
|
||||
|
||||
Два блока каталога включают 9 групп и 30 примеров:
|
||||
Каталог включает 10 групп и 41 пример:
|
||||
|
||||
| Группа | Что показывает |
|
||||
| --- | --- |
|
||||
@@ -20,11 +20,12 @@ Storybook 10.6.0 показывает реальные представлени
|
||||
| Пустой результат и ошибки | Четыре варианта с действием и без |
|
||||
| Загрузка | Доступную область занятости с нейтральными фигурами |
|
||||
| Кнопки | Основное, вторичное и вспомогательное действие, выполнение и недоступность, работу с клавиатурой |
|
||||
| Список счетов | Несколько валют, недоступную и пустую сводку, длинное название |
|
||||
| Список счетов | Несколько счетов и валют, недоступную и пустую сводку, неоценённые бумаги, длинные названия и суммы |
|
||||
| Карточка позиции | Акцию с положительным результатом, облигацию с отрицательным, прочий инструмент и отсутствие оценки |
|
||||
| Последние события | Успешный, загружаемый, ошибочный и пустой результат; неизвестную сумму |
|
||||
| Ближайшие события | Успешный, загружаемый, ошибочный и пустой результат; неизвестную сумму и длинное название |
|
||||
| Обновление портфеля | Сохранённые суммы при обновлении и ошибке, локальную повторную попытку |
|
||||
| Загрузка страницы счёта | Контур ожидаемых заголовка, сводки и строк |
|
||||
| Структура портфеля | Валюты и типы активов, только деньги, пустую и неполную оценку, неизвестные и отрицательные значения |
|
||||
|
||||
Каталог не перечисляет все элементы библиотеки или приложения. Отсутствие
|
||||
представления в витрине не означает его отсутствия в продукте. Основы показывают
|
||||
@@ -33,8 +34,8 @@ Storybook 10.6.0 показывает реальные представлени
|
||||
|
||||
Canvas показывает выбранный пример. Docs поясняет назначение и ограничения,
|
||||
Controls меняет доступные свойства, Actions показывает локальные действия.
|
||||
Вымышленные исходные данные не редактируются через Controls: другой набор
|
||||
данных выбирается отдельным примером. Свойства можно сбросить, пример —
|
||||
Наборы вымышленных данных и доступные Controls определяются конкретным
|
||||
примером; подготовленные варианты перечислены в историях. Свойства можно сбросить, пример —
|
||||
смонтировать заново; изменение размера просмотра не сбрасывает выбранные значения.
|
||||
|
||||
Витрина и приложение используют одну тему. Примеры показываются по-русски
|
||||
@@ -57,7 +58,7 @@ cookies, секреты и реальные пользовательские д
|
||||
здесь не исполняется. В приложении первичная загрузка показывает контур
|
||||
ожидаемого содержимого, фоновое обновление сохраняет данные, а выполняемое
|
||||
действие имеет контекстный индикатор. Подробности —
|
||||
[состояния интерфейса](../features/frontend-ui-resilience.md).
|
||||
[состояния интерфейса](../architecture/cross-cutting/ui-resilience.md).
|
||||
|
||||
Автоматические проверки frontend охватывают каталог и его изоляцию от
|
||||
продуктовых запросов. Примеры и их пояснения обновляются вместе с включёнными
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
# Что подтверждают проверки системы
|
||||
|
||||
Успешная сборка, запуск, равенство схем и прохождение пользовательского
|
||||
сценария — разные доказательства. Выбор проверки зависит от наблюдаемого
|
||||
риска: денежных вычислений, доступа, целостности данных или состояния интерфейса.
|
||||
Общие основания описаны в [принципах сопровождения](engineering-governance.md#risk-based-testing).
|
||||
|
||||
## Интерфейс
|
||||
|
||||
Локальный gate frontend охватывает типы, статический анализ, автоматические
|
||||
сценарии, зависимости и сборки приложения и UI-каталога. Он выполняется
|
||||
без запущенного backend. Покрытие ограничивает регрессии, но не доказывает
|
||||
правильность финансового расчёта, доступность и полный пользовательский сценарий.
|
||||
|
||||
[Каталог](ui-catalog.md) показывает существующие визуальные решения на
|
||||
вымышленных данных. Широкий и узкий экран, клавиатурная навигация,
|
||||
восстановление после ошибок и соответствие задаче проверяются в интерфейсе
|
||||
отдельно от сборки. Изолированная тестовая среда не воспроизводит все свойства
|
||||
браузера и живой интеграции.
|
||||
|
||||
## API и хранение данных
|
||||
|
||||
Локальный gate backend объединяет статический анализ, типы приложения и тестов,
|
||||
автоматические сценарии и сборку. Он не исправляет исходные файлы;
|
||||
автоматическое форматирование выполняется отдельно и не является доказательством.
|
||||
Диагностика покрытия доступна без общего числового порога.
|
||||
|
||||
Равенство OpenAPI подтверждает согласованность публичного описания с клиентом.
|
||||
Валидация, cookie, авторизация счёта, статусы и ошибки требуют полного HTTP-потока;
|
||||
целостность и конкурентные изменения данных — проверки с изолированной реальной
|
||||
базой. Подставной ответ базы не доказывает её транзакционные свойства.
|
||||
Направление генерации и границы сравнения — в [проверке OpenAPI](runtime-openapi-verification.md).
|
||||
|
||||
### Известное ограничение сквозной проверки
|
||||
|
||||
В сохранённой проверке Prisma 7.9.1 под Node 22 применение миграций к новой
|
||||
SQLite-базе завершалось `Schema engine error` до запуска сквозных тестов.
|
||||
Это ограничение зафиксировано в [WL-P2-05](audit-remediation.md#p2).
|
||||
Предыдущее описание локальной проверки от 12 сентября 2026 года также отмечало
|
||||
ошибку на временной базе без обращения к пользовательской базе.
|
||||
|
||||
Успех unit-проверок и OpenAPI не закрывает эту границу. Принятое условие пересмотра —
|
||||
стабильная версия Prisma с тремя последовательными успешными применениями
|
||||
миграций на новых базах под Node 22. Условия безопасного локального запуска и
|
||||
сохранения данных — в [локальном окружении](local-workspace.md).
|
||||
|
||||
## Где выполнять проверки
|
||||
|
||||
Команды и конкретные тестовые правила поддерживаются в локальных инструкциях
|
||||
[frontend](../../frontend/AGENTS.md) и [backend](../../backend/AGENTS.md).
|
||||
Проверки этой документации — в [CONTRIBUTING](../CONTRIBUTING.md#проверки).
|
||||
Отчёт различает пройденную границу, оставшееся ограничение и проверяемое состояние;
|
||||
успех одного gate не распространяется автоматически на весь workspace.
|
||||
Reference in New Issue
Block a user