feat(reports): complete reporting system with deviations, progress curves, multi-format export
- Added planned/actual/baseline dates to Phase and Feature models
- Created ProgressSnapshot model + migration for historical tracking
- Implemented CaptureDailyProgressSnapshot job (scheduled daily at 06:30)
- Added DeviationCalculator logic (SPI, planned progress, deviation days)
- ReportGenerator service with complete data aggregation
- ReportController with builder, preview, generate (HTML/Excel)
- ReportBuilder Livewire component with date range, entity selection, format
- ProjectReportExport with 10 sheets (Summary, Phases, Features, Inspections, Issues, Tasks, Deviations, Media, Progress Curve, Parameters)
- Blade partials for all sections (header, summary, phases, features, inspections, issues, tasks, media, deviations, progress curve)
- New routes: /projects/{project}/reports/*
- Added 'generate reports' permission
- All 101 tests passing
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
<div class="report-header">
|
||||
<div class="logo-placeholder">LOGO<br>EMPRESA</div>
|
||||
<div class="report-header-info">
|
||||
<div class="report-title">{{ $project->name }}</div>
|
||||
@if($project->address)
|
||||
<div class="report-subtitle">{{ $project->address }}</div>
|
||||
@endif
|
||||
<div class="report-subtitle" style="margin-top:8px;">
|
||||
@if($project->start_date)
|
||||
Inicio: <strong style="color:#1f2937">{{ $project->start_date->format('d/m/Y') }}</strong>
|
||||
@endif
|
||||
@if($project->end_date_estimated)
|
||||
• Fin estimado: <strong style="color:#1f2937">{{ $project->end_date_estimated->format('d/m/Y') }}</strong>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="report-meta">
|
||||
<strong>Informe de Proyecto</strong>
|
||||
Generado el {{ $filters['generated_at'] ?? now()->format('d/m/Y H:i') }}<br>
|
||||
Período: {{ $filters['getDateRangeLabel']() }}<br>
|
||||
Estado:
|
||||
<span class="badge {{ $project->status === 'completed' ? 'badge-success' : ($project->status === 'in_progress' ? 'badge-in_progress' : 'badge-planned') }}">
|
||||
{{ ucfirst(str_replace('_', ' ', $project->status ?? 'N/A')) }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user