初始化

This commit is contained in:
1173117610@qq.com 2026-06-23 16:08:46 +08:00
parent 7984fdc92f
commit 3b4674ed92
36 changed files with 337 additions and 2855 deletions

5
.htaccess Normal file
View File

@ -0,0 +1,5 @@
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ server.php [QSA,L]

View File

@ -4,34 +4,15 @@
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="App\" /> <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="App\" />
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" /> <excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/deprecations" />
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/guzzle" /> <excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/guzzle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/promises" /> <excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/promises" />
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/psr7" /> <excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/psr7" />
<excludeFolder url="file://$MODULE_DIR$/vendor/mcp/sdk" />
<excludeFolder url="file://$MODULE_DIR$/vendor/opis/json-schema" />
<excludeFolder url="file://$MODULE_DIR$/vendor/opis/string" />
<excludeFolder url="file://$MODULE_DIR$/vendor/opis/uri" />
<excludeFolder url="file://$MODULE_DIR$/vendor/php-http/discovery" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-common" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-docblock" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/type-resolver" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpstan/phpdoc-parser" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/clock" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/container" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/event-dispatcher" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-client" /> <excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-client" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-factory" /> <excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-factory" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-message" /> <excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-message" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-server-handler" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-server-middleware" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/log" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ralouphie/getallheaders" /> <excludeFolder url="file://$MODULE_DIR$/vendor/ralouphie/getallheaders" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/deprecation-contracts" /> <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/deprecation-contracts" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php80" /> <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php80" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-uuid" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/uid" />
<excludeFolder url="file://$MODULE_DIR$/vendor/webmozart/assert" />
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />

View File

@ -12,29 +12,10 @@
</component> </component>
<component name="PhpIncludePathManager"> <component name="PhpIncludePathManager">
<include_path> <include_path>
<path value="$PROJECT_DIR$/vendor/psr/clock" />
<path value="$PROJECT_DIR$/vendor/mcp/sdk" />
<path value="$PROJECT_DIR$/vendor/psr/http-factory" /> <path value="$PROJECT_DIR$/vendor/psr/http-factory" />
<path value="$PROJECT_DIR$/vendor/psr/http-server-handler" />
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" />
<path value="$PROJECT_DIR$/vendor/php-http/discovery" />
<path value="$PROJECT_DIR$/vendor/psr/log" />
<path value="$PROJECT_DIR$/vendor/opis/uri" />
<path value="$PROJECT_DIR$/vendor/psr/http-server-middleware" />
<path value="$PROJECT_DIR$/vendor/opis/string" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-uuid" />
<path value="$PROJECT_DIR$/vendor/composer" /> <path value="$PROJECT_DIR$/vendor/composer" />
<path value="$PROJECT_DIR$/vendor/opis/json-schema" />
<path value="$PROJECT_DIR$/vendor/psr/http-client" /> <path value="$PROJECT_DIR$/vendor/psr/http-client" />
<path value="$PROJECT_DIR$/vendor/psr/container" />
<path value="$PROJECT_DIR$/vendor/psr/event-dispatcher" />
<path value="$PROJECT_DIR$/vendor/psr/http-message" /> <path value="$PROJECT_DIR$/vendor/psr/http-message" />
<path value="$PROJECT_DIR$/vendor/phpstan/phpdoc-parser" />
<path value="$PROJECT_DIR$/vendor/symfony/uid" />
<path value="$PROJECT_DIR$/vendor/doctrine/deprecations" />
<path value="$PROJECT_DIR$/vendor/webmozart/assert" />
<path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" />
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" />
<path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" /> <path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
<path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" /> <path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
<path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" /> <path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />

84
README.md Normal file
View File

