15 KiB
Русификация документации и исправление архитектурных схем — SDD-спецификация
Дата: 2026-06-15
Статус: черновик для ревью
Контекст
Документация проекта публикуется только из apps/docs через Docusaurus. Текущая структура уже
зафиксирована в docs/features/docusaurus-docs/spec.md: страницы лежат в apps/docs/docs,
навигация описана в apps/docs/sidebars.ts, Mermaid включён через
@docusaurus/theme-mermaid.
Сейчас большая часть человекочитаемого текста в опубликованной документации написана на английском: заголовки, подписи таблиц, описания endpoint'ов, ADR summary, названия разделов sidebar. Проект ведётся на русском, поэтому документация должна быть русскоязычной, оставляя на английском только технические названия, идентификаторы и общепринятые инженерные термины.
На странице apps/docs/docs/architecture.md первая Mermaid-схема System Architecture смешивает
в одном graph TD внешний контур приложения и внутреннее устройство backend. Из-за этого Docusaurus
рендерит слишком широкую и высокую схему: блоки и подписи стрелок визуально накладываются друг на
друга, особенно вокруг Backend (NestJS), Browser (React SPA), NestJS API, cache, MOEX и SQLite.
Цели
- Перевести опубликованную человекочитаемую документацию в
apps/docsна русский язык. - Оставить без перевода технические названия и идентификаторы, которые должны совпадать с кодом, API, библиотеками или файлами.
- Исправить читаемость Mermaid-схем в
apps/docs/docs/architecture.md, убрав наложение блоков и подписей. - Сохранить текущую структуру Docusaurus и URL/slugs, чтобы не ломать существующие ссылки.
- Задать проверяемые критерии приёмки для последующей реализации.
Не цели
- Не менять backend, frontend, OpenAPI contract, runtime-конфигурацию или Docker-инфраструктуру.
- Не переименовывать файлы документации, ADR-файлы, route slugs и ссылки между страницами, если это не требуется для исправления битой ссылки.
- Не внедрять i18n с несколькими локалями: сайт остаётся одноязычным с
defaultLocale: 'ru'. - Не переписывать архитектурные решения по сути. ADR переводятся как документация, но их смысл, статус и последствия сохраняются.
- Не менять визуальную тему Docusaurus сверх минимальной поддержки читаемых Mermaid-схем.
Область изменений
Опубликованная документация
Перевод и редактура затрагивают:
apps/docs/docusaurus.config.tsapps/docs/sidebars.tsapps/docs/docs/intro.mdapps/docs/docs/getting-started.mdapps/docs/docs/architecture.mdapps/docs/docs/backend/*.mdapps/docs/docs/frontend/*.mdapps/docs/docs/development/*.mdapps/docs/docs/infrastructure/*.mdapps/docs/docs/adr/*.md
Стили
apps/docs/src/css/custom.css можно менять только если после разбиения Mermaid-схем остаются
проблемы с шириной, переносами или горизонтальной прокруткой. CSS не должен быть основным способом
исправления сломанной схемы.
Правила русификации
Переводить
- Заголовки страниц и разделов:
Architecture->Архитектура,Getting Started->Быстрый старт. - Sidebar labels:
Infrastructure->Инфраструктура,Development->Разработка,Architecture Decisions (ADR)->Архитектурные решения (ADR). - Описания таблиц и колонок:
Description->Описание,Required->Обязателен,Default->По умолчанию. - Поясняющий текст, инструкции, списки, summaries, примечания к flow/sequence diagrams.
- Подписи Mermaid-стрелок, если они не являются точным API, cookie/header или именем метода:
fetches->запрашивает,uses->использует,raw data->сырые данные. - Ошибочные или неактуальные формулировки, найденные при переводе, если их можно исправить по текущему коду или уже существующим SDD/ADR.
Не переводить
- Названия технологий и библиотек:
NestJS,React,Vite,TanStack Query,Prisma,SQLite,Docusaurus,Docker,Nginx,Vitest,MSW,Swagger,OpenAPI,lightweight-charts,openapi-fetch. - Архитектурные технические существительные, уже используемые в проекте как термины:
backend,frontend,middleware,endpoint,request,response,cache,cookie,access token,refresh token,rate limiter,circuit breaker,codegen,workspace,build,lint. - Имена модулей, классов, DTO, методов, env vars, scripts, файлов и директорий:
AuthModule,MoexClientService,CACHE_MARKET_DATA_TTL,npm run dev:backend,apps/backend/src/modules/auth. - HTTP methods, URL paths, JSON keys, TypeScript/Prisma identifiers, enum values и code blocks.
- ADR file names and IDs:
ADR-001-backend-single-point-of-access.md,ADR-010, etc.
Стиль русского текста
- Писать для разработчика проекта, без маркетингового тона.
- Использовать короткие предложения и конкретные глаголы.
- Сохранять технические термины в одном написании по всему сайту.
- Не переводить термин, если перевод ухудшает связь с кодом или общепринятой практикой.
План исправления architecture.md
Текущую первую схему нужно заменить набором меньших схем:
Архитектура системы— внешний контур: Browser/React SPA, NestJS API, SQLite, cache, MOEX ISS API. Направление лучше сделатьflowchart LR, чтобы схема читалась слева направо.Внутренние модули backend— отдельная схема только для NestJS feature/global modules: AuthModule, SharesModule, BondsModule, CandlesModule, SecuritiesModule, PortfolioModule, HealthModule, MoexClientModule, CacheModule/CacheService, PrismaModule/PrismaService.Поток авторизованного запроса— существующийsequenceDiagramоставить как отдельный сценарий, но перевести человекочитаемые подписи и сверить путь запроса с актуальными docs/API.
Для первой схемы недопустимо помещать большой subgraph Backend_Internal внутрь графа внешней
архитектуры. Если нужно показать, что NestJS API состоит из модулей, это должно быть ссылкой
текстом или отдельной диаграммой ниже.
Рекомендуемый Mermaid-паттерн
flowchart LR
Browser["Browser<br/>(React SPA)"]
API["NestJS API<br/>:3000"]
Cache["In-memory cache<br/>(cache-manager)"]
MOEX["MOEX ISS API<br/>iss.moex.com"]
DB[("SQLite<br/>(Prisma)")]
Browser -->|"/api/v1/*"| API
Browser -->|"Authorization: Bearer"| API
Browser -->|"Cookie: refreshToken"| API
API -->|"getOrFetch()"| Cache
API -->|"GET /iss/*.json"| MOEX
API -->|"Prisma ORM"| DB
Cache -->|"данные"| API
MOEX -->|"сырые данные"| API
DB -->|"пользователи и портфели"| API
В реализации можно менять конкретное расположение узлов, если итоговая схема проходит визуальную проверку и остаётся семантически эквивалентной.
План реализации
- Создать отдельную ветку
codex/russian-docs-architecture-diagrams, если текущая ветка не предназначена для этой работы. - Пройти по navigation/config files:
apps/docs/docusaurus.config.tsиapps/docs/sidebars.ts. - Перевести overview-страницы:
intro.md,getting-started.md,architecture.md. - В
architecture.mdзаменить первую Mermaid-схему на две небольшие схемы и перевести человекочитаемые подписи вsequenceDiagram. - Перевести backend-раздел, сохраняя имена модулей, endpoints, DTO, env vars и code examples.
- Перевести frontend-раздел, сохраняя названия React/Vite/TanStack Query и имена hooks/components.
- Перевести infrastructure/development-разделы, сохраняя команды, scripts, имена workflow jobs, Dockerfile paths и package names.
- Перевести ADR index и ADR pages без изменения сути решений, статусов и ссылок.
- Проверить Markdown-ссылки, таблицы и fenced code blocks.
- Запустить
npm run build:docs. - Если build проходит, открыть локальный Docusaurus и визуально проверить
architecture.md: нет наложения блоков, подписи стрелок читаемы, схема не уезжает за viewport на desktop.
Критерии приёмки
- Все опубликованные страницы в
apps/docs/docs/**/*.mdимеют русские заголовки и русский человекочитаемый текст, кроме разрешённых технических названий. apps/docs/sidebars.tsпоказывает русские labels для всех человекочитаемых категорий.apps/docs/docusaurus.config.tsсодержит русскую tagline или нейтральную русскоязычную фразу.- Имена файлов, route slugs, ADR IDs, endpoint paths, env vars, code blocks и API examples не переименованы ради перевода.
apps/docs/docs/architecture.mdне содержит одной большой Mermaid-схемы, которая одновременно показывает внешний контур и внутренние backend modules.- Mermaid-схемы на странице
architecture.mdрендерятся без наложения узлов и подписей. npm run build:docsзавершается успешно.- После сборки нет новых broken links или broken Markdown links сверх текущей политики
onBrokenLinks: 'warn',onBrokenMarkdownLinks: 'warn'.
Проверка качества
Автоматическая
npm run build:docs
Ожидаемый результат: Docusaurus build завершается без ошибки.
Ручная
- Запустить
npm run dev:docs. - Открыть страницу
/architecture. - Проверить, что первая схема помещается в контентную область на desktop без наложения.
- Проверить, что sequence diagram читается и подписи на русском там, где они не являются техническими идентификаторами.
- Выборочно открыть по одной странице из разделов Backend, Frontend, Инфраструктура, Разработка и ADR, чтобы подтвердить единый стиль перевода.
Риски и решения
| Риск | Решение |
|---|---|
| Чрезмерный перевод ломает связь с кодом | Следовать списку "Не переводить" и оставлять code/API terms как есть |
| Mermaid всё ещё строит слишком широкую схему | Делить диаграмму ещё мельче, а не пытаться лечить layout только CSS |
| ADR после перевода могут звучать как новые решения | Сохранять ID, статус, контекст, consequences и не менять смысл |
| Перевод таблиц может сломать Markdown | После каждой группы страниц запускать build или локально просматривать diff |
Решение для ревью
Рекомендуемый путь: сначала выполнить русификацию и разбиение схем без изменения информационной архитектуры сайта. После этого отдельно оценить, нужно ли делать полноценную редакторскую нормализацию терминов или добавлять глоссарий. Для текущей задачи глоссарий в отдельной странице не нужен: достаточно единых правил в этой спецификации и аккуратного применения по docs.