feat:새 템플릿 생성 기능 추가 (CreateTemplateModal)

- storeTemplate() API에서 items를 nullable로 변경하여 빈 템플릿 생성 허용
- signer_count/variables 파라미터 직접 지정 가능하도록 추가
- "새 템플릿" 버튼 클릭 시 CreateTemplateModal 표시 (이름/설명/카테고리/서명자수/PDF)
- 생성 완료 후 필드 에디터(/esign/templates/{id}/fields)로 자동 이동

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
김보곤
2026-02-13 17:40:41 +09:00
parent be52631287
commit d5283099c4
2 changed files with 197 additions and 5 deletions

View File

@@ -824,7 +824,9 @@ public function storeTemplate(Request $request): JsonResponse
'category' => 'nullable|string|max:50',
'include_pdf' => 'nullable|boolean',
'contract_id' => 'nullable|integer',
'items' => 'required|array|min:1',
'signer_count' => 'nullable|integer|min:1|max:6',
'variables' => 'nullable|array',
'items' => 'nullable|array',
'items.*.signer_order' => 'required|integer|min:1',
'items.*.page_number' => 'required|integer|min:1',
'items.*.position_x' => 'required|numeric',
@@ -840,9 +842,10 @@ public function storeTemplate(Request $request): JsonResponse
$tenantId = session('selected_tenant_id', 1);
// items에서 최대 signer_order를 추출하여 signer_count 결정
$items = $request->input('items');
$signerCount = max(array_column($items, 'signer_order'));
// signer_count 결정: 직접 지정 > items에서 추출 > 기본값 2
$items = $request->input('items', []);
$signerCount = $request->input('signer_count')
?: (count($items) > 0 ? max(array_column($items, 'signer_order')) : 2);
// PDF 포함 여부 확인
$includePdf = $request->boolean('include_pdf');
@@ -879,6 +882,7 @@ public function storeTemplate(Request $request): JsonResponse
'description' => $request->input('description'),
'category' => $request->input('category'),
'signer_count' => $signerCount,
'variables' => $request->input('variables', []),
'is_active' => true,
'created_by' => auth()->id(),
], $fileData));