10 KiB
WealthLedger: документация системы
WealthLedger помогает частному инвестору понимать состав портфеля T-Bank, исполненные операции, полученный доход и будущие выплаты, а также вручную вести банковские карты и повседневные расходы. Здесь объясняются продукт, понятия, функции, взаимодействия и причины архитектурных решений. Основной текст можно читать без исходников; технические ссылки нужны для дальнейшей проверки и изменения системы.
Первое знакомство
- Обзор продукта — задачи пользователя и границы приложения.
- Глоссарий — пользователь, сессия, подключение, счёт, портфель, полученный доход и прогноз выплаты.
- Контекст — WealthLedger и внешние системы.
- Контейнеры — браузерное приложение, API, локальное хранение и обмен данными.
- Портфель и его загрузка — как источник превращается в позиции, суммы и состояние свежести.
После этого читатель должен уметь объяснить происхождение финансового показателя и отличить данные брокера, расчёт сервера и сохранённый экран.
Предметные области
Папки областей группируют знания; они не объявляют отдельные сервисы.
| Тема | Что здесь искать |
|---|---|
| Аутентификация | Регистрация, вход, восстановление и завершение сессии |
| Счета | Доступные счета, сводки и состояния каждого счёта |
| Банковские карты | Ручные остатки, операции, категории, возвраты, месячные сводки и исправления |
| Портфель | Позиции, остатки, суммы, структура и свежесть |
| Все счета | Общий портфель, происхождение строк и сводные разделы |
| Операции | Исполненные операции, фильтры и пагинация |
| Доход | Полученные купоны и дивиденды, периоды и состав расчёта |
| Будущие выплаты | Календарь по текущим позициям и ограничения прогноза |
| Акции и облигации | Поиск выпуска, рыночные показатели и личная история |
Найти материал по задаче
| Потребность | Маршрут |
|---|---|
| Разобраться в системе | Архитектура, нужная область выше, внешние интеграции |
| Найти точные сведения | Глоссарий, показатели портфеля, HTTP API |
| Разобрать расхождение в суммах | Диагностика портфеля |
| Понять ошибку или старые данные | Состояния интерфейса, свежесть данных |
| Понять визуальные роли и состояния | Визуальные принципы |
| Узнать причину архитектурного решения | Журнал ADR |
Границы знаний
Основные спецификации сохраняют согласованное проверяемое
поведение, а OpenSpec changes — предложения, дизайн и задачи изменений.
Фактический Store находится в specs/openspec/, основные требования — в
specs/openspec/specs/. Docs объясняет систему; код, тесты, схемы и конфигурация
задают конкретный механизм, а ADR сохраняют принятые решения.
Локальные инструкции frontend и backend
описывают изменение реализации и её проверки.
Эти источники дополняют друг друга. Найденный незавершённый change не доказывает реализованную функцию; расхождение кода и требования требует разбора. Итоги исследований входят в ADR, когда принято значимое решение, и в тематические страницы, когда уточняют знания о системе. Исходные исследовательские отчёты в docs не хранятся. История изменений остаётся в Git; документация описывает текущее устройство системы и причины архитектурных решений.
Правила изменения текста, диаграмм, ссылок и проверки docs-impact находятся в CONTRIBUTING.
Релизы
Репозиторий выпускается независимо. develop — интеграция, main — принятые
релизы. Работа: codex/<task> от актуального develop, PR в develop.
Обычные PR допускают squash; release и обратная синхронизация сохраняют историю.
Commits и PR titles — Conventional Commits, включая spec:. Версии вручную не повышай.
- Получи
main,developи теги:git fetch origin --tags. Убедись, чтоdevelopсодержит последний релиз. Создайrelease/<name>от проверенногоdevelop;nvm use --silent,npm ci. Hotfix начинается отmainвrelease/hotfix-<name>и проходит тот же процесс. - На чистой ветке выполни
npm run release:preview, просмотри версию/changelog, затемnpm run release:prepare. Команда создаётchore(release): X.Y.Z, обновляет manifest/lockfile/CHANGELOG; тег и push не выполняет. Не обходи guards ветки, чистого дерева, отсутствующих тегов или уже подготовленной версии. - Проверь diff и штатные gates этого репозитория. Отправь только release-ветку,
открой PR в
mainс заголовкомchore(release): X.Y.Z. После зелёныхverify,security,commitsвыполни fast-forward-only merge. Еслиmainизменился, согласуй историю и повтори проверки кандидата. - Получи удалённый
main, сравни его HEAD с проверенным release SHA и версией manifest/lockfile. Создай аннотированныйvX.Y.Zименно на этом SHA:git tag -a vX.Y.Z <release-sha> -m "Release X.Y.Z", затем отправь толькоgit push origin refs/tags/vX.Y.Z. Не запускай release-it повторно наmain. - Верни release-коммит через PR
main → developбез squash/rebase; проверь, чтоdevelopсодержит тег. Опубликованные теги не перемещай. При сбое после merge создай отсутствующий тег без нового bump; до merge исправь и проверь существующий кандидат без повторного повышения версии.
feat: повышает minor, fix:/perf: и прочие разрешённые типы — patch;
!/BREAKING CHANGE: — major, включая версии до 1.0. chore(release):
исключён из рекомендации и changelog. Конфигурация — .release-it.json.
В Gitea для main/develop должны быть запрещены прямой/force push и обход
администратором, обязательны verify, security, commits; теги v* защищены.
Workflow сам не включает эти настройки. Отдельное review approval для одного
владельца не требуется. Npm publishing, deploy и Gitea Releases не включены.