PHPackages                             gc-test/deal-commands - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [CLI &amp; Console](/categories/cli)
4. /
5. gc-test/deal-commands

ActiveLibrary[CLI &amp; Console](/categories/cli)

gc-test/deal-commands
=====================

Framework-agnostic command processing package for CRM deals

v0.1.0(6mo ago)01MITPHPPHP ^8.2

Since Oct 13Pushed 6mo agoCompare

[ Source](https://github.com/bazarovelmar/gc_test)[ Packagist](https://packagist.org/packages/gc-test/deal-commands)[ RSS](/packages/gc-test-deal-commands/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (7)Versions (2)Used By (0)

Тестовое задание: Пакет для обработки команд
--------------------------------------------

[](#тестовое-задание-пакет-для-обработки-команд)

### Цель

[](#цель)

Разработать PHP пакет для обработки текстовых команд пользователя. Пакет должен быть независим от фреймворка, но легко интегрироваться с Laravel приложениями через Composer.

### Контекст

[](#контекст)

Пакет будет использоваться в CRM-системе, где пользователи вводят текстовые команды для управления сделками. Все команды выполняются в контексте конкретной сделки.

### Примеры команд для реализации

[](#примеры-команд-для-реализации)

- /принято 500 офис — устанавливает свойство сделки #14 = 500, а #15 = офис
- /контакт — выводит служебное сообщение в сделку с текстом, содержащим контакт клиента по текущей сделке
- /причина\_закрытия удалена транзакция — устанавливает свойство сделки #222 в "удалена транзакция"
- /причина — выводит служебное сообщение в сделку с текстом, содержащим свойство #222 текущей сделки

### Требования

[](#требования)

1. Код должен быть написан на PHP 8+
2. Пакет должен быть установлен через Composer
3. Необходимо реализовать логирование вызовов команд
4. Бизнес-логика должна быть изолирована от инфраструктуры
5. Решение должно быть расширяемым для добавления новых команд

### Ограничения

[](#ограничения)

- Пакет должен быть написан на чистом PHP без прямых зависимостей от Laravel

### Критерии оценки

[](#критерии-оценки)

1. Архитектурное решение
2. Чистота и стиль кода
3. Наличие тестов
4. Возможность расширения функциональности
5. Правильность настройки Composer для использования в Laravel

### Установка и интеграция с Laravel

[](#установка-и-интеграция-с-laravel)

1. Установка

```
composer require gc-test/deal-commands

```

2. Автодискавери

- Ничего добавлять в `config/app.php` не нужно: провайдер пакета подключится автоматически.

3. Публикация конфига

```
php artisan vendor:publish --tag=deal-commands-config

```

4. Настройка `config/deal-commands.php`

```
'adapter' => App\Infrastructure\Crm\DealGateway::class,
'commands' => [
    GcTest\DealCommands\Application\Commands\AcceptedCommand::class,
    GcTest\DealCommands\Application\Commands\ContactCommand::class,
    GcTest\DealCommands\Application\Commands\CloseReasonSetCommand::class,
    GcTest\DealCommands\Application\Commands\CloseReasonShowCommand::class,
],

```

5. Использование

```
use GcTest\DealCommands\Application\CommandProcessor;
use GcTest\DealCommands\Domain\Contracts\DealGatewayInterface;

$processor = app(CommandProcessor::class);
$gateway = app(DealGatewayInterface::class); // ваша реализация из конфига

$response = $processor->process($input, $gateway);

```

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance70

Regular maintenance activity

Popularity1

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

208d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/454a6191c13820edbcffe20f15fbc06b1fbcaf27ade5b6f34f9fd9dfca28058f?d=identicon)[bazarovelmar](/maintainers/bazarovelmar)

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/gc-test-deal-commands/health.svg)

```
[![Health](https://phpackages.com/badges/gc-test-deal-commands/health.svg)](https://phpackages.com/packages/gc-test-deal-commands)
```

###  Alternatives

[league/climate

PHP's best friend for the terminal. CLImate allows you to easily output colored text, special formats, and more.

1.9k14.0M272](/packages/league-climate)[humbug/box

Fast, zero config application bundler with PHARs.

1.3k801.5k68](/packages/humbug-box)[crunzphp/crunz

Schedule your tasks right from the code.

2292.0M6](/packages/crunzphp-crunz)[vanilla/garden-cli

A full-featured, yet ridiculously simple commandline parser for your next php cli script. Stop fighting with getopt().

1171.2M42](/packages/vanilla-garden-cli)[graze/parallel-process

run a pool of processes simultaneously

103214.3k1](/packages/graze-parallel-process)[civicrm/cv

CLI tool for CiviCRM

4219.8k](/packages/civicrm-cv)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
