NetGescon - Modifiche e Aggiornamenti
Versione corrente: {{ $this->currentVersion }} fonte {{ $this->versionSource }}
Legenda rapida
U utenti finali P assistenza/sviluppo E non bloccante E! bloccante
@if($this->activeTab === 'manuale')
Manuale operativo integrato nel progetto
Questa sezione diventa il punto di continuita tra sviluppo, Git e aggiornamenti applicativi. I contenuti sotto arrivano da file Markdown versionati nel repository, quindi restano leggibili sia dalla UI sia durante le prossime sessioni di sviluppo con agent e strumenti locali.
Ricarica manuale e dati pagina Vai a Commit + Note Vai a Aggiornamenti + Bug Lancia aggiornamento
Flusso minimo dopo ogni Git
  1. aggiorna il documento della sezione corretta nel repository
  2. salva una nota operativa sul commit se serve contesto extra
  3. spingi il codice su Gitea
  4. usa il pulsante di sync da Gitea da questa pagina per allineare staging
  5. se c e un problema applicativo, registralo o segnalo come risolto nel tab BUG
Snapshot continuita sviluppo
Riepilogo automatico per ripartire senza ricostruire ogni volta ragionamenti, file chiave, stato PBX e punti ancora aperti.
{{ $this->developmentSnapshotPath ?? '-' }}
Rigenera snapshot sviluppo
Generata il: {{ $this->developmentSnapshotGeneratedAt ?? '-' }}
{!! $this->developmentSnapshotHtml !!}
@foreach($this->manualSections as $section)
{{ $section['title'] }}
{{ $section['description'] }}
{{ $section['path'] }}
@if(! $section['exists'])
Documento non ancora presente nel repository. La sezione e predisposta per essere popolata progressivamente.
@endif
{!! $section['html'] !!}
@endforeach @endif @if($this->activeTab === 'errori')
Uso corretto di questa sezione
Per il nodo staging, il percorso operativo principale e la sync Git da Gitea disponibile in questa tab. I pulsanti piu sotto servono invece al canale distribution, che al momento non e ancora il flusso update attivo principale e puo restituire errore manifest 404.
Cosa aggiorna il flusso Git di staging
Il pulsante Aggiorna staging da Gitea lancia il comando applicativo netgescon:git-sync. Il nodo si riallinea dal repository Git pubblicato su Gitea, rigenera il changelog automatico e aggiorna questa pagina senza usare deploy manuali fuori Git.
  1. fetch e allineamento del branch richiesto da Gitea
  2. aggiornamento del codice sul nodo staging
  3. rigenerazione changelog Git per Supporto > Modifiche
  4. salvataggio esito, log e diagnostica del job
Aggiornamenti inclusi nel riallineamento Git
Ultimi commit
    @forelse(array_slice($this->latestCommits, 0, 5) as $commit)
  • {{ $commit['short_hash'] }} {{ $commit['message'] }}
  • @empty
  • Nessun commit disponibile.
  • @endforelse
Migliorie/fix rilevati
    @forelse(array_slice($this->functionalHighlights, 0, 6) as $item)
  • {{ $item }}
  • @empty
  • Nessuna miglioria estratta automaticamente.
  • @endforelse