@ -0,0 +1,84 @@
# Merchant AI HTTP API
PHP 8.2 JSON API service for merchant order statistics, offline order analysis, and merchant ranking.
## Environment
```bash
MERCHANT_API_TOKEN=your-admin-api-token
MERCHANT_API_BASE_URI=https://tpoint.agrimedia.cn
MERCHANT_API_TIMEOUT=10
```
`MERCHANT_API_TOKEN` is required. `MERCHANT_API_BASE_URI` and `MERCHANT_API_TIMEOUT` are optional.
## Start Locally
```bash
php -S 127.0.0.1:8080 server.php
```
## Response Format
Success:
```json
{
"success": true,
"data": {}
}
```
Error:
```json
{
"success": false,
"error": {
"code": "server_error",
"message": "error message"
}
}
```
## Endpoints
### `GET|POST /tools`
Returns available API tools and input schemas.
### `GET|POST /api/order-summary`
Returns order count, active merchant count, successful order count, and amount totals.
### `GET|POST /api/offline-orders/analyze`
Returns status, payment type, order type, and amount distribution analysis.
### `GET|POST /api/merchant-ranking`
Returns merchant ranking by `orderCount`, `successOrderCount`, `totalOrderAmount`, or `totalRealPay`.
## Common Parameters
- `date`: date range, for example `2026/06/23-2026/06/23`; defaults to today.
- `status`: order status; defaults to `-1`.
- `keyword`: search keyword, sent to upstream API as `real_name`.
- `fieldKey`: upstream `field_key`; defaults to `all`.
- `payType`: upstream `pay_type`.
- `type`: upstream order `type`.
- `btcId`: upstream merchant category ID.
`/api/merchant-ranking` also supports:
- `sortBy`: `orderCount`, `successOrderCount`, `totalOrderAmount`, or `totalRealPay`; defaults to `totalRealPay`.
- `limit`: number of merchants to return; defaults to `10`, max `100`.
## POST Example
```bash
curl -X POST http://127.0.0.1:8080/api/merchant-ranking \
-H "Content-Type: application/json" \
-d '{"date":"2026/06/23-2026/06/23","sortBy":"totalRealPay","limit":10}'
```

View File

