Аудит main/audits/2026-10-19-code-quality-architecture/02-findings.md, CQ-002: tbank-sync.dto.ts берёт operationCategories через operations.api.ts, который транзитивно замыкается через сервис операций на tbank-sync.repository.ts. Цикл сейчас опирается на стирание import type; изменение value-импортов сделает порядок инициализации хрупким.
Результат и scope
Разорвать межмодульный цикл через корректного владельца общего значения/контракта. Затронут только внутренние импорты backend; публичное API, категории операций и поведение синхронизации сохраняются. Не вводить forwardRef() ради обхода цикла.
Acceptance Criteria
В production-графе импортов backend нет цикла tbank-sync → operations → tbank-sync ни по type-, ни по value-рёбрам.
operationCategories имеет одного владельца; DTO и потребители используют одинаковые значения без второй копии.
Существующие проверки архитектуры, сборка и релевантные тесты проходят.
Источник: аудит 2026-10-19, CQ-002; план, пункт 1. Отдельно от изменения границ tbank-sync (CQ-001/019).
## Проблема
Аудит `main/audits/2026-10-19-code-quality-architecture/02-findings.md`, CQ-002: `tbank-sync.dto.ts` берёт `operationCategories` через `operations.api.ts`, который транзитивно замыкается через сервис операций на `tbank-sync.repository.ts`. Цикл сейчас опирается на стирание `import type`; изменение value-импортов сделает порядок инициализации хрупким.
## Результат и scope
Разорвать межмодульный цикл через корректного владельца общего значения/контракта. Затронут только внутренние импорты backend; публичное API, категории операций и поведение синхронизации сохраняются. Не вводить `forwardRef()` ради обхода цикла.
## Acceptance Criteria
- [ ] В production-графе импортов backend нет цикла `tbank-sync → operations → tbank-sync` ни по type-, ни по value-рёбрам.
- [ ] `operationCategories` имеет одного владельца; DTO и потребители используют одинаковые значения без второй копии.
- [ ] Существующие проверки архитектуры, сборка и релевантные тесты проходят.
Источник: аудит 2026-10-19, CQ-002; план, пункт 1. Отдельно от изменения границ `tbank-sync` (CQ-001/019).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Проблема
Аудит
main/audits/2026-10-19-code-quality-architecture/02-findings.md, CQ-002:tbank-sync.dto.tsберётoperationCategoriesчерезoperations.api.ts, который транзитивно замыкается через сервис операций наtbank-sync.repository.ts. Цикл сейчас опирается на стираниеimport type; изменение value-импортов сделает порядок инициализации хрупким.Результат и scope
Разорвать межмодульный цикл через корректного владельца общего значения/контракта. Затронут только внутренние импорты backend; публичное API, категории операций и поведение синхронизации сохраняются. Не вводить
forwardRef()ради обхода цикла.Acceptance Criteria
tbank-sync → operations → tbank-syncни по type-, ни по value-рёбрам.operationCategoriesимеет одного владельца; DTO и потребители используют одинаковые значения без второй копии.Источник: аудит 2026-10-19, CQ-002; план, пункт 1. Отдельно от изменения границ
tbank-sync(CQ-001/019).