feat(Production): Complete production deployment infrastructure

- Add comprehensive health check system with multiple endpoints
- Add Prometheus metrics endpoint
- Add production logging configurations (5 strategies)
- Add complete deployment documentation suite:
  * QUICKSTART.md - 30-minute deployment guide
  * DEPLOYMENT_CHECKLIST.md - Printable verification checklist
  * DEPLOYMENT_WORKFLOW.md - Complete deployment lifecycle
  * PRODUCTION_DEPLOYMENT.md - Comprehensive technical reference
  * production-logging.md - Logging configuration guide
  * ANSIBLE_DEPLOYMENT.md - Infrastructure as Code automation
  * README.md - Navigation hub
  * DEPLOYMENT_SUMMARY.md - Executive summary
- Add deployment scripts and automation
- Add DEPLOYMENT_PLAN.md - Concrete plan for immediate deployment
- Update README with production-ready features

All production infrastructure is now complete and ready for deployment.
This commit is contained in:
2025-10-25 19:18:37 +02:00
parent caa85db796
commit fc3d7e6357
83016 changed files with 378904 additions and 20919 deletions

View File

@@ -4,7 +4,6 @@ declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use App\Framework\Core\AppBootstrapper;
use App\Framework\Core\ContainerBootstrapper;
use App\Framework\Core\PathProvider;
use App\Framework\Mcp\McpServer;
@@ -32,7 +31,7 @@ try {
$listToolsRequest = json_encode([
'jsonrpc' => '2.0',
'method' => 'tools/list',
'id' => 1
'id' => 1,
]);
$response = $mcpServer->handleRequest($listToolsRequest);
@@ -40,12 +39,12 @@ try {
if (isset($result['result']['tools'])) {
$allTools = $result['result']['tools'];
$gitTools = array_filter($allTools, fn($tool) => str_starts_with($tool['name'], 'git_'));
$gitTools = array_filter($allTools, fn ($tool) => str_starts_with($tool['name'], 'git_'));
echo "Total tools: " . count($allTools) . "\n";
echo "Git tools: " . count($gitTools) . "\n\n";
if (!empty($gitTools)) {
if (! empty($gitTools)) {
echo "Available Git Tools:\n";
foreach ($gitTools as $tool) {
echo " - {$tool['name']}: {$tool['description']}\n";
@@ -69,9 +68,9 @@ try {
'method' => 'tools/call',
'params' => [
'name' => 'git_status',
'arguments' => []
'arguments' => [],
],
'id' => 2
'id' => 2,
]);
$response = $mcpServer->handleRequest($gitStatusRequest);
@@ -90,7 +89,7 @@ try {
echo " Untracked: {$statusData['summary']['untracked_count']}\n";
echo " Clean: " . ($statusData['clean'] ? 'Yes' : 'No') . "\n";
if (!empty($statusData['staged'])) {
if (! empty($statusData['staged'])) {
echo "\n Staged files:\n";
foreach ($statusData['staged'] as $file) {
echo " - {$file['file']} ({$file['status']})\n";
@@ -118,9 +117,9 @@ try {
'method' => 'tools/call',
'params' => [
'name' => 'git_branch_info',
'arguments' => []
'arguments' => [],
],
'id' => 3
'id' => 3,
]);
$response = $mcpServer->handleRequest($branchInfoRequest);
@@ -133,7 +132,7 @@ try {
echo "Local branches: {$branchData['total_local']}\n";
echo "Remote branches: {$branchData['total_remote']}\n";
if (!empty($branchData['local_branches'])) {
if (! empty($branchData['local_branches'])) {
echo "\nLocal branches:\n";
foreach ($branchData['local_branches'] as $branch) {
$marker = $branch === $branchData['current_branch'] ? '* ' : ' ';
@@ -157,10 +156,10 @@ try {
'params' => [
'name' => 'git_log',
'arguments' => [
'limit' => 5
]
'limit' => 5,
],
],
'id' => 4
'id' => 4,
]);
$response = $mcpServer->handleRequest($logRequest);
@@ -169,7 +168,7 @@ try {
if (isset($result['result']['content'][0]['text'])) {
$logData = json_decode($result['result']['content'][0]['text'], true);
if (!empty($logData['commits'])) {
if (! empty($logData['commits'])) {
echo "Recent commits:\n";
foreach ($logData['commits'] as $commit) {
echo "\n {$commit['short_hash']} - {$commit['message']}\n";
@@ -193,9 +192,9 @@ try {
'method' => 'tools/call',
'params' => [
'name' => 'git_generate_commit_message',
'arguments' => []
'arguments' => [],
],
'id' => 5
'id' => 5,
]);
$response = $mcpServer->handleRequest($generateMsgRequest);