@ -1,7 +1,6 @@
{ {
"require": { "require": {
"php": "^8.2", "php": "^8.2",
"mcp/sdk": "^0.6.0",
"guzzlehttp/guzzle": "^7.12" "guzzlehttp/guzzle": "^7.12"
}, },
"autoload": { "autoload": {

1167
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@ declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php'; require __DIR__ . '/vendor/autoload.php';
use App\Server\ServerFactory; use App\Api\ApiFactory;
use Mcp\Server\Transport\StdioTransport; use App\Http\HttpRequest;
ServerFactory::create()->run(new StdioTransport()); ApiFactory::create()->handle(HttpRequest::fromGlobals());

View File

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace App\Server; namespace App\Api;
use App\Config\ApiConfig; use App\Config\ApiConfig;
use App\Http\MerchantApiClient; use App\Http\MerchantApiClient;
@ -10,25 +10,18 @@ use App\Repositories\OfflineOrderRepository;
use App\Tools\AnalyzeOfflineOrdersTool; use App\Tools\AnalyzeOfflineOrdersTool;
use App\Tools\MerchantRankingTool; use App\Tools\MerchantRankingTool;
use App\Tools\OrderSummaryTool; use App\Tools\OrderSummaryTool;
use App\Tools\ToolRegistrar;
use Mcp\Server;
final class ServerFactory final class ApiFactory
{ {
public static function create(): Server public static function create(): ApiKernel
{ {
$apiClient = new MerchantApiClient(ApiConfig::fromEnvironment()); $apiClient = new MerchantApiClient(ApiConfig::fromEnvironment());
$orders = new OfflineOrderRepository($apiClient); $orders = new OfflineOrderRepository($apiClient);
$registrar = new ToolRegistrar( return new ApiKernel(
new OrderSummaryTool($orders), new OrderSummaryTool($orders),
new AnalyzeOfflineOrdersTool($orders), new AnalyzeOfflineOrdersTool($orders),
new MerchantRankingTool($orders), new MerchantRankingTool($orders),
); );
$builder = Server::builder()
->setServerInfo('Merchant MCP', '1.0.0');
return $registrar->register($builder)->build();
} }
} }

142
src/Api/ApiKernel.php Normal file
View File

@ -0,0 +1,142 @@
<?php
declare(strict_types=1);
namespace App\Api;
use App\Http\HttpRequest;
use App\Http\JsonResponse;
use App\Tools\AnalyzeOfflineOrdersTool;
use App\Tools\MerchantRankingTool;
use App\Tools\OrderSummaryTool;
final readonly class ApiKernel
{
public function __construct(
private OrderSummaryTool $orderSummaryTool,
private AnalyzeOfflineOrdersTool $analyzeOfflineOrdersTool,
private MerchantRankingTool $merchantRankingTool,
) {
}
public function handle(HttpRequest $request): void
{
try {
match ($request->path) {
'/', '/health' => $this->ok(['status' => 'ok', 'service' => 'merchant-ai-api']),
'/tools' => $this->ok($this->tools()),
'/api/order-summary' => $this->ok($this->orderSummary($request)),
'/api/offline-orders/analyze' => $this->ok($this->analyzeOfflineOrders($request)),
'/api/merchant-ranking' => $this->ok($this->merchantRanking($request)),
default => JsonResponse::send([
'success' => false,
'error' => [
'code' => 'not_found',
'message' => 'API route not found.',
],
], 404),
};
} catch (\Throwable $exception) {
JsonResponse::send([
'success' => false,
'error' => [
'code' => 'server_error',
'message' => $exception->getMessage(),
],
], 500);
}
}
/**
* @param array<string, mixed> $data
*/
private function ok(array $data): void
{
JsonResponse::send([
'success' => true,
'data' => $data,
]);
}
/**
* @return array<string, mixed>
*/
private function tools(): array
{
return [
'tools' => [
[
'name' => OrderSummaryTool::NAME,
'description' => OrderSummaryTool::DESCRIPTION,
'method' => 'GET|POST',
'path' => '/api/order-summary',
'inputSchema' => OrderSummaryTool::inputSchema(),
],
[
'name' => AnalyzeOfflineOrdersTool::NAME,
'description' => AnalyzeOfflineOrdersTool::DESCRIPTION,
'method' => 'GET|POST',
'path' => '/api/offline-orders/analyze',
'inputSchema' => AnalyzeOfflineOrdersTool::inputSchema(),
],
[
'name' => MerchantRankingTool::NAME,
'description' => MerchantRankingTool::DESCRIPTION,
'method' => 'GET|POST',
'path' => '/api/merchant-ranking',
'inputSchema' => MerchantRankingTool::inputSchema(),
],
],
];
}
/**
* @return array<string, mixed>
*/
private function orderSummary(HttpRequest $request): array
{
return ($this->orderSummaryTool)(
$request->string('date'),
$request->int('status'),
$request->string('keyword'),
$request->string('fieldKey'),
$request->string('payType'),
$request->string('type'),
$request->int('btcId'),
);
}
/**
* @return array<string, mixed>
*/
private function analyzeOfflineOrders(HttpRequest $request): array
{
return ($this->analyzeOfflineOrdersTool)(
$request->string('date'),
$request->int('status'),
$request->string('keyword'),
$request->string('fieldKey'),
$request->string('payType'),
$request->string('type'),
$request->int('btcId'),
);
}
/**
* @return array<string, mixed>
*/
private function merchantRanking(HttpRequest $request): array
{
return ($this->merchantRankingTool)(
$request->string('date'),
$request->int('status'),
$request->string('keyword'),
$request->string('fieldKey'),
$request->string('payType'),
$request->string('type'),
$request->int('btcId'),
$request->string('sortBy'),
$request->int('limit'),
);
}
}

70
src/Http/HttpRequest.php Normal file
View File

@ -0,0 +1,70 @@
<?php
declare(strict_types=1);
namespace App\Http;
final readonly class HttpRequest
{
/**
* @param array<string, mixed> $input
*/
public function __construct(
public string $method,
public string $path,
public array $input,
) {
}
public static function fromGlobals(): self
{
$method = strtoupper((string) ($_SERVER['REQUEST_METHOD'] ?? 'GET'));
$uri = (string) ($_SERVER['REQUEST_URI'] ?? '/');
$path = parse_url($uri, PHP_URL_PATH) ?: '/';
$input = $_GET;
if (in_array($method, ['POST', 'PUT', 'PATCH'], true)) {
$body = trim((string) file_get_contents('php://input'));
if ($body !== '') {
$decoded = json_decode($body, true);
if (is_array($decoded)) {
$input = array_merge($input, $decoded);
}
}
}
return new self($method, $path, $input);
}
public function string(string $key): ?string
{
if (!array_key_exists($key, $this->input)) {
return null;
}
$value = $this->input[$key];
if ($value === null || is_array($value)) {
return null;
}
return (string) $value;
}
public function int(string $key): ?int
{
if (!array_key_exists($key, $this->input)) {
return null;
}
$value = $this->input[$key];
if ($value === null || $value === '' || is_array($value)) {
return null;
}
return (int) $value;
}
}

19
src/Http/JsonResponse.php Normal file
View File

@ -0,0 +1,19 @@
<?php
declare(strict_types=1);
namespace App\Http;
final class JsonResponse
{
/**
* @param array<string, mixed> $payload
*/
public static function send(array $payload, int $statusCode = 200): void
{
http_response_code($statusCode);
header('Content-Type: application/json; charset=utf-8');
echo json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
}
}

View File

@ -1,81 +0,0 @@
<?php
declare(strict_types=1);
namespace App\Tools;
use Mcp\Server\Builder;
final readonly class ToolRegistrar
{
public function __construct(
private OrderSummaryTool $orderSummaryTool,
private AnalyzeOfflineOrdersTool $analyzeOfflineOrdersTool,
private MerchantRankingTool $merchantRankingTool,
) {
}
public function register(Builder $builder): Builder
{
return $builder
->addTool(
handler: $this->orderSummaryHandler(),
name: OrderSummaryTool::NAME,
description: OrderSummaryTool::DESCRIPTION,
inputSchema: OrderSummaryTool::inputSchema(),
)
->addTool(
handler: $this->analyzeOfflineOrdersHandler(),
name: AnalyzeOfflineOrdersTool::NAME,
description: AnalyzeOfflineOrdersTool::DESCRIPTION,
inputSchema: AnalyzeOfflineOrdersTool::inputSchema(),
)
->addTool(
handler: $this->merchantRankingHandler(),
name: MerchantRankingTool::NAME,
description: MerchantRankingTool::DESCRIPTION,
inputSchema: MerchantRankingTool::inputSchema(),
);
}
private function orderSummaryHandler(): \Closure
{
return fn (
?string $date = null,
?int $status = null,
?string $keyword = null,
?string $fieldKey = null,
?string $payType = null,
?string $type = null,
?int $btcId = null,
): array => ($this->orderSummaryTool)($date, $status, $keyword, $fieldKey, $payType, $type, $btcId);
}
private function analyzeOfflineOrdersHandler(): \Closure
{
return fn (
?string $date = null,
?int $status = null,
?string $keyword = null,
?string $fieldKey = null,
?string $payType = null,
?string $type = null,
?int $btcId = null,
): array => ($this->analyzeOfflineOrdersTool)($date, $status, $keyword, $fieldKey, $payType, $type, $btcId);
}
private function merchantRankingHandler(): \Closure
{
return fn (
?string $date = null,
?int $status = null,
?string $keyword = null,
?string $fieldKey = null,
?string $payType = null,
?string $type = null,
?int $btcId = null,
?string $sortBy = null,
?int $limit = null,
): array => ($this->merchantRankingTool)($date, $status, $keyword, $fieldKey, $payType, $type, $btcId, $sortBy, $limit);
}
}

View File

@ -9,6 +9,5 @@ return array(
'6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
'09f6b20656683369174dd6fa83b7e5fb' => $vendorDir . '/symfony/polyfill-uuid/bootstrap.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
); );

View File

@ -6,27 +6,11 @@ $vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir); $baseDir = dirname($vendorDir);
return array( return array(
'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-common/src'),
'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
'Symfony\\Polyfill\\Uuid\\' => array($vendorDir . '/symfony/polyfill-uuid'),
'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
'Symfony\\Component\\Uid\\' => array($vendorDir . '/symfony/uid'),
'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
'Psr\\Http\\Server\\' => array($vendorDir . '/psr/http-server-middleware/src', $vendorDir . '/psr/http-server-handler/src'),
'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'), 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'), 'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'),
'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
'Psr\\Clock\\' => array($vendorDir . '/psr/clock/src'),
'PHPStan\\PhpDocParser\\' => array($vendorDir . '/phpstan/phpdoc-parser/src'),
'Opis\\Uri\\' => array($vendorDir . '/opis/uri/src'),
'Opis\\String\\' => array($vendorDir . '/opis/string/src'),
'Opis\\JsonSchema\\' => array($vendorDir . '/opis/json-schema/src'),
'Mcp\\' => array($vendorDir . '/mcp/sdk/src'),
'Http\\Discovery\\' => array($vendorDir . '/php-http/discovery/src'),
'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'),
'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),
'Doctrine\\Deprecations\\' => array($vendorDir . '/doctrine/deprecations/src'),
'App\\' => array($baseDir . '/src'), 'App\\' => array($baseDir . '/src'),
); );