Aggiornamento staging da Gitea
Questo e il flusso principale da usare sui nodi interni: pull da Gitea, rigenerazione changelog Git per la pagina supporto e pulizia cache applicativa. Non richiede terminale.
Comando predisposto usato dalla UI: php artisan netgescon:git-sync --remote={{ $this->gitRemote }} --branch={{ $this->gitBranch }}
Aggiorna staging da Gitea Aggiorna avanzamento Git Rileggi stato Git
@if($this->gitSyncInProgress)
@else
@endif
Avanzamento sync Git {{ (int) $this->gitSyncProgressPercent }}%
{{ $this->gitSyncProgressMessage }}
Job: {{ $this->gitSyncJobId ?? '-' }} · Stato: {{ $this->gitSyncProgressStatus }} @if($this->gitSyncInProgress) · in esecuzione @endif
Stato repository nodo
Branch locale: {{ $this->gitCurrentBranch ?? '-' }}
Commit locale: {{ $this->gitCurrentCommit ?? '-' }}
Commit remoto: {{ $this->gitRemoteCommit ?? '-' }}
Stato tracking: {{ $this->gitAheadBehind }}
Working tree: {{ $this->gitWorkingTreeDirty ? 'sporco' : 'pulito' }}
Ultima sync Git: {{ $this->lastGitSyncAt ?? '-' }}
Rigenerazione changelog locale: {{ $this->lastGitDocsSyncAt ?? '-' }}
Esito ultima sync Git
Comando: netgescon:git-sync
Exit code: @if($this->lastGitSyncExitCode === null) - @elseif($this->lastGitSyncExitCode === 0) 0 OK @else {{ $this->lastGitSyncExitCode }} ERRORE @endif
@if(filled($this->lastGitSyncIssue))
{{ $this->lastGitSyncIssue }}
@endif
@if(filled($this->lastGitSyncOutput))
Output tecnico sync Git
{{ $this->lastGitSyncOutput }}
@endif
Aggiornamento da server distribution
Usare questi pulsanti solo quando il server updates.netgescon.it espone correttamente il manifest update. Per staging standard usare il flusso Git/Gitea mostrato sopra in questa stessa tab.
Lancia aggiornamento Lancia aggiornamento (riserva) Check connettivita update Aggiorna dati pagina Pulisci cache remoto Ricompila view remoto Aggiorna avanzamento
@if($this->updateInProgress)
@else
@endif
Avanzamento aggiornamento {{ (int) $this->updateProgressPercent }}%
{{ $this->updateProgressMessage }}
Job: {{ $this->updateJobId ?? '-' }} · Stato: {{ $this->updateProgressStatus }} @if($this->updateInProgress) · in esecuzione @endif
@if(! $this->canRunUpdate())
Permesso update non disponibile per il tuo ruolo.
@endif
Esito ultimo update
Ultima esecuzione: {{ $this->lastUpdateAt ?? '-' }}
Exit code: @if($this->lastUpdateExitCode === null) - @elseif($this->lastUpdateExitCode === 0) 0 OK @else {{ $this->lastUpdateExitCode }} ERRORE @endif
@if(filled($this->lastPlannedUpdateSummary))
Piano usato: {{ $this->lastPlannedUpdateSummary }}
@endif
Ultimo backup pronto per update
@if($this->latestBackupSummary)
Snapshot: {{ $this->latestBackupSummary['snapshot_id'] }}
Creato: {{ $this->latestBackupSummary['created_at'] }}
Copia locale: {{ $this->latestBackupSummary['zip_exists'] ? 'OK' : 'mancante' }}
ZIP: {{ $this->latestBackupSummary['zip_path'] ?: '-' }}
Dimensione: {{ $this->latestBackupSummary['zip_size_mb'] !== null ? number_format((float) $this->latestBackupSummary['zip_size_mb'], 2, ',', '.') . ' MB' : '-' }}
File copiati: {{ (int) $this->latestBackupSummary['copied_files'] }} · Tabelle indicizzate: {{ (int) $this->latestBackupSummary['tables_count'] }}
Copia Google Drive: @if(is_array($this->latestBackupSummary['drive'] ?? null)) OK @if(!empty($this->latestBackupSummary['drive']['webViewLink'])) Apri su Drive @endif @else non disponibile @endif
@else
Nessun backup pre-update registrato.
@endif
Anteprima pacchetto in arrivo
@if($this->lastManifestPreview)
Versione remota: {{ $this->lastManifestPreview['version'] }}
Migration richieste: {{ $this->lastManifestPreview['migrate_required'] ? 'si' : 'no' }}
Pacchetto: {{ $this->lastManifestPreview['package_url'] }}
SHA256: {{ $this->lastManifestPreview['sha256'] }}
@if(filled($this->lastManifestPreview['release_notes'] ?? null))
{{ $this->lastManifestPreview['release_notes'] }}
@endif @if(!empty($this->lastManifestPreview['security']))
Aggiornamenti sicurezza: {{ is_array($this->lastManifestPreview['security']) ? json_encode($this->lastManifestPreview['security'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) : $this->lastManifestPreview['security'] }}
@endif
@else
Esegui “Check connettivita update” per leggere manifest e contenuto dell aggiornamento prima del lancio.
@endif
Aggiornamenti pianificati (prima del lancio)
    @foreach($this->updatePlannedSteps as $step)
  • {{ $step }}
  • @endforeach
Ripristino differenziale disponibile
Ripristino singola scrittura:
php artisan netgescon:restore-record <tabella> <pk> --apply
Preview senza scrivere:
php artisan netgescon:restore-record <tabella> <pk>
@if(filled($this->lastUpdateOutput))
Output tecnico
{{ $this->lastUpdateOutput }}
@endif @if(filled($this->lastUpdateIssue))
Diagnostica automatica ultimo errore
{{ $this->lastUpdateIssue }}
@endif @if(filled($this->lastConnectivityCheckOutput))
Output check connettivita endpoint update
{{ $this->lastConnectivityCheckOutput }}
@endif
Errori runtime, supporto e pregressi (laravel.log)
Raccolta unificata da: runtime-errors.ndjson, support-events.ndjson, laravel.log, docs/support/online-runtime-errors.ndjson (feed Git da online).
Aperti: {{ (int) $this->openBugCount }} Risolti: {{ (int) $this->resolvedBugCount }} Filtro:
Aggiungi BUG manuale
Crea BUG manuale
Nota risoluzione BUG
BUG selezionato: {{ $this->selectedBugFingerprint ? 'selezionato' : 'nessuno' }}
Salva nota risoluzione
@forelse($this->runtimeErrors as $row) @empty @endforelse
BUG # Stato Timestamp Origine Tipo Occorrenze Messaggio Contesto Nota risoluzione Azioni
{{ $row['bug_code'] }} @if(($row['bug_status'] ?? 'open') === 'resolved') risolto @else aperto @endif {{ $row['timestamp'] }} {{ $row['source'] ?? '-' }} {{ $row['type'] }} {{ (int) ($row['occurrences'] ?? 1) }} {{ $row['message'] }}
{{ $row['context'] !== '' ? \Illuminate\Support\Str::limit($row['context'], 220) : '-' }}
{{ $row['resolution_note'] !== '' ? \Illuminate\Support\Str::limit($row['resolution_note'], 160) : '-' }}
@if(($row['bug_status'] ?? 'open') === 'resolved' && filled($row['resolved_at']))
risolto: {{ $row['resolved_at'] }}
@endif
Nota @if(($row['bug_status'] ?? 'open') === 'resolved') Riapri @else Segna risolto @endif
Nessun errore registrato negli ultimi eventi.
@endif @if($this->activeTab === 'commit')
Ultimi commit (descrizioni)
Aggiungi nota operativa a un commit
Salva nota commit
@forelse($this->latestCommits as $commit) @empty @endforelse
Data Commit Autore Descrizione Nota aggiuntiva
{{ $commit['date'] }} {{ $commit['short_hash'] }} {{ $commit['author'] }} {{ $commit['message'] }} @php $note = $this->getCommitNote($commit['hash']); @endphp
{{ $note !== '' ? $note : '-' }}
Nessun commit disponibile.
@endif @php $path = base_path('docs/NETGESCON-MODIFICHE.md'); $raw = file_exists($path) ? file_get_contents($path) : "# Modifiche\n\nFile non trovato: {$path}\n"; $gitGeneratedPath = storage_path('app/support/generated/NETGESCON-GIT-AUTOCHANGELOG.md'); $gitPath = file_exists($gitGeneratedPath) ? $gitGeneratedPath : base_path('docs/NETGESCON-GIT-AUTOCHANGELOG.md'); $gitRaw = file_exists($gitPath) ? file_get_contents($gitPath) : "# Git Auto Changelog\n\nFile non trovato: {$gitPath}\nEsegui: `bash scripts/ops/netgescon-sync-git-changelog.sh`\n"; $rawHtml = $this->renderSupportMarkdown($raw); $gitRawHtml = $this->renderSupportMarkdown($gitRaw); @endphp @if($this->activeTab === 'migliorie')
Pagine nuove o rese piu funzionali (ultimi commit)
@forelse($this->recentFilamentPages as $row) @empty @endforelse
Pagina Percorso Commit Descrizione
{{ $row['page'] }} {{ $row['path'] }} {{ $row['commit'] }} {{ $row['message'] }}
Nessuna pagina recente rilevata dai commit.
Migliorie e funzionalita aggiunte (estratte dal registro)
    @forelse($this->functionalHighlights as $item)
  • {{ $item }}
  • @empty
  • Nessuna miglioria rilevata automaticamente nel file modifiche.
  • @endforelse
Registro funzionale (manuale)
{!! $rawHtml !!}
Changelog automatico da script
{!! $gitRawHtml !!}
@endif