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

@@ -0,0 +1,52 @@
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use App\Framework\View\DomWrapper;
echo "=== Test DOM Iteration Issue ===\n\n";
//Test: Does replacing elements during iteration affect the result?
$html = '<html><body><x-a /><x-b /><x-c /></body></html>';
$dom = DomWrapper::fromString($html);
echo "Original HTML: " . $dom->document->saveHTML() . "\n\n";
// Find all x-* elements
$xComponents = [];
$allElements = $dom->document->getElementsByTagName('*');
foreach ($allElements as $element) {
if ($element instanceof \Dom\HTMLElement && str_starts_with(strtolower($element->tagName), 'x-')) {
$xComponents[] = $element;
echo "Found: {$element->tagName}\n";
}
}
echo "\nTotal found: " . count($xComponents) . "\n\n";
// Now replace them
echo "=== Replacing elements ===\n";
foreach ($xComponents as $i => $element) {
echo "Replacing element #{$i}: {$element->tagName}\n";
$replacement = '<div data-component="' . strtolower($element->tagName) . '">Replaced</div>';
try {
// Check if element still has a parent (might be removed if it was a child)
if ($element->parentNode === null) {
echo " → Element has no parent! Skipping.\n";
continue;
}
$dom->replaceElementWithHtml($element, $replacement);
echo " → Successfully replaced\n";
} catch (\Throwable $e) {
echo " → ERROR: " . $e->getMessage() . "\n";
}
}
echo "\n=== Final HTML ===\n";
echo $dom->document->saveHTML() . "\n";