Спасибо за интерес к проекту YandexGPT PHP SDK! Мы рады любому вкладу в развитие пакета.
Если вы нашли ошибку:
- Проверьте существующие issues - возможно, проблема уже известна
- Создайте новый issue с подробным описанием:
- Версия PHP и Laravel
- Шаги для воспроизведения
- Ожидаемое и фактическое поведение
- Логи ошибок (если есть)
Для предложения новой функциональности:
- Создайте issue с тегом
enhancement - Опишите проблему, которую решает функция
- Предложите решение с примерами использования
- Дождитесь обсуждения перед началом разработки
# Форкните репозиторий и клонируйте его
git clone https://github.com/your-username/yandexgpt-php.git
cd yandexgpt-php
# Установите зависимости
composer install
# Создайте ветку для вашей функции
git checkout -b feature/your-feature-name# Скопируйте файл окружения
cp .env.example .env
# Добавьте ваши тестовые токены
YANDEX_GPT_OAUTH_TOKEN=your_test_token
YANDEX_GPT_FOLDER_ID=your_test_folder_id- Следуйте PSR-12 стандарту кодирования
- Добавляйте типы для всех параметров и возвращаемых значений
- Пишите тесты для новой функциональности
- Обновляйте документацию при необходимости
# Запуск всех тестов
composer test
# Запуск тестов с покрытием
composer test-coverage
# Проверка стиля кода
composer lint<?php
namespace Tigusigalpa\YandexGPT;
class ExampleClass
{
private string $property;
public function __construct(string $property)
{
$this->property = $property;
}
public function getProperty(): string
{
return $this->property;
}
}/**
* Generate text using YandexGPT API
*
* @param string $prompt Text prompt for generation
* @param string $model Model to use for generation
* @param array $options Additional options
* @return array API response
* @throws ApiException When API request fails
*/
public function generateText(string $prompt, string $model = 'yandexgpt-lite', array $options = []): array
{
// Implementation
}<?php
namespace Tigusigalpa\YandexGPT\Tests;
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
public function testExampleFunction(): void
{
// Arrange
$input = 'test input';
// Act
$result = $this->someFunction($input);
// Assert
$this->assertEquals('expected output', $result);
}
}- Новые функции должны иметь тесты
- Исправления ошибок должны включать регрессионные тесты
- Стремитесь к 80%+ покрытию кода
При добавлении новых функций обновите:
- Примеры использования
- Список доступных методов
- Конфигурационные параметры
// Хорошо: объясняет "почему"
// Используем кэширование IAM токена для избежания лишних запросов
$this->cachedToken = $iamToken;
// Плохо: объясняет "что"
// Присваиваем токен переменной
$this->cachedToken = $iamToken;- Код соответствует стандартам проекта
- Все тесты проходят
- Добавлены тесты для новой функциональности
- Обновлена документация
- Коммиты имеют понятные сообщения
## Описание
Краткое описание изменений
## Тип изменений
- [ ] Исправление ошибки
- [ ] Новая функция
- [ ] Критическое изменение
- [ ] Обновление документации
## Тестирование
- [ ] Тесты проходят локально
- [ ] Добавлены новые тесты
## Чеклист
- [ ] Код следует стандартам проекта
- [ ] Обновлена документация- Автоматические проверки должны пройти
- Ревью кода от мейнтейнеров
- Тестирование на разных версиях PHP/Laravel
- Мерж после одобрения
- GitHub Issues - для багов и предложений
- GitHub Discussions - для общих вопросов
- Email - sovletig@gmail.com для приватных вопросов
Участвуя в проекте, вы соглашаетесь с тем, что ваш вклад будет лицензирован под MIT License.
Спасибо за ваш вклад в развитие YandexGPT PHP SDK! 🎉