@extends('layouts.app') @section('title', '프로젝트 관리 대시보드') @section('content')

프로젝트 대시보드

+ 새 프로젝트

전체 프로젝트

{{ $summary['project_stats']['total'] }}

활성 {{ $summary['project_stats']['active'] }} 완료 {{ $summary['project_stats']['completed'] }} 보류 {{ $summary['project_stats']['on_hold'] }}

전체 작업

{{ $summary['task_stats']['total'] }}

@php $taskTotal = $summary['task_stats']['total'] ?: 1; $taskDone = $summary['task_stats']['done'] ?? 0; $taskInProgress = $summary['task_stats']['in_progress'] ?? 0; $donePercent = round(($taskDone / $taskTotal) * 100); $inProgressPercent = round((($taskDone + $taskInProgress) / $taskTotal) * 100); @endphp
진행률 {{ $inProgressPercent }}% (완료 {{ $donePercent }}% + 진행 {{ $inProgressPercent - $donePercent }}%)

마감 임박

{{ $summary['task_stats']['due_soon'] }}

지연됨: {{ $summary['task_stats']['overdue'] }}개

열린 이슈

{{ $summary['issue_stats']['open'] + $summary['issue_stats']['in_progress'] }}

Open {{ $summary['issue_stats']['open'] }} 진행 {{ $summary['issue_stats']['in_progress'] }} 해결 {{ $summary['issue_stats']['resolved'] }}

활성 프로젝트

전체보기 →
@forelse($summary['projects'] as $project)
{{ $project->name }} @if($project->description)

{{ Str::limit($project->description, 100) }}

@endif
{{ $project->status_label }}
@php $projTaskStats = $project->task_stats; $projTaskTotal = $projTaskStats['total'] ?? 0; $projTaskDone = $projTaskStats['done'] ?? 0; $projTaskInProgress = $projTaskStats['in_progress'] ?? 0; $projDonePct = $projTaskTotal > 0 ? round(($projTaskDone / $projTaskTotal) * 100) : 0; $projInProgressPct = $projTaskTotal > 0 ? round((($projTaskDone + $projTaskInProgress) / $projTaskTotal) * 100) : 0; @endphp
진행률 {{ $projInProgressPct }}%
완료 {{ $projDonePct }}% + 진행 {{ $projInProgressPct - $projDonePct }}%
작업: {{ $projTaskTotal }}개
{{ $projTaskInProgress }} {{ $projTaskDone }}
이슈: @php $issueStats = $project->issue_stats; $openIssues = ($issueStats['open'] ?? 0) + ($issueStats['in_progress'] ?? 0); @endphp {{ $openIssues }}개 열림
{{ $issueStats['open'] ?? 0 }} {{ $issueStats['in_progress'] ?? 0 }} {{ $issueStats['resolved'] ?? 0 }}
@php $todayScrum = $project->dailyLogs->first(); $scrumEntries = $todayScrum?->entries ?? collect([]); @endphp
스크럼: {{ $scrumEntries->count() }}개
@php $allGrouped = $scrumEntries->groupBy('assignee_name'); $pendingCount = $scrumEntries->whereIn('status', ['todo', 'in_progress'])->count(); $doneCount = $scrumEntries->where('status', 'done')->count(); @endphp

오늘의 활동 @if($pendingCount > 0) {{ $pendingCount }} @endif @if($doneCount > 0) ✓{{ $doneCount }} @endif

@if($todayScrum) 더보기 → @endif
@if($scrumEntries->count() > 0)
@foreach($allGrouped as $assigneeName => $groupedEntries) @php $entriesJson = $groupedEntries->map(fn($e) => [ 'id' => $e->id, 'daily_log_id' => $e->daily_log_id, 'content' => $e->content, 'status' => $e->status ])->values()->toJson(); $todoCount = $groupedEntries->where('status', 'todo')->count(); $inProgressCount = $groupedEntries->where('status', 'in_progress')->count(); $assigneeDoneCount = $groupedEntries->where('status', 'done')->count(); @endphp
{{ $assigneeName }}
@if($todoCount > 0) {{ $todoCount }} @endif @if($inProgressCount > 0) {{ $inProgressCount }} @endif @if($assigneeDoneCount > 0) ✓{{ $assigneeDoneCount }} @endif
@foreach($groupedEntries->sortBy(fn($e) => $e->status === 'done' ? 1 : 0) as $entry)
@if($entry->status === 'done') 완료 @elseif($entry->status === 'in_progress') 진행 @else 예정 @endif {{ $entry->content }}
@if($entry->status !== 'todo') @endif @if($entry->status !== 'in_progress') @endif @if($entry->status !== 'done') @endif
@endforeach
@endforeach
@else

오늘의 활동이 없습니다

@endif
@empty

활성 프로젝트가 없습니다.

+ 첫 프로젝트 만들기
@endforelse

긴급 작업

열린 이슈

@endsection @push('scripts') @endpush