From 975411598de3193632b20f51231d4a1cfc1c30fd Mon Sep 17 00:00:00 2001 From: jade Date: Fri, 14 Aug 2026 09:51:08 +0900 Subject: [PATCH] =?UTF-8?q?fix(scaffold):=20=EA=B8=B0=EC=A1=B4=20UseCase?= =?UTF-8?q?=EC=97=90=20=EB=8B=A8=EC=9D=BC=20Tool=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EC=8B=9C=20=EC=83=88=20=ED=8C=8C=EC=9D=BC(UseCase)=EC=9D=B4=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=EB=90=98=EB=8A=94=20=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/static/admin/scaffold.html | 55 ++++++++++++------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/dap-gateway/src/main/resources/static/admin/scaffold.html b/dap-gateway/src/main/resources/static/admin/scaffold.html index 8db12a4c..f2bae4cb 100644 --- a/dap-gateway/src/main/resources/static/admin/scaffold.html +++ b/dap-gateway/src/main/resources/static/admin/scaffold.html @@ -1660,25 +1660,42 @@ } document.getElementById('toolForm').addEventListener('submit', function(e) { - if (!groupedTools.length) return; - e.preventDefault(); - e.stopImmediatePropagation(); - try { - const useCaseName = document.getElementById('toolGroupUseCaseName').value.trim(); - if (!/^[A-Z][A-Za-z0-9]*$/.test(useCaseName)) throw new Error('UseCase 이름은 PascalCase로 입력해주세요. 예: Customer'); - const current = currentToolDefinition(); - const tools = groupedTools.some(item => item.methodName === current.methodName) ? groupedTools : [...groupedTools, current]; - const data = Object.fromEntries(new FormData(this).entries()); - fetch('/api/v1/scaffold/tool-group', { - method: 'POST', headers: {'Content-Type': 'application/json'}, - body: JSON.stringify({useCaseName, moduleName: data.moduleName, author: data.author, date: data.date, tools}) - }).then(response => response.text()).then(result => { - const resultBox = document.getElementById('resultBox'); - resultBox.style.display = 'block'; resultBox.className = result.startsWith('Error:') ? 'error' : 'success'; - resultBox.textContent = result; - }); - } catch (error) { - alert(error.message); + const useCaseName = document.getElementById('toolGroupUseCaseName').value.trim(); + if (useCaseName) { + e.preventDefault(); + e.stopImmediatePropagation(); + if (!/^[A-Z][A-Za-z0-9]*$/.test(useCaseName)) { + alert('UseCase 이름은 PascalCase로 입력해주세요. 예: Customer'); + return; + } + try { + const current = currentToolDefinition(); + const tools = groupedTools.some(item => item.methodName === current.methodName) ? groupedTools : [...groupedTools, current]; + const data = Object.fromEntries(new FormData(this).entries()); + + const btn = this.querySelector('button[type="submit"]'); + const originalText = btn.innerHTML; + btn.innerHTML = ' 처리중...'; + btn.disabled = true; + + fetch('/api/v1/scaffold/tool-group', { + method: 'POST', headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({useCaseName, moduleName: data.moduleName, author: data.author, date: data.date, tools}) + }).then(response => response.text()).then(result => { + const resultBox = document.getElementById('resultBox'); + resultBox.style.display = 'block'; resultBox.className = result.startsWith('Error:') ? 'error' : 'success'; + resultBox.textContent = result + (result.startsWith('Error:') ? '' : "\n\n> Note: Please sync Gradle in your IDE to reflect source code generation."); + }).catch(error => { + const resultBox = document.getElementById('resultBox'); + resultBox.style.display = 'block'; resultBox.className = 'error'; + resultBox.textContent = "Network error: " + error; + }).finally(() => { + btn.innerHTML = originalText; + btn.disabled = false; + }); + } catch (error) { + alert(error.message); + } } });