Участие в разработке
Благодарим за интерес к развитию RUSEON Core! Мы приветствуем исправления ошибок, оптимизацию производительности, улучшение документации и добавление новых возможностей.
Процесс разработки и Git Workflow
Мы используем модель ветвления на базе ветки dev:
- Форк репозитория: Создайте собственный форк репозитория на GitHub и склонируйте его локально.
- Создание ветки: Создавайте тематическую ветку от
devв форматеfeat/название-фичиилиfix/описание-бага. - Обсуждение изменений: Перед реализацией крупных архитектурных изменений создайте Issue для согласования концепции.
- Реализация и тесты: Любой код на Go должен сопровождаться тестами, проходящими проверку под флагом
-race. - Форматирование и линтинг: Выполните
golangci-lint runиcd web && npm run lint. - Создание Pull Request: Все PR направляются в ветку
dev.
Стандарт сообщений коммитов (Conventional Commits)
Все коммиты должны строго следовать спецификации Conventional Commits:
text
<тип>[опциональная область]: <краткое описание>
[опциональное подробное тело сообщения]
[опциональный футер с ссылками на Issue]Разрешённые типы коммитов:
| Тип | Когда использовать | Пример |
|---|---|---|
feat | Добавление новой функциональности или API | feat(webrtc): add whep audio track negotiation |
fix | Исправление ошибки или некорректного поведения | fix(recorder): prevent file descriptor leak on disk full |
perf | Оптимизация CPU, памяти или ввода-вывода | perf(buffer): eliminate cloneBytes allocation in hot path |
docs | Изменения только в документации | docs(api): document query parameters for /api/v1/archive |
test | Добавление или обновление тестов | test(e2e): add Testcontainers test for H.265 stream |
refactor | Рефакторинг кода без изменения поведения | refactor(db): isolate badger transaction helpers |
chore | Обновление зависимостей, CI/CD, сборки | chore(deps): upgrade pion/webrtc to v4 |
Стандарты написания кода
Рекомендации для Go:
- Zero Allocations на горячем пути: Избегайте аллокаций слайсов и структур в циклах передачи медиакадров (
WriteFrame). - Передача Context: Передавайте
context.Contextпервым параметром в длительных операциях и обработчиках API. - Обработка ошибок: Всегда проверяйте и оборачивайте ошибки (
fmt.Errorf("действие: %w", err)). Не игнорируйте ошибки через_. - Потокобезопасность: Защищайте общее состояние с помощью
sync.RWMutexили атомиков (sync/atomic). Обязательно проверяйте код сgo test -race.
Рекомендации для фронтенда:
- Строгая типизация TypeScript (
noImplicitAny). - Модульная архитектура компонентов в
web/src/components/. - Валидация форм и понятная индикация ошибок для пользователя.