# Contributing ## Code Style - Go: `go fmt`, `go vet`, `staticcheck` - Svelte/JS: стандартный формат Prettier Перед коммитом: ```bash make fmt make lint make test ``` ## Как добавить новый эндпоинт 1. Определить модель в `internal/models/types.go` 2. Реализовать хендлер в `internal/api/.go` 3. Зарегистрировать маршрут в `internal/api/router.go` с нужными middleware (auth, admin) 4. Добавить тесты в `internal/engine/engine_test.go` если затрагивается scoring ## Commit Messages Формат — [Conventional Commits](https://www.conventionalcommits.org/): ``` feat: add support for custom scoring weights fix: handle nil ESL client in route handler docs: add API reference table to README refactor: extract scoring logic into separate method test: add lethal condition tests for stale nodes chore: update Go dependencies ``` ## PR Process 1. Ветка от `main`, название `feature/`, `fix/` или `docs/` 2. Один PR — одно логическое изменение 3. Все тесты проходят (`make test`) 4. Код проходит `make lint` 5. Если меняется API — обновить README.md ## Тестирование ```bash make test # юнит-тесты make test-race # с race detector make emulate-normal # интеграционная проверка ```