- 모델 3개: AiQuotationModule, AiQuotation, AiQuotationItem - AiQuotationService: Gemini/Claude 2단계 AI 파이프라인 - RdController: R&D 대시보드 + AI 견적 Blade 화면 - AiQuotationController: AI 견적 API (생성/목록/상세/재분석) - Blade 뷰: 대시보드, 목록, 생성, 상세, HTMX 테이블 - 라우트: /rd/* (web), /admin/rd/* (api)
60 lines
3.2 KiB
PHP
60 lines
3.2 KiB
PHP
<div class="bg-white rounded-lg shadow-sm overflow-hidden">
|
|
<table class="w-full text-sm">
|
|
<thead class="bg-gray-50 border-b">
|
|
<tr>
|
|
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase">ID</th>
|
|
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase">제목</th>
|
|
<th class="px-4 py-3 text-center text-xs font-medium text-gray-500 uppercase">상태</th>
|
|
<th class="px-4 py-3 text-center text-xs font-medium text-gray-500 uppercase">AI</th>
|
|
<th class="px-4 py-3 text-right text-xs font-medium text-gray-500 uppercase">개발비</th>
|
|
<th class="px-4 py-3 text-right text-xs font-medium text-gray-500 uppercase">월 구독료</th>
|
|
<th class="px-4 py-3 text-center text-xs font-medium text-gray-500 uppercase">요청자</th>
|
|
<th class="px-4 py-3 text-center text-xs font-medium text-gray-500 uppercase">생성일</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="divide-y divide-gray-50">
|
|
@forelse($quotations as $q)
|
|
<tr class="hover:bg-gray-50 cursor-pointer" onclick="location.href='{{ route('rd.ai-quotation.show', $q->id) }}'">
|
|
<td class="px-4 py-3 text-gray-500">#{{ $q->id }}</td>
|
|
<td class="px-4 py-3 font-medium text-gray-800">{{ Str::limit($q->title, 40) }}</td>
|
|
<td class="px-4 py-3 text-center">
|
|
<span class="badge {{ $q->status_color }} badge-sm">{{ $q->status_label }}</span>
|
|
</td>
|
|
<td class="px-4 py-3 text-center">
|
|
<span class="px-2 py-0.5 bg-gray-100 text-gray-600 text-xs rounded-full">{{ $q->ai_provider }}</span>
|
|
</td>
|
|
<td class="px-4 py-3 text-right text-gray-700">
|
|
@if($q->isCompleted())
|
|
{{ number_format((int)$q->total_dev_cost) }}원
|
|
@else
|
|
-
|
|
@endif
|
|
</td>
|
|
<td class="px-4 py-3 text-right text-gray-700">
|
|
@if($q->isCompleted())
|
|
{{ number_format((int)$q->total_monthly_fee) }}원/월
|
|
@else
|
|
-
|
|
@endif
|
|
</td>
|
|
<td class="px-4 py-3 text-center text-gray-500">{{ $q->creator?->name ?? '-' }}</td>
|
|
<td class="px-4 py-3 text-center text-gray-500">{{ $q->created_at->format('m/d H:i') }}</td>
|
|
</tr>
|
|
@empty
|
|
<tr>
|
|
<td colspan="8" class="px-4 py-12 text-center text-gray-400">
|
|
<i class="ri-robot-line text-4xl mb-2 block"></i>
|
|
<p>AI 견적 데이터가 없습니다.</p>
|
|
</td>
|
|
</tr>
|
|
@endforelse
|
|
</tbody>
|
|
</table>
|
|
|
|
@if($quotations->hasPages())
|
|
<div class="px-4 py-3 border-t border-gray-100">
|
|
{{ $quotations->links() }}
|
|
</div>
|
|
@endif
|
|
</div>
|