From d0f997321ea7f9ad0ca278a89f1342869e203765 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sat, 7 Mar 2026 22:06:06 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[rd]=20=EA=B8=B0=ED=9A=8D=EB=94=94?= =?UTF-8?q?=EC=9E=90=EC=9D=B8=20=ED=94=8C=EB=9E=98=EB=8B=9D=20=EC=BA=94?= =?UTF-8?q?=EB=B2=84=EC=8A=A4=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 연구개발 > 기획디자인 메뉴 라우트/컨트롤러/뷰 추가 - Alpine.js 기반 캔버스 도구 (노드 배치, 연결, 줌/팬) - 16종 노드 타입 (기획/분석/구조/산출물 카테고리) - 타임라인/플로우 뷰 모드, 프로젝트 저장/불러오기 - 실행취소/재실행, 키보드 단축키 지원 --- app/Http/Controllers/RdController.php | 12 + .../views/rd/planning-design/index.blade.php | 1224 +++++++++++++++++ routes/web.php | 3 + 3 files changed, 1239 insertions(+) create mode 100644 resources/views/rd/planning-design/index.blade.php diff --git a/app/Http/Controllers/RdController.php b/app/Http/Controllers/RdController.php index ebf0f29e..b900471e 100644 --- a/app/Http/Controllers/RdController.php +++ b/app/Http/Controllers/RdController.php @@ -301,4 +301,16 @@ public function editQuotation(Request $request, int $id): View|\Illuminate\Http\ return view('rd.ai-quotation.edit', compact('quotation')); } + + /** + * 기획디자인 - 플래닝 캔버스 + */ + public function planningDesign(Request $request): View|\Illuminate\Http\Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('rd.planning-design')); + } + + return view('rd.planning-design.index'); + } } diff --git a/resources/views/rd/planning-design/index.blade.php b/resources/views/rd/planning-design/index.blade.php new file mode 100644 index 00000000..163713f8 --- /dev/null +++ b/resources/views/rd/planning-design/index.blade.php @@ -0,0 +1,1224 @@ +@extends('layouts.app') + +@section('title', '기획디자인') + +@section('content') + + +
+ + {{-- ===== Top Toolbar ===== --}} +
+ {{-- Left: Tools --}} +
+ + + +
+ + {{-- Center: Title + View Mode --}} +
+ +
+ +
+
+ + + +
+
+ + {{-- Right: Actions --}} +
+ + + +
+ + + +
+
+ + {{-- ===== Body ===== --}} +
+ + {{-- Left Sidebar --}} +
+
+ + + +
+ + {{-- Palette Panel --}} +
+ {{-- 기획 단계 --}} +
+

기획 단계

+
+ +
+
+ + {{-- 분석 도구 --}} +
+

분석 & 설계

+
+ +
+
+ + {{-- 구조 요소 --}} +
+

구조 & 흐름

+
+ +
+
+ + {{-- 산출물 --}} +
+

산출물

+
+ +
+
+
+ + {{-- Properties Panel --}} +
+ + +
+ + {{-- Projects Panel --}} +
+
+ +
+ +
+ 저장된 프로젝트가 없습니다 +
+
+
+ + {{-- Canvas --}} +
+ +
+ {{-- SVG Connections --}} + + + + + + + + + + + {{-- Timeline Swimlanes --}} + + + {{-- Nodes --}} + +
+ + {{-- Zoom Controls --}} +
+ +
+ + +
+ + {{-- Minimap --}} +
+
+
+ + {{-- Context Menu --}} +
+
복제
+
맨 앞으로
+
+
빠른 노드 추가
+
+
삭제
+
+
+ +@endsection + +@push('scripts') + +@endpush diff --git a/routes/web.php b/routes/web.php index 0eb4ad95..3a3fa640 100644 --- a/routes/web.php +++ b/routes/web.php @@ -414,6 +414,9 @@ Route::post('/generate-lyrics', [CmSongController::class, 'generateLyrics'])->name('generate-lyrics'); Route::post('/generate-audio', [CmSongController::class, 'generateAudio'])->name('generate-audio'); }); + + // 기획디자인 + Route::get('/planning-design', [RdController::class, 'planningDesign'])->name('planning-design'); }); // 일일 스크럼 (Blade 화면만)