Files
SnapOtter/apps/docs/ru/guide/contributing.md
T
SnapOtterandGitHub 4963ab3bbd feat(docs-i18n): translate all documentation into 20 languages
All 181 docs markdown files translated into 20 languages (apps/docs/<locale>/**). Companion to the i18n code PR; admin-merged because the file count exceeds GitHub's per-PR CI trigger limit. Validated by pnpm i18n:check (all surfaces, 0 stale/missing) and a clean all-locale docs build.
2026-07-11 13:52:47 +08:00

132 lines
9.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
description: "Как участвовать в развитии SnapOtter. Отчёты об ошибках, запросы функций, pull request'ы и требования CLA."
i18n_source_hash: 528802503035
i18n_provenance: human
i18n_output_hash: fc5a31dca269
---
# Участие {#contributing}
Спасибо за интерес к участию в проекте. Это руководство описывает, как участвовать, что мы принимаем и с чего начать.
## Способы участия {#ways-to-contribute}
### Issues (без настройки) {#issues-no-setup-required}
- **Отчёты об ошибках** - Что-то сломалось? Откройте [отчёт об ошибке](https://github.com/snapotter-hq/snapotter/issues/new?template=bug_report.yml) с шагами воспроизведения.
- **Запросы функций** - Есть идея? Начните [обсуждение](https://github.com/snapotter-hq/snapotter/discussions/new?category=ideas), чтобы сообщество могло высказаться и проголосовать за неё.
- **Проблемы с переводом** - Заметили неверный или отсутствующий перевод? Откройте [issue о переводе](https://github.com/snapotter-hq/snapotter/issues/new?template=translation.yml).
- **Проблемы с документацией** - Что-то не так в документации? Откройте [issue о документации](https://github.com/snapotter-hq/snapotter/issues/new?template=documentation.yml).
### Код (требует CLA) {#code-requires-cla}
Мы принимаем pull request'ы для:
| Тип | Процесс |
|------|---------|
| Исправления ошибок | Откройте PR напрямую (сошлитесь на issue, если он есть) |
| Новые переводы | Откройте PR напрямую (см. [руководство по переводу](/ru/guide/translations)) |
| Улучшения документации | Откройте PR напрямую |
| Улучшения покрытия тестами | Откройте PR напрямую |
| Новые инструменты или функции | Сначала начните [обсуждение](https://github.com/snapotter-hq/snapotter/discussions/new?category=ideas); мейнтейнер превращает одобренные идеи в отслеживаемый issue до того, как вы начнёте писать код |
| Рефакторинг или изменения архитектуры | Сначала начните [обсуждение](https://github.com/snapotter-hq/snapotter/discussions/new?category=ideas) и дождитесь одобрения мейнтейнера перед написанием кода |
### Что мы не принимаем {#what-we-will-not-accept}
- Изменения в CI/CD-пайплайнах, конфигурации релизов или конфигурации линтера/компилятора
- PR'ы без подписанного [Contributor License Agreement](#contributor-license-agreement)
- PR'ы с изменениями более чем на 400 строк (разбивайте большую работу на меньшие PR'ы)
- Функции, которые не были предварительно обсуждены и одобрены
- Изменения в `packages/ai/` без предварительного обсуждения
## Contributor License Agreement {#contributor-license-agreement}
Прежде чем мы сможем принять ваш первый PR, вы должны подписать наше [индивидуальное CLA](https://github.com/snapotter-hq/snapotter/blob/main/CLA.md). Это одноразовое требование.
**Почему:** SnapOtter распространяется под двойной лицензией (AGPLv3 + коммерческая). CLA предоставляет нам право распространять ваш вклад под обеими лицензиями. Вы сохраняете полное авторское право на свою работу.
**Как:** Когда вы откроете свой первый PR, бот CLA Assistant оставит комментарий со ссылкой. Нажмите на неё, ознакомьтесь с соглашением и подпишите его своей учётной записью GitHub. Это займёт 30 секунд.
Если вы вносите вклад от имени работодателя и он сохраняет права на интеллектуальную собственность в отношении вашей работы, свяжитесь с contact@snapotter.com, чтобы оформить корпоративное CLA перед отправкой.
## Начало работы {#getting-started}
### Предварительные требования {#prerequisites}
- Node.js 22+
- pnpm 9+
- Python 3.11+ (только для AI-инструментов)
- Docker (опционально, для полного интеграционного тестирования)
### Настройка {#setup}
```bash
# Fork and clone
git clone https://github.com/<your-username>/snapotter.git
cd snapotter
# Start Postgres + Redis for local dev
docker compose -f docker-compose.dev.yml up -d
# Install dependencies
pnpm install
# Start dev servers (web on :1349, API on :13490)
pnpm dev
```
### Запуск проверок {#running-checks}
Перед отправкой PR убедитесь, что все проверки проходят локально:
```bash
pnpm lint # Biome lint + format check
pnpm typecheck # TypeScript across monorepo
pnpm test # Vitest unit + integration tests
```
## Процесс pull request {#pull-request-process}
1. Сделайте форк репозитория и создайте ветку от `main` (`feat/my-feature` или `fix/issue-123`)
2. Вносите изменения сфокусированными, пригодными для ревью коммитами, используя [conventional commits](https://www.conventionalcommits.org/)
3. Добавьте или обновите тесты для своих изменений
4. Запустите `pnpm lint && pnpm typecheck && pnpm test` локально
5. Откройте PR против `main` и заполните шаблон
6. Подпишите CLA, если будет предложено
7. Дождитесь прохождения CI и ревью от мейнтейнера
### Ожидания по ревью {#review-expectations}
- Мы стремимся отвечать на PR'ы в течение 7 дней
- Небольшие, сфокусированные PR'ы проходят ревью быстрее
- Если вы не получили ответа в течение 7 дней, оставьте комментарий с упоминанием в треде
- Мы можем запросить изменения, предложить другой подход или закрыть PR, если он не соответствует направлению проекта
### После того как ваш PR будет принят {#after-your-pr-is-merged}
Ваш вклад войдёт в следующий релиз и будет упомянут в списке изменений.
## Хорошие первые задачи {#good-first-issues}
Ищете, над чем поработать? Загляните в наши [хорошие первые задачи](https://github.com/snapotter-hq/snapotter/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22), подходящие для новичков, или в [help wanted](https://github.com/snapotter-hq/snapotter/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) для более крупных задач, где мы будем рады помощи сообщества.
## Стиль кода {#code-style}
- Biome отвечает за форматирование и линтинг (двойные кавычки, точки с запятой, отступ в 2 пробела)
- Pre-commit-хук автоматически запускает `biome check --write` на staged-файлах
- Если линтер ругается, исправляйте код (не изменяйте конфигурацию Biome)
- ES-модули везде (`import`/`export`)
- Conventional commits: `feat:`, `fix:`, `refactor:`, `docs:`, `test:`, `chore:`
Полные детали архитектуры смотрите в [руководстве разработчика](/ru/guide/developer).
## Безопасность {#security}
**Не открывайте публичный PR или issue для уязвимостей безопасности.** Сообщайте о них приватно через [GitHub Security Advisories](https://github.com/snapotter-hq/snapotter/security/advisories/new) или по email contact@snapotter.com. Полные детали смотрите в [SECURITY.md](https://github.com/snapotter-hq/snapotter/blob/main/SECURITY.md).
## Вопросы? {#questions}
- [Документация](https://docs.snapotter.com/)
- [Discord](https://discord.gg/hr3s7HPUsr)
- [GitHub Discussions](https://github.com/snapotter-hq/snapotter/discussions)