@extends('layouts.app') @section('title', 'Import Dashboard · QA Dashboard') @section('content')

Import Dashboard

Upload each project's BA target sheet as CSV (in Google Sheets: File → Download → CSV). Its stories become that project's Quarter Targets: rows with a Jira key auto-link; keyless rows are title-matched for you to confirm. Every import shows you what it found first — nothing is saved until you confirm it.

@if (session('status'))
{{ session('status') }}
@endif @if ($errors->any())
{{ $errors->first() }}
@endif @foreach ($projects as $name => $p)

{{ $name }} @if ($p['total']){{ $p['total'] }} stories imported@endif

@csrf
Quarter
CSV file
@if ($p['quarters']) @endif
or add a single Jira story by link
@csrf
Quarter
Jira link or key

Adds one Jira issue as a confirmed target without replacing the existing list — for when the BA target sheet isn't ready yet. The issue must already be in the synced Jira cache.

@if ($name === 'SMPP')
or generate from an Epic Link
@csrf
Quarter
Epic Link

Lists all issues whose Epic Link is that epic (Stories, Tasks or Sub-tasks) as targets, with the epic as their parent; each item's linked Bugs, Sub-tasks and Tasks appear under it on the Status page.

@endif @if (!empty($p['by_quarter']))
Imported quarters
@foreach ($p['by_quarter'] as $q => $c)
{{ $q }} · {{ $c }} stories Open
@csrf
@endforeach
@endif
@endforeach

Expected columns: a story/title column (e.g. Story, Title, Target story) and, where available, a Jira key column (Jira, Key, Issue). Re-importing a quarter replaces its list and keeps your prior confirmed matches.

{{-- ── Import preview ─────────────────────────────────────────────────────────── Every import form is intercepted: it POSTs to its /preview-* endpoint first, which parses/fetches WITHOUT writing, and the result is listed here. Save submits the original form (the real import); Cancel closes and clears it. The styles and script are inline because this box needs no build step — Vite assets are prebuilt in public/build and Node isn't installed here. --}} @endsection