- 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.
16 KiB
Console Template System & ConsoleResponse - Implementation Plan
📋 Übersicht
Implementierung eines Template-Systems für Console-Ausgaben mit ConsoleResponse Value Objects, das nahtlos mit dem bestehenden attribute-basierten Command-System arbeitet.
🎯 Phase 1: ConsoleResponse Foundation (Woche 1)
1.1 Core Interfaces & Base Classes
Ziel: Framework-compliant Response-Architektur
Tasks:
-
ConsoleResponseInterface erstellengetExitCode(): ExitCoderender(ConsoleOutputInterface $output): voidgetData(): array
-
AbstractConsoleResponseBase Class- Readonly class mit gemeinsamer Logik
- Constructor mit ExitCode und Data
- Gemeinsame Methoden-Implementierung
Files:
src/Framework/Console/Response/ConsoleResponse.phpsrc/Framework/Console/Response/AbstractConsoleResponse.php
1.2 Response Type Implementations
Ziel: 6 konkrete Response-Typen für verschiedene Use Cases
Tasks:
-
ConsoleTextResponse- Simple Text-Ausgabe- Factory Methods:
success(),error(),warning(),info() - Support für ConsoleStyle
- Readonly Value Object
- Factory Methods:
-
ConsoleTableResponse- Table-basierte Ausgabe- Wiederverwendung der bestehenden
TableKlasse - Optional: Title Support
- Headers und Rows als Constructor-Parameter
- Wiederverwendung der bestehenden
-
ConsoleTemplateResponse- Template-basierte Ausgabe- Template Name + Data
- Integration mit ConsoleTemplateEngine (Phase 2)
- Lazy Loading von Template
-
ConsoleLayoutResponse- Component-basierte Ausgabe- ConsoleLayout als Parameter
- Wiederverwendung von Layout-System
- Multi-Component Rendering
-
ConsoleMenuResponse- Interactive Menu- Wiederverwendung von
InteractiveMenu - Items, Title, Interactive-Flag
- Selected Value in Data speichern
- Wiederverwendung von
-
ConsoleCompositeResponse- Mehrere Responses kombinieren- Array von ConsoleResponse
- Sequential Rendering
- Exit Code Aggregation (schlechtester gewinnt)
Files:
src/Framework/Console/Response/ConsoleTextResponse.phpsrc/Framework/Console/Response/ConsoleTableResponse.phpsrc/Framework/Console/Response/ConsoleTemplateResponse.phpsrc/Framework/Console/Response/ConsoleLayoutResponse.phpsrc/Framework/Console/Response/ConsoleMenuResponse.phpsrc/Framework/Console/Response/ConsoleCompositeResponse.php
1.3 Response Builder (Fluent API)
Ziel: Einfache Erstellung komplexer Responses
Tasks:
ConsoleResponseBuilderimplementierenaddText(string, ?ConsoleStyle): selfaddTable(array, array, ?string): selfaddTemplate(string, array): selfaddDivider(): selfaddNewLine(int): selfwithExitCode(ExitCode): selfwithData(array): selfbuild(): ConsoleResponse
Features:
- Fluent Interface
- Auto-Composite wenn mehrere Sections
- Single Response wenn nur eine Section
Files:
src/Framework/Console/Response/ConsoleResponseBuilder.php
1.4 Console Application Integration
Ziel: Support für ExitCode UND ConsoleResponse Return-Typen
Tasks:
-
ConsoleApplicationerweitern für beide Return-Typen- Pattern Matching für
ExitCode|ConsoleResponse|int handleResponse(ConsoleResponse): intMethode- Backward Compatibility sicherstellen
- Pattern Matching für
-
Method Signature Patterns dokumentieren
- Pattern A:
ConsoleResponseonly (Recommended) - Pattern B:
ExitCodeonly (Legacy) - Pattern C: Both (Transition)
- Pattern D: Union Type (Flexible)
- Pattern A:
Files:
src/Framework/Console/ConsoleApplication.php(Update)
1.5 Tests Phase 1
Ziel: ≥80% Test Coverage für Response-System
Tasks:
-
Unit Tests für alle Response-Typen
- Constructor-Validierung
- Rendering-Logik
- Factory Methods
- getData() und getExitCode()
-
Integration Tests
- ConsoleApplication mit verschiedenen Return-Typen
- ConsoleResponseBuilder Workflows
- Composite Response mit mehreren Sections
-
Example Commands
- Beispiel für jede Response-Type
- Migration-Guide-Examples
Files:
tests/Unit/Console/Response/*Test.phptests/Feature/Console/ResponseIntegrationTest.php
Deliverables Phase 1:
- ✅ ConsoleResponse Interface & 6 Typen
- ✅ ConsoleResponseBuilder Fluent API
- ✅ Backward-Compatible Console Application
- ✅ Comprehensive Test Suite
- ✅ Documentation & Examples
🎨 Phase 2: Console Template System (Woche 2)
2.1 String-Based Template Processors
Ziel: Template-Verarbeitung ähnlich wie HTML-Template-System
Tasks:
-
ConsoleTemplateProcessorInterfaceprocess(string $template, array $data): string- String-basiert (nicht DOM!)
-
ConsolePlaceholderProcessor{{ variable }}- Escaped Output{{{ raw }}}- Raw Output (für ANSI codes){{ object.property }}- Dot-Notation{{ function() }}- Function Calls- Ähnlich wie
PlaceholderReplaceraus View-System
-
ConsoleForProcessor<for items="..." as="...">Syntax- String-basiertes Loop-Processing
- Nested Loop Support
- Dot-Notation für Items-Path
-
ConsoleIfProcessor(Optional)<if condition="...">Syntax- Simple Conditional Logic
<else>Support
Files:
src/Framework/Console/Template/ConsoleTemplateProcessor.phpsrc/Framework/Console/Template/Processors/ConsolePlaceholderProcessor.phpsrc/Framework/Console/Template/Processors/ConsoleForProcessor.phpsrc/Framework/Console/Template/Processors/ConsoleIfProcessor.php
2.2 Template Engine & Loader
Ziel: Unified Template Processing Pipeline
Tasks:
-
ConsoleTemplateEngineimplementieren- Processor Pipeline (ähnlich wie View\Engine)
- Sequential Processing
- Processor Registry
- Error Handling
-
ConsoleTemplateLoader- Template-Files laden aus
/templates/console/ - File Extension:
.console.txtoder.console.tpl - Template Caching (optional)
- Template Not Found Exception
- Template-Files laden aus
-
Template Syntax Documentation
- Placeholder Syntax
- Component Tags
- Loop Syntax
- Examples
Files:
src/Framework/Console/Template/ConsoleTemplateEngine.phpsrc/Framework/Console/Template/Loading/ConsoleTemplateLoader.phpdocs/console-template-syntax.md
2.3 Console Component Tags
Ziel: <console:table>, <console:box> etc. in Templates
Tasks:
-
ConsoleComponentTagProcessorimplementieren- Parse
<console:*>Tags - Extract Attributes
- Extract Content
- Render via Component Registry
- Parse
-
ConsoleComponentRegistry- Registry für Component-Mapping
table→ TableAdapterbox→ TextBoxAdaptermenu→ MenuAdapterprogress→ ProgressBarAdapter
-
Console Component Adapters (Template-friendly)
ConsoleTableComponentConsoleBoxComponentConsoleMenuComponentConsoleProgressComponent
Features:
- Template Tag:
<console:table headers="A,B,C">...</console:table> - Nested Content Processing (für Loops in Attributen)
- Attribute Parsing
Files:
src/Framework/Console/Template/Processors/ConsoleComponentTagProcessor.phpsrc/Framework/Console/Template/Components/ConsoleComponentRegistry.phpsrc/Framework/Console/Template/Components/ConsoleTableComponent.phpsrc/Framework/Console/Template/Components/ConsoleBoxComponent.php
2.4 Template Response Integration
Ziel: ConsoleTemplateResponse nutzt Template-System
Tasks:
-
ConsoleTemplateResponsefinalisieren- Integration mit ConsoleTemplateEngine
- Template Loading
- Data Binding
- Error Handling
-
Template Examples erstellen
migration-status.console.txtuser-list.console.txthealth-check.console.txtsystem-status.console.txt
Files:
templates/console/migration-status.console.txttemplates/console/user-list.console.txttemplates/console/health-check.console.txt
2.5 Tests Phase 2
Ziel: Template-System vollständig getestet
Tasks:
-
Processor Tests
- PlaceholderProcessor mit verschiedenen Syntaxen
- ForProcessor mit Nested Loops
- ComponentTagProcessor mit allen Tags
-
Integration Tests
- ConsoleTemplateEngine mit kompletten Templates
- ConsoleTemplateResponse Rendering
- Error Cases (Template Not Found, Parse Errors)
-
Template Examples Tests
- Alle Template-Files rendern korrekt
- Data-Binding funktioniert
- Component Tags werden ersetzt
Files:
tests/Unit/Console/Template/*Test.phptests/Feature/Console/TemplateRenderingTest.php
Deliverables Phase 2:
- ✅ String-based Template Processing System
- ✅ ConsoleTemplateEngine mit Processor Pipeline
- ✅ Console Component Tags Support
- ✅ Template Loader mit Caching
- ✅ Template Examples & Documentation
- ✅ Comprehensive Tests
🏗️ Phase 3: Component-Based Layout System (Woche 3) - OPTIONAL
3.1 ConsoleComponent Interface & Adapters
Ziel: Unified Interface für bestehende Console-Components
Tasks:
-
ConsoleComponentInterfacerender(ConsoleOutputInterface $output): void- Standard-Interface für alle Components
-
Adapters für bestehende Components
TableAdapter- Wrapper für mutableTableTextBoxAdapter- Wrapper für readonlyTextBoxMenuAdapter- Wrapper fürInteractiveMenuProgressBarAdapter- Wrapper fürProgressBarSpinnerAdapter- Wrapper fürSpinner
Benefits:
- Readonly Adapters trotz mutable Original-Components
- Unified Interface für Layout-System
- Backward-Compatible
Files:
src/Framework/Console/Components/ConsoleComponent.phpsrc/Framework/Console/Components/Adapters/TableAdapter.phpsrc/Framework/Console/Components/Adapters/TextBoxAdapter.phpsrc/Framework/Console/Components/Adapters/MenuAdapter.phpsrc/Framework/Console/Components/Adapters/ProgressBarAdapter.phpsrc/Framework/Console/Components/Adapters/SpinnerAdapter.php
3.2 Layout & Section Value Objects
Ziel: Komposition von Components zu Layouts
Tasks:
-
ConsoleLayoutValue Object- Array von ConsoleSections
- Sequential Rendering
- Readonly Class
-
ConsoleSectionValue Object- ConsoleComponent + Style
- Margins, Padding, Borders
- Readonly Class
-
ConsoleSectionStyleValue Object- Margins (top, bottom)
- Padding
- Borders (top, bottom, divider)
- Background Colors (optional)
Files:
src/Framework/Console/Layout/ConsoleLayout.phpsrc/Framework/Console/Layout/ConsoleSection.phpsrc/Framework/Console/Layout/ConsoleSectionStyle.php
3.3 Layout Builder (Fluent API)
Ziel: Einfache Layout-Erstellung
Tasks:
ConsoleLayoutBuilderaddSection(ConsoleComponent): selfaddTable(array, array): selfaddBox(string, ?string): selfaddDivider(): selfaddSpacing(int): selfbuild(): ConsoleLayout
Files:
src/Framework/Console/Layout/ConsoleLayoutBuilder.php
3.4 Tests Phase 3
Tasks:
- Component Adapter Tests
- Layout Composition Tests
- Builder Tests
- Integration Tests
Deliverables Phase 3:
- ✅ ConsoleComponent Interface & 5 Adapters
- ✅ ConsoleLayout System
- ✅ ConsoleLayoutBuilder Fluent API
- ✅ Tests & Documentation
📚 Documentation & Examples
Documentation Tasks
-
Console Response Guide
- Alle Response-Typen mit Beispielen
- Migration Guide (ExitCode → ConsoleResponse)
- Best Practices
-
Console Template Guide
- Template Syntax Reference
- Component Tags Reference
- Template Examples
-
Console Layout Guide
- Component-Based Layouts
- Builder Pattern Examples
- Advanced Compositions
Example Commands
-
Simple Response Examples
- TextResponse in verschiedenen Commands
- TableResponse für Listen
- TemplateResponse für komplexe Ausgaben
-
Template Examples
- Migration Status Template
- User List Template
- Health Check Template
- System Status Template
-
Layout Examples
- Dashboard Layout
- Report Layout
- Multi-Section Layout
Files:
docs/console/console-response-guide.mddocs/console/console-template-guide.mddocs/console/console-layout-guide.mdsrc/Framework/Console/Examples/*(Update)
🧪 Testing Strategy
Unit Tests
- Alle Response-Typen
- Alle Processors
- Alle Adapters
- Builder Classes
Integration Tests
- ConsoleApplication mit verschiedenen Return-Typen
- Template Rendering End-to-End
- Layout Composition
- Backward Compatibility
Example Tests
- Alle Example-Commands ausführbar
- Template-Examples rendern korrekt
- Layout-Examples funktionieren
Coverage Goal: ≥80%
🚀 Migration Strategy
Backward Compatibility
- ✅ Alle bestehenden Commands funktionieren unverändert
- ✅ ExitCode Return-Type weiterhin supported
- ✅ Direktes Output-Schreiben weiterhin möglich
Gradual Adoption
- Phase 1: ConsoleResponse verfügbar, optional nutzbar
- Phase 2: Template-System verfügbar, Commands können migrieren
- Phase 3: Layout-System verfügbar für komplexe Use Cases
Migration Patterns
// Old: ExitCode + Direct Output
#[ConsoleCommand(name: 'old')]
public function old(ConsoleInput $input, ConsoleOutput $output): ExitCode
{
$output->writeLine("Done");
return ExitCode::SUCCESS;
}
// New: ConsoleResponse
#[ConsoleCommand(name: 'new')]
public function new(ConsoleInput $input): ConsoleResponse
{
return ConsoleTextResponse::success("Done");
}
// Transition: Both
#[ConsoleCommand(name: 'transition')]
public function transition(ConsoleInput $input, ConsoleOutput $output): ConsoleResponse
{
$output->writeLine("Processing..."); // Progress output
return ConsoleTextResponse::success("Done"); // Final result
}
✅ Success Criteria
Phase 1 Complete When:
- All 6 Response-Typen implementiert und getestet
- ConsoleResponseBuilder funktional
- ConsoleApplication unterstützt beide Return-Typen
- ≥80% Test Coverage
- Documentation vollständig
Phase 2 Complete When:
- Template-System funktional (Placeholder, For, Component Tags)
- ConsoleTemplateResponse integriert
- Template-Examples funktionieren
- ≥80% Test Coverage
- Documentation vollständig
Phase 3 Complete When:
- Component Adapters funktional
- Layout-System implementiert
- Builder Pattern verfügbar
- ≥80% Test Coverage
- Documentation vollständig
🎯 Quick Start (Phase 1 only - Minimum Viable)
Minimal Implementation für sofortige Nutzbarkeit:
- ConsoleResponse Interface
- ConsoleTextResponse (mit Factory Methods)
- ConsoleTableResponse
- ConsoleCompositeResponse
- ConsoleResponseBuilder
- ConsoleApplication Update
Result: Commands können sofort ConsoleResponse nutzen ohne Template-System!
📊 Timeline Estimate
- Phase 1: 1 Woche (Foundation - ESSENTIAL)
- Phase 2: 1 Woche (Template System - RECOMMENDED)
- Phase 3: 1 Woche (Layout System - OPTIONAL)
Minimum Viable: Phase 1 only (1 Woche) Recommended: Phase 1 + 2 (2 Wochen) Complete: Phase 1 + 2 + 3 (3 Wochen)
🔗 Related Systems
Integration Points
- Console Module: Bestehende Components (Table, TextBox, Menu, etc.)
- View System: Template-Processor-Pattern wiederverwenden
- HTTP System: Response-Pattern analog zu JsonResponse, ViewResult
- Testing: Pest Framework für alle Tests
Dependencies
- Bestehende Console Components (keine Änderungen)
- ConsoleOutput Interface (keine Änderungen)
- ExitCode Enum (keine Änderungen)
- ConsoleStyle, ConsoleColor (keine Änderungen)
📝 Notes & Decisions
Design Decisions
- String-based Templates (nicht DOM) - Einfacher für Console-Output
- Method-based Commands - Kompatibel mit
#[ConsoleCommand]Attribute - Backward Compatible - Beide Return-Typen (ExitCode | ConsoleResponse)
- Adapter Pattern - Wrapper für bestehende mutable Components
- Composition - Layout aus Components komponieren, nicht erben
Open Questions
- Template-Caching Strategy?
- Performance-Optimierung für große Outputs?
- ANSI-Code-Handling in Templates?
- Interactive Components in Templates?
Future Enhancements
- Progress Bars in Templates
- Animated Spinners in Templates
- Color Themes für Templates
- Template Inheritance/Extends
- Custom Template Functions