View File

@ -10,49 +10,18 @@ class ComposerStaticInit842ab640c1f6a67d129686b79420231b
'6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
'09f6b20656683369174dd6fa83b7e5fb' => __DIR__ . '/..' . '/symfony/polyfill-uuid/bootstrap.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
); );
public static $prefixLengthsPsr4 = array ( public static $prefixLengthsPsr4 = array (
'p' =>
array (
'phpDocumentor\\Reflection\\' => 25,
),
'W' =>
array (
'Webmozart\\Assert\\' => 17,
),
'S' => 'S' =>
array ( array (
'Symfony\\Polyfill\\Uuid\\' => 22,
'Symfony\\Polyfill\\Php80\\' => 23, 'Symfony\\Polyfill\\Php80\\' => 23,
'Symfony\\Component\\Uid\\' => 22,
), ),
'P' => 'P' =>
array ( array (
'Psr\\Log\\' => 8,
'Psr\\Http\\Server\\' => 16,
'Psr\\Http\\Message\\' => 17, 'Psr\\Http\\Message\\' => 17,
'Psr\\Http\\Client\\' => 16, 'Psr\\Http\\Client\\' => 16,
'Psr\\EventDispatcher\\' => 20,
'Psr\\Container\\' => 14,
'Psr\\Clock\\' => 10,
'PHPStan\\PhpDocParser\\' => 21,
),
'O' =>
array (
'Opis\\Uri\\' => 9,
'Opis\\String\\' => 12,
'Opis\\JsonSchema\\' => 16,
),
'M' =>
array (
'Mcp\\' => 4,
),
'H' =>
array (
'Http\\Discovery\\' => 15,
), ),
'G' => 'G' =>
array ( array (
@ -60,10 +29,6 @@ class ComposerStaticInit842ab640c1f6a67d129686b79420231b
'GuzzleHttp\\Promise\\' => 19, 'GuzzleHttp\\Promise\\' => 19,
'GuzzleHttp\\' => 11, 'GuzzleHttp\\' => 11,
), ),
'D' =>
array (
'Doctrine\\Deprecations\\' => 22,
),
'A' => 'A' =>
array ( array (
'App\\' => 4, 'App\\' => 4,
@ -71,37 +36,10 @@ class ComposerStaticInit842ab640c1f6a67d129686b79420231b
); );
public static $prefixDirsPsr4 = array ( public static $prefixDirsPsr4 = array (
'phpDocumentor\\Reflection\\' =>
array (
0 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
2 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
),
'Webmozart\\Assert\\' =>
array (
0 => __DIR__ . '/..' . '/webmozart/assert/src',
),
'Symfony\\Polyfill\\Uuid\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-uuid',
),
'Symfony\\Polyfill\\Php80\\' => 'Symfony\\Polyfill\\Php80\\' =>
array ( array (
0 => __DIR__ . '/..' . '/symfony/polyfill-php80', 0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
), ),
'Symfony\\Component\\Uid\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/uid',
),
'Psr\\Log\\' =>
array (
0 => __DIR__ . '/..' . '/psr/log/src',
),
'Psr\\Http\\Server\\' =>
array (
0 => __DIR__ . '/..' . '/psr/http-server-middleware/src',
1 => __DIR__ . '/..' . '/psr/http-server-handler/src',
),
'Psr\\Http\\Message\\' => 'Psr\\Http\\Message\\' =>
array ( array (
0 => __DIR__ . '/..' . '/psr/http-factory/src', 0 => __DIR__ . '/..' . '/psr/http-factory/src',
@ -111,42 +49,6 @@ class ComposerStaticInit842ab640c1f6a67d129686b79420231b
array ( array (
0 => __DIR__ . '/..' . '/psr/http-client/src', 0 => __DIR__ . '/..' . '/psr/http-client/src',
), ),
'Psr\\EventDispatcher\\' =>
array (
0 => __DIR__ . '/..' . '/psr/event-dispatcher/src',
),
'Psr\\Container\\' =>
array (
0 => __DIR__ . '/..' . '/psr/container/src',
),
'Psr\\Clock\\' =>
array (
0 => __DIR__ . '/..' . '/psr/clock/src',
),
'PHPStan\\PhpDocParser\\' =>
array (
0 => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src',
),
'Opis\\Uri\\' =>
array (
0 => __DIR__ . '/..' . '/opis/uri/src',
),
'Opis\\String\\' =>
array (
0 => __DIR__ . '/..' . '/opis/string/src',
),
'Opis\\JsonSchema\\' =>
array (
0 => __DIR__ . '/..' . '/opis/json-schema/src',
),
'Mcp\\' =>
array (
0 => __DIR__ . '/..' . '/mcp/sdk/src',
),
'Http\\Discovery\\' =>
array (
0 => __DIR__ . '/..' . '/php-http/discovery/src',
),
'GuzzleHttp\\Psr7\\' => 'GuzzleHttp\\Psr7\\' =>
array ( array (
0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src',
@ -159,10 +61,6 @@ class ComposerStaticInit842ab640c1f6a67d129686b79420231b
array ( array (
0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src', 0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src',
), ),
'Doctrine\\Deprecations\\' =>
array (
0 => __DIR__ . '/..' . '/doctrine/deprecations/src',
),
'App\\' => 'App\\' =>
array ( array (
0 => __DIR__ . '/../..' . '/src', 0 => __DIR__ . '/../..' . '/src',

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
<?php return array( <?php return array(
'root' => array( 'root' => array(
'name' => '__root__', 'name' => '__root__',
'pretty_version' => '1.0.0+no-version-set', 'pretty_version' => 'dev-master',
'version' => '1.0.0.0', 'version' => 'dev-master',
'reference' => null, 'reference' => '7984fdc92f51bf7a1b1cac42da4ec23fb57ccf8d',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',
'aliases' => array(), 'aliases' => array(),
@ -11,23 +11,14 @@
), ),
'versions' => array( 'versions' => array(
'__root__' => array( '__root__' => array(
'pretty_version' => '1.0.0+no-version-set', 'pretty_version' => 'dev-master',
'version' => '1.0.0.0', 'version' => 'dev-master',
'reference' => null, 'reference' => '7984fdc92f51bf7a1b1cac42da4ec23fb57ccf8d',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',
'aliases' => array(), 'aliases' => array(),
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'doctrine/deprecations' => array(
'pretty_version' => '1.1.6',
'version' => '1.1.6.0',
'reference' => 'd4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca',
'type' => 'library',
'install_path' => __DIR__ . '/../doctrine/deprecations',
'aliases' => array(),
'dev_requirement' => false,
),
'guzzlehttp/guzzle' => array( 'guzzlehttp/guzzle' => array(
'pretty_version' => '7.12.1', 'pretty_version' => '7.12.1',
'version' => '7.12.1.0', 'version' => '7.12.1.0',
@ -55,126 +46,6 @@
'aliases' => array(), 'aliases' => array(),
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'mcp/sdk' => array(
'pretty_version' => 'v0.6.0',
'version' => '0.6.0.0',
'reference' => '433c84b58af346dd32f15f9909679e96a46ebe23',
'type' => 'library',
'install_path' => __DIR__ . '/../mcp/sdk',
'aliases' => array(),
'dev_requirement' => false,
),
'opis/json-schema' => array(
'pretty_version' => '2.6.0',
'version' => '2.6.0.0',
'reference' => '8458763e0dd0b6baa310e04f1829fc73da4e8c8a',
'type' => 'library',
'install_path' => __DIR__ . '/../opis/json-schema',
'aliases' => array(),
'dev_requirement' => false,
),
'opis/string' => array(
'pretty_version' => '2.1.0',
'version' => '2.1.0.0',
'reference' => '3e4d2aaff518ac518530b89bb26ed40f4503635e',
'type' => 'library',
'install_path' => __DIR__ . '/../opis/string',
'aliases' => array(),
'dev_requirement' => false,
),
'opis/uri' => array(
'pretty_version' => '1.1.0',
'version' => '1.1.0.0',
'reference' => '0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a',
'type' => 'library',
'install_path' => __DIR__ . '/../opis/uri',
'aliases' => array(),
'dev_requirement' => false,
),
'php-http/async-client-implementation' => array(
'dev_requirement' => false,
'provided' => array(
0 => '*',
),
),
'php-http/client-implementation' => array(
'dev_requirement' => false,
'provided' => array(
0 => '*',
),
),
'php-http/discovery' => array(
'pretty_version' => '1.20.0',
'version' => '1.20.0.0',
'reference' => '82fe4c73ef3363caed49ff8dd1539ba06044910d',
'type' => 'composer-plugin',
'install_path' => __DIR__ . '/../php-http/discovery',
'aliases' => array(),
'dev_requirement' => false,
),
'phpdocumentor/reflection-common' => array(
'pretty_version' => '2.2.0',
'version' => '2.2.0.0',
'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
'type' => 'library',
'install_path' => __DIR__ . '/../phpdocumentor/reflection-common',
'aliases' => array(),
'dev_requirement' => false,
),
'phpdocumentor/reflection-docblock' => array(
'pretty_version' => '6.0.3',
'version' => '6.0.3.0',
'reference' => '7bae67520aa9f5ecc506d646810bd40d9da54582',
'type' => 'library',
'install_path' => __DIR__ . '/../phpdocumentor/reflection-docblock',
'aliases' => array(),
'dev_requirement' => false,
),
'phpdocumentor/type-resolver' => array(
'pretty_version' => '2.0.0',
'version' => '2.0.0.0',
'reference' => '327a05bbee54120d4786a0dc67aad30226ad4cf9',
'type' => 'library',
'install_path' => __DIR__ . '/../phpdocumentor/type-resolver',
'aliases' => array(),
'dev_requirement' => false,
),
'phpstan/phpdoc-parser' => array(
'pretty_version' => '2.3.2',
'version' => '2.3.2.0',
'reference' => 'a004701b11273a26cd7955a61d67a7f1e525a45a',
'type' => 'library',
'install_path' => __DIR__ . '/../phpstan/phpdoc-parser',
'aliases' => array(),
'dev_requirement' => false,
),
'psr/clock' => array(
'pretty_version' => '1.0.0',
'version' => '1.0.0.0',
'reference' => 'e41a24703d4560fd0acb709162f73b8adfc3aa0d',
'type' => 'library',
'install_path' => __DIR__ . '/../psr/clock',
'aliases' => array(),
'dev_requirement' => false,
),
'psr/container' => array(
'pretty_version' => '2.0.2',
'version' => '2.0.2.0',
'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963',
'type' => 'library',
'install_path' => __DIR__ . '/../psr/container',
'aliases' => array(),
'dev_requirement' => false,
),
'psr/event-dispatcher' => array(
'pretty_version' => '1.0.0',
'version' => '1.0.0.0',
'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0',
'type' => 'library',
'install_path' => __DIR__ . '/../psr/event-dispatcher',
'aliases' => array(),
'dev_requirement' => false,
),
'psr/http-client' => array( 'psr/http-client' => array(
'pretty_version' => '1.0.3', 'pretty_version' => '1.0.3',
'version' => '1.0.3.0', 'version' => '1.0.3.0',
@ -187,8 +58,7 @@
'psr/http-client-implementation' => array( 'psr/http-client-implementation' => array(
'dev_requirement' => false, 'dev_requirement' => false,
'provided' => array( 'provided' => array(
0 => '*', 0 => '1.0',
1 => '1.0',
), ),
), ),
'psr/http-factory' => array( 'psr/http-factory' => array(
@ -203,8 +73,7 @@
'psr/http-factory-implementation' => array( 'psr/http-factory-implementation' => array(
'dev_requirement' => false, 'dev_requirement' => false,
'provided' => array( 'provided' => array(
0 => '*', 0 => '1.0',
1 => '1.0',
), ),
), ),
'psr/http-message' => array( 'psr/http-message' => array(
@ -219,37 +88,9 @@
'psr/http-message-implementation' => array( 'psr/http-message-implementation' => array(
'dev_requirement' => false, 'dev_requirement' => false,
'provided' => array( 'provided' => array(
0 => '*', 0 => '1.0',
1 => '1.0',
), ),
), ),
'psr/http-server-handler' => array(
'pretty_version' => '1.0.2',
'version' => '1.0.2.0',
'reference' => '84c4fb66179be4caaf8e97bd239203245302e7d4',
'type' => 'library',
'install_path' => __DIR__ . '/../psr/http-server-handler',
'aliases' => array(),
'dev_requirement' => false,
),
'psr/http-server-middleware' => array(
'pretty_version' => '1.0.2',
'version' => '1.0.2.0',
'reference' => 'c1481f747daaa6a0782775cd6a8c26a1bf4a3829',
'type' => 'library',
'install_path' => __DIR__ . '/../psr/http-server-middleware',
'aliases' => array(),
'dev_requirement' => false,
),
'psr/log' => array(
'pretty_version' => '3.0.2',
'version' => '3.0.2.0',
'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3',
'type' => 'library',
'install_path' => __DIR__ . '/../psr/log',
'aliases' => array(),
'dev_requirement' => false,
),
'ralouphie/getallheaders' => array( 'ralouphie/getallheaders' => array(
'pretty_version' => '3.0.3', 'pretty_version' => '3.0.3',
'version' => '3.0.3.0', 'version' => '3.0.3.0',
@ -277,32 +118,5 @@
'aliases' => array(), 'aliases' => array(),
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'symfony/polyfill-uuid' => array(
'pretty_version' => 'v1.37.0',
'version' => '1.37.0.0',
'reference' => '26dfec253c4cf3e51b541b52ddf7e42cb0908e94',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-uuid',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/uid' => array(
'pretty_version' => 'v7.4.9',
'version' => '7.4.9.0',
'reference' => '2676b524340abcfe4d6151ec698463cebafee439',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/uid',
'aliases' => array(),
'dev_requirement' => false,
),
'webmozart/assert' => array(
'pretty_version' => '2.4.1',
'version' => '2.4.1.0',
'reference' => '2ccb7c2e821038c03a3e6e1700c570c158c55f70',
'type' => 'library',
'install_path' => __DIR__ . '/../webmozart/assert',
'aliases' => array(),
'dev_requirement' => false,
),
), ),
); );

@ -1 +0,0 @@
Subproject commit d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca

1
vendor/mcp/sdk vendored

@ -1 +0,0 @@
Subproject commit 433c84b58af346dd32f15f9909679e96a46ebe23

@ -1 +0,0 @@
Subproject commit 8458763e0dd0b6baa310e04f1829fc73da4e8c8a

1
vendor/opis/string vendored

@ -1 +0,0 @@
Subproject commit 3e4d2aaff518ac518530b89bb26ed40f4503635e

1
vendor/opis/uri vendored

@ -1 +0,0 @@
Subproject commit 0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a

@ -1 +0,0 @@
Subproject commit 82fe4c73ef3363caed49ff8dd1539ba06044910d

@ -1 +0,0 @@
Subproject commit 1d01c49d4ed62f25aa84a747ad35d5a16924662b

@ -1 +0,0 @@
Subproject commit 7bae67520aa9f5ecc506d646810bd40d9da54582

@ -1 +0,0 @@
Subproject commit 327a05bbee54120d4786a0dc67aad30226ad4cf9

@ -1 +0,0 @@
Subproject commit a004701b11273a26cd7955a61d67a7f1e525a45a

1
vendor/psr/clock vendored

@ -1 +0,0 @@
Subproject commit e41a24703d4560fd0acb709162f73b8adfc3aa0d

@ -1 +0,0 @@
Subproject commit c71ecc56dfe541dbd90c5360474fbc405f8d5963

@ -1 +0,0 @@
Subproject commit dbefd12671e8a14ec7f180cab83036ed26714bb0

@ -1 +0,0 @@
Subproject commit 84c4fb66179be4caaf8e97bd239203245302e7d4

@ -1 +0,0 @@
Subproject commit c1481f747daaa6a0782775cd6a8c26a1bf4a3829

1
vendor/psr/log vendored

@ -1 +0,0 @@
Subproject commit f16e1d5863e37f8d8c2a01719f5b34baa2b714d3

@ -1 +0,0 @@
Subproject commit 26dfec253c4cf3e51b541b52ddf7e42cb0908e94

1
vendor/symfony/uid vendored

@ -1 +0,0 @@
Subproject commit 2676b524340abcfe4d6151ec698463cebafee439

@ -1 +0,0 @@
Subproject commit 2ccb7c2e821038c03a3e6e1700c570c158c55f70