diff --git a/.gitignore b/.gitignore index d317a974..7d333444 100644 --- a/.gitignore +++ b/.gitignore @@ -162,3 +162,6 @@ package-lock.json # 아카데미 SVG 일러스트는 프로젝트 자산으로 추적 !public/images/academy/**/*.svg + +# 다운로드용 PPTX 파일은 프로젝트 자산으로 추적 +!public/downloads/*.pptx diff --git a/app/Http/Controllers/ClaudeCode/PricingController.php b/app/Http/Controllers/ClaudeCode/PricingController.php index 67e1a356..deb69b68 100644 --- a/app/Http/Controllers/ClaudeCode/PricingController.php +++ b/app/Http/Controllers/ClaudeCode/PricingController.php @@ -6,6 +6,7 @@ use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\View\View; +use Symfony\Component\HttpFoundation\BinaryFileResponse; class PricingController extends Controller { @@ -17,4 +18,13 @@ public function index(Request $request): View|Response return view('claude-code.pricing.index'); } + + public function download(): BinaryFileResponse + { + $path = public_path('downloads/claude-code-pricing.pptx'); + + abort_unless(file_exists($path), 404, 'PPTX 파일을 찾을 수 없습니다.'); + + return response()->download($path, 'Claude_Code_요금정책_비교분석.pptx'); + } } diff --git a/public/downloads/claude-code-pricing.pptx b/public/downloads/claude-code-pricing.pptx new file mode 100644 index 00000000..65b3c9a4 Binary files /dev/null and b/public/downloads/claude-code-pricing.pptx differ diff --git a/resources/views/claude-code/pricing/index.blade.php b/resources/views/claude-code/pricing/index.blade.php index 872ec0c8..6960ddd7 100644 --- a/resources/views/claude-code/pricing/index.blade.php +++ b/resources/views/claude-code/pricing/index.blade.php @@ -22,9 +22,17 @@

Claude Code 요금정책

-

Max 20x vs Max 5x + API vs Team Premium 비용 비교 분석 (2026년 2월 기준)

+

Max 20x vs Max 5x + API vs Team Premium 비용 비교 분석 (2026년 3월 기준)

+
+
+ CodeBridgeX 개발팀 | 2026.03 + + + PPTX +
- CodeBridgeX 개발팀 | 2026.02.28
{{-- 핵심 요약 카드 --}} diff --git a/routes/web.php b/routes/web.php index ddcd5190..a6e1d26d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -726,6 +726,7 @@ }); Route::get('/pricing', [ClaudeCodePricingController::class, 'index'])->name('pricing.index'); + Route::get('/pricing/download', [ClaudeCodePricingController::class, 'download'])->name('pricing.download'); }); /*