@extends('layouts.app') @section('title', $ticket->reference) @section('wrap-class', 'wrap--wide') @section('nav') ← Alle Meldungen Fehlerkonten
@csrf
@endsection @php $badge = ['new'=>'new','confirmed'=>'accepted','in_progress'=>'progress','waiting_customer'=>'waiting','fixed'=>'done','declined'=>'declined','duplicate'=>'muted']; $campaign = config('bugportal.campaign'); @endphp @section('content') @if (session('status'))
{{ session('status') }}
@endif @if (session('warning'))
{{ session('warning') }}
@endif @if ($errors->any())
@endif

{{ $ticket->title }}

{{ $ticket->typeLabel() }} @if ($ticket->categoryLabel()){{ $ticket->categoryLabel() }}@endif {{ $ticket->statusLabel() }}  {{ $ticket->reference }} · eingegangen {{ optional($ticket->reported_at)->format('d.m.Y H:i') }} Uhr

@if ($ticket->isSecurity())
Sicherheitsmeldung – vertraulich behandeln. Nicht veröffentlichen, bevor die Lücke geschlossen ist. Danach nur ohne technische Details listen.
@endif @if ($ticket->status === 'new') @php $due = $ticket->responseDueAt(); @endphp
@if ($ticket->isResponseOverdue()) Die zugesagte Frist ist überschritten. Rückmeldung war bis {{ optional($due)->format('d.m.Y') }} versprochen. @else Rückmeldung zugesagt bis {{ optional($due)->format('d.m.Y') }} ({{ $campaign['response_workdays'] }} Werktage ab Eingang). @endif
@endif @if ($possibleDuplicates->isNotEmpty())

Könnte schon gemeldet sein

Ähnliche Meldungen, die bereits gelistet sind. Erstmelder gewinnt.

@endif @if ($ticket->duplicateOf)
Zusammengeführt mit {{ $ticket->duplicateOf->reference }} — die Gutschrift gehört dorthin.
@endif @if ($ticket->duplicates->isNotEmpty())
{{ $ticket->duplicates->count() }} weitere Meldung(en) zu derselben Sache: @foreach ($ticket->duplicates as $dupe) {{ $dupe->reference }}@if (! $loop->last), @endif @endforeach
@endif
{{-- Triage --}} @if (! $ticket->isConfirmed() && ! in_array($ticket->status, ['declined', 'duplicate'], true))

Prüfen

Erst die Bestätigung schreibt {{ $campaign['percent_per_bug'] }} % gut. Jede Ablehnung braucht eine Begründung – der Melder bekommt sie zu lesen.

@csrf

Als Fehler bestätigen

@if ($ticket->type === 'bug' && ! $ticket->category)
@endif @if ($ticket->type === 'feature')

Wünsche sind nicht rabattfähig – es wird nichts gebucht.

@endif
@csrf

Ablehnen

@csrf

Als Dublette zusammenführen

Die Gutschrift bleibt bei der zeitlich ersten Meldung.

@endif

Beschreibung

Wortlaut des Melders.

{{ $ticket->description }}
@if ($ticket->steps)
{{ $ticket->steps }}
@endif @if ($ticket->attachments->isNotEmpty())
    @foreach ($ticket->attachments as $file)
  • {{ $file->isImage() ? '🖼' : '📄' }} {{ $file->original_name }} – {{ $file->humanSize() }}, {{ $file->mime_type }}
  • @endforeach
@endif

Verlauf

Gelb hinterlegt = interne Notiz, für den Melder nicht sichtbar.

@if ($ticket->comments->isEmpty())

Noch keine Einträge.

@else
    @foreach ($ticket->comments as $comment)
  • {{ $comment->author_name }}{{ $comment->isFromTeam() ? ' (Team)' : ' (Melder)' }} {{ $comment->is_public ? 'Für Melder sichtbar' : 'Intern' }} · {{ $comment->created_at->format('d.m.Y H:i') }}
    {{ $comment->body }}
  • @endforeach
@endif
@csrf

Bearbeiten

@csrf @method('PATCH')
@if ($ticket->credit)

Gutschrift

  • Gebucht {{ $ticket->credit->percent }} %
  • Fehlerkonto {{ $ticket->credit->account->email }}
  • Stand {{ $ticket->credit->isRedeemed() ? 'eingelöst · '.$ticket->credit->voucher_code : 'offen' }}
@endif

Melder

  • Name {{ $ticket->reporter_name }}
  • E-Mail {{ $ticket->reporter_email }}
  • Kundennummer {{ $ticket->customer_number ?: '—' }}
  • Bestellnummer {{ $ticket->order_number ?: '—' }}
  • Nennung erlaubt {{ $ticket->publish_consent ? $ticket->creditLine() : 'nein' }}

Technische Angaben

  • Auswirkung {{ $ticket->impactLabel() }}
  • Seite @if ($ticket->page_url) {{ Str::limit($ticket->page_url, 40) }} @else — @endif
  • Gerät / Browser {{ $ticket->environment ?: '—' }}
  • Kanal {{ $ticket->channel }}
  • Kampagne {{ $ticket->utm_campaign ?: '—' }}
  • IP {{ $ticket->ip_address ?: '—' }}
  • User-Agent {{ Str::limit($ticket->user_agent, 90) ?: '—' }}
  • @if ($ticket->closed_at)
  • Abgeschlossen {{ $ticket->closed_at->format('d.m.Y H:i') }}
  • @endif

Melderansicht

Diesen Link hat der Melder per E-Mail erhalten.

{{ $ticket->statusUrl() }}

@endsection