From 4a78dd640d4a1db1b7c9dc4036375c076d55b34d Mon Sep 17 00:00:00 2001 From: Sergey Krylov Date: Tue, 15 Sep 2026 05:58:30 +0300 Subject: [PATCH] docs: align inventory with simplified conventions --- .ai/migrations/conventions-v1/audit.md | 19 +++++++++---------- .ai/migrations/conventions-v1/plan.md | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/.ai/migrations/conventions-v1/audit.md b/.ai/migrations/conventions-v1/audit.md index c46c71f..01d194e 100644 --- a/.ai/migrations/conventions-v1/audit.md +++ b/.ai/migrations/conventions-v1/audit.md @@ -32,7 +32,7 @@ Confidence: High / Medium / Low. P0 по проверенной области - **Location:** [configureApp](../../../backend/src/main.ts), строка 28; [HttpExceptionFilter](../../../backend/src/common/filters/http-exception.filter.ts), `catch` / `validationErrors`. -- **Convention:** [Errors](../../../backend/.ai/conventions/backend-error-handling.md), +- **Convention:** [Errors](../../../backend/.ai/conventions/error-handling.md), [требование](../../../specs/openspec/specs/user-authentication/spec.md#requirement-стандартные-ответы-об-ошибках). - **Current state:** стандартный ValidationPipe формирует `message: string[]`; filter трактует его как `ValidationError[]`, возвращая пустой `errors`. @@ -50,8 +50,8 @@ Confidence: High / Medium / Low. P0 по проверенной области - **Location:** [BankCardsRepository](../../../backend/src/modules/banking/bank-cards/infrastructure/bank-cards.repository.ts), `card(active)` и `write`; callers в [BankOperationsService](../../../backend/src/modules/banking/bank-cards/application/bank-operations.service.ts). -- **Convention:** [Data](../../../backend/.ai/conventions/backend-data.md), - [application boundaries](../../../backend/.ai/conventions/backend-architecture.md#ответственность-и-направление-зависимостей). +- **Convention:** [Data](../../../backend/.ai/conventions/data.md), + [application boundaries](../../../backend/.ai/architecture.md#ответственность-и-направление-зависимостей). - **Current state:** repository импортирует application `conflict/missing`, решает запрет archived card и переводит общий P2002 в DuplicateCategory. - **Expected state:** repository владеет owner-filtered reads, transaction/retry @@ -68,7 +68,7 @@ Confidence: High / Medium / Low. P0 по проверенной области - **Location:** [BankCardForm](../../../frontend/src/entities/bank-card/ui/BankCardForm.tsx), [CategoryManager](../../../frontend/src/entities/bank-card/ui/CategoryManager.tsx); consumers — CardsPage и CardPage. -- **Convention:** [FSD ownership](../../../frontend/.ai/conventions/frontend-architecture.md#выбор-владельца). +- **Convention:** [FSD ownership](../../../frontend/.ai/architecture.md#выбор-владельца). - **Current state:** entity UI координирует создание/редактирование карты, idempotency intent, submit, version adoption, создание/редактирование категорий. - **Expected state:** самостоятельные пользовательские workflows имеют feature @@ -84,7 +84,7 @@ Confidence: High / Medium / Low. P0 по проверенной области - **Location:** [CardPage.view](../../../frontend/src/pages/card/ui/CardPage.view.tsx), [CardsPage.view](../../../frontend/src/pages/cards/ui/CardsPage.view.tsx), соответствующие `CardPage.vm.ts` / `CardsPage.vm.ts` рядом. -- **Convention:** [Container/VM/view](../../../frontend/.ai/conventions/frontend-ui.md#container-vm-и-view). +- **Convention:** [Container/VM/view](../../../frontend/.ai/conventions/ui.md#container-vm-и-view). - **Current state:** VM отдаёт query objects; views выбирают initial/cached/error states через `data/isLoading/isError/isPlaceholderData` и вызывают `refetch`. - **Expected state:** VM выбирает presentation states и retry callbacks, @@ -100,8 +100,7 @@ Confidence: High / Medium / Low. P0 по проверенной области - **Location:** [AppShell](../../../frontend/src/shared/ui/AppShell.tsx), `items`, `useLocation`, `Outlet`, nav rendering; public export в shared/ui. -- **Convention:** [FSD](../../../frontend/.ai/conventions/frontend-architecture.md), - [mental model](../../../frontend/.ai/architecture.md). +- **Convention:** [FSD и устройство](../../../frontend/.ai/architecture.md). - **Current state:** shared owner содержит конкретные `/accounts`, `/cards`, `/stocks`, `/bonds`, `/settings` и application navigation. - **Expected state:** navigation/composition принадлежит app; shared сохраняет @@ -118,7 +117,7 @@ Confidence: High / Medium / Low. P0 по проверенной области [AccountsPageError](../../../frontend/src/pages/accounts/ui/components/AccountsPageError.view.tsx), [StocksPage.view](../../../frontend/src/pages/stocks/ui/StocksPage.view.tsx), [BondsPage.view](../../../frontend/src/pages/bonds/ui/BondsPage.view.tsx). -- **Convention:** [Frontend errors](../../../frontend/.ai/conventions/frontend-data.md#errors), +- **Convention:** [Frontend errors](../../../frontend/.ai/conventions/data.md#errors), [pattern convergence](../../conventions/code-health.md#search--reuse--converge). - **Current state:** несколько owners повторяют `TBANK_NOT_CONNECTED` / `INVALID_TBANK_TOKEN` comparisons; presentation/retry actions различаются. @@ -136,8 +135,8 @@ Confidence: High / Medium / Low. P0 по проверенной области `call` (throw Error); [TbankTokenService](../../../backend/src/integrations/tbank/tbank-token.service.ts), `translateInvalidToken`; [InstrumentMetadataService](../../../backend/src/integrations/tbank/instrument-metadata.service.ts), invalid-token catch. -- **Convention:** [Errors](../../../backend/.ai/conventions/backend-error-handling.md), - [Integrations](../../../backend/.ai/conventions/backend-integrations.md). +- **Convention:** [Errors](../../../backend/.ai/conventions/error-handling.md), + [Integrations](../../../backend/.ai/conventions/integrations.md). - **Current state:** low-level client бросает `Error('INVALID_TBANK_TOKEN')`, два consumers сравнивают строку сообщения для выбора recovery/HTTP mapping. - **Expected state:** один явный local typed/code outcome на integration boundary, diff --git a/.ai/migrations/conventions-v1/plan.md b/.ai/migrations/conventions-v1/plan.md index 6a3aa1c..1767e80 100644 --- a/.ai/migrations/conventions-v1/plan.md +++ b/.ai/migrations/conventions-v1/plan.md @@ -63,7 +63,7 @@ checkout; сегодня проверка `.ai` выполнена локаль | Backend ValidationPipe → filter reproduction | Подтверждён BE-001: invalid CredentialsDto → 400/VALIDATION_ERROR, `errors: []` | | `git diff --check` в root/frontend/backend/docs/specs | PASS | -Semantic review: маршруты UI-only, API/contract, auth, tests-only, helper/package, +Semantic review первого прохода: маршруты UI-only, API/contract, auth, tests-only, helper/package, Prisma, logging и migration достигают нужных owners; ссылки compatibility не дублируют таблицы routing. Общие policy имеют root owner, stack-specific исключения остались локальными. Проверены новые файлы и отсутствие production, @@ -73,3 +73,16 @@ Application build/coverage/e2e целиком не запускались: из root tracking не меняет production behavior. Existing dependency checks и воспроизведение BE-001 подтверждают только указанные границы, не отсутствие всех semantic/security проблем. Full gates выполняются при будущих code slices. + +## Упрощение структуры после review + +Conventions frontend/backend именуются без repo-префиксов. Устройство и правила +архитектуры объединены в единственный `.ai/architecture.md` каждого repo. +Routing и карта источников объединены в `AGENTS.md`; прежние CONVENTIONS/SOURCES +и отдельные architecture conventions удалены без compatibility-заглушек. +Активные ссылки обновлены; в audit изменены только ссылки, findings сохранены. +Исторические архивы specs остаются источниками своего времени. + +Повторная проверка: existing markdownlint-cli2 с docs config по root/frontend/backend +AGENTS, README и `.ai/**/*.md` — 27 файлов, 0 ошибок, включая относительные ссылки +и якоря. `git diff --check` — PASS. Production-код и dependencies не менялись.