-
?์ ์ถ๊????๋๋ฅ??
๋ ฅ?๋ฉด ??ฅํ ??JSON?ผ๋ก ?๋ ๋ณ?๋ฉ?๋ค.
+
ํ์ ์ถ๊ฐํด ํ๋๋ฅผ ์
๋ ฅํ๋ฉด ์ ์ฅํ ๋ JSON์ผ๋ก ์๋ ๋ณํ๋ฉ๋๋ค.
- ๋น ๋ฅธ ?
๋ ฅ:
+ ๋น ๋ฅธ ์
๋ ฅ:
-
-
@@ -1247,15 +1245,15 @@
| Object list item fields (JSON) |
Description |
Pattern (Regex) |
- Examples (Enter ?จ์ ๊ตฌ๋ถ) |
+ Examples (Enter ๋จ์ ๊ตฌ๋ถ) |
Required |
- ?? |
+ ์ญ์ |
-
+ ?๋ ์ถ๊?
+
+ ํ๋ ์ถ๊ฐ
@@ -1263,7 +1261,7 @@
@@ -1274,7 +1272,7 @@
@@ -1388,13 +1386,13 @@
const button = dg('docgenGenerateBtn');
select.disabled = true;
button.disabled = true;
- dg('docgenGrowToolHint').textContent = 'Gateway??ToolMetadata ๋ชฉ๋ก??์กฐํ?๊ณ ?์ต?๋ค.';
+ dg('docgenGrowToolHint').textContent = 'Gateway์ ToolMetadata ๋ชฉ๋ก์ ์กฐํํ๊ณ ์์ต๋๋ค.';
try {
const response = await fetch('/mcp/api/v1/tools/list', { cache: 'no-store' });
if (!response.ok) throw new Error(`Gateway HTTP ${response.status}`);
const payload = await response.json();
const tools = payload?.result?.tools;
- if (!Array.isArray(tools)) throw new Error('ToolMetadata ?๋ต ?์???ฌ๋ฐ๋ฅด์? ?์ต?๋ค.');
+ if (!Array.isArray(tools)) throw new Error('ToolMetadata ์๋ต ํ์์ด ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค.');
state.tools = tools.slice().sort((a, b) =>
(a.categoryKey || '').localeCompare(b.categoryKey || '') ||
(a.name || '').localeCompare(b.name || '')
@@ -1403,19 +1401,19 @@
`
`
).join('');
select.disabled = state.tools.length === 0;
- dg('docgenGrowToolHint').textContent = `ToolMetadata???ฑ๋ก??${state.tools.length}๊ฐ?Tool??๋ชจ๋ ?์?ฉ๋??`;
+ dg('docgenGrowToolHint').textContent = `ToolMetadata์ ๋ฑ๋ก๋ ${state.tools.length}๊ฐ Tool์ ๋ชจ๋ ํ์ํฉ๋๋ค.`;
if (state.tools.length) {
select.value = '0';
selectTool();
} else {
- showMetadataError('?ฑ๋ก??Tool???์ต?๋ค.');
+ showMetadataError('๋ฑ๋ก๋ Tool์ด ์์ต๋๋ค.');
}
} catch (error) {
state.tools = [];
state.selected = null;
showMetadataError(error.message);
- select.innerHTML = '
';
- dg('docgenGrowToolHint').innerHTML = `
${escapeHtml(error.message)} ยท Gateway ?คํ ?ํ๋ฅ??์ธ?์ธ??`;
+ select.innerHTML = '
';
+ dg('docgenGrowToolHint').innerHTML = `
${escapeHtml(error.message)} ยท Gateway ์คํ ์ํ๋ฅผ ํ์ธํ์ธ์.`;
}
}
@@ -1426,7 +1424,7 @@
dg('docgenVersion').value = normalizeVersion(tool.semver || dg('docgenVersion').value || '1.0');
dg('docgenToolTitle').classList.remove('docgen-loading', 'docgen-error');
dg('docgenToolTitle').textContent = tool.displayName || tool.name;
- dg('docgenToolDescription').textContent = tool.description || '?ค๋ช
???ฑ๋ก?์? ?์? Tool?
๋??';
+ dg('docgenToolDescription').textContent = tool.description || '์ค๋ช
์ด ๋ฑ๋ก๋์ง ์์ Tool์
๋๋ค.';
dg('docgenCategoryTag').textContent = `Category ยท ${tool.categoryKey || '-'}`;
dg('docgenInterfaceTag').textContent = `Interface ยท ${tool.integrationType || '-'}`;
dg('docgenMetadataStatus').textContent = tool.enabled === false ? 'DISABLED' : 'READY';
@@ -1448,14 +1446,14 @@
const hasProgram = checks.program.checked || checks.process.checked || checks.revision.checked;
dg('docgenProgramFile').classList.toggle('docgen-disabled', !hasProgram);
dg('docgenInterfaceFile').classList.toggle('docgen-disabled', !checks.interface.checked);
- dg('docgenProgramFileName').textContent = `${toolName}_?๋ก๊ทธ๋จ?์??v${version}_${date}.xlsx`;
- dg('docgenInterfaceFileName').textContent = `${toolName}_?ธํฐ?์ด?ค์ ?์_v${version}_${date}.xlsx`;
+ dg('docgenProgramFileName').textContent = `${toolName}_ํ๋ก๊ทธ๋จ์ ์์_v${version}_${date}.xlsx`;
+ dg('docgenInterfaceFileName').textContent = `${toolName}_์ธํฐํ์ด์ค์ ์์_v${version}_${date}.xlsx`;
dg('docgenGenerateBtn').disabled = !state.selected || (!hasProgram && !checks.interface.checked);
}
async function generateFiles() {
const tool = state.selected;
- if (!tool) return notify('?์ฑ??Tool??? ํ?์ธ??');
+ if (!tool) return notify('์์ฑํ Tool์ ์ ํํ์ธ์.');
const button = dg('docgenGenerateBtn');
const version = safeVersion(dg('docgenVersion').value);
const date = yyyymmdd();
@@ -1474,13 +1472,13 @@
try {
if (hasProgram) {
await requestDownload('/mcp/api/v1/admin/documents/program', request,
- `${toolName}_?๋ก๊ทธ๋จ?์??v${version}_${date}.xlsx`);
+ `${toolName}_ํ๋ก๊ทธ๋จ์ ์์_v${version}_${date}.xlsx`);
}
if (checks.interface.checked) {
await requestDownload('/mcp/api/v1/admin/documents/interface', request,
- `${toolName}_?ธํฐ?์ด?ค์ ?์_v${version}_${date}.xlsx`);
+ `${toolName}_์ธํฐํ์ด์ค์ ์์_v${version}_${date}.xlsx`);
}
- notify('? ํ??Excel ๋ฌธ์ ?ค์ด๋ก๋๋ฅ??๋ฃ?์ต?๋ค.');
+ notify('์ ํํ Excel ๋ฌธ์ ๋ค์ด๋ก๋๋ฅผ ์๋ฃํ์ต๋๋ค.');
} catch (error) {
notify(error.message);
} finally {
@@ -1496,12 +1494,12 @@
body: JSON.stringify(payload)
});
if (!response.ok) {
- let message = `๋ฌธ์ ?์ฑ???คํจ?์ต?๋ค. (HTTP ${response.status})`;
+ let message = `๋ฌธ์ ์์ฑ์ ์คํจํ์ต๋๋ค. (HTTP ${response.status})`;
try {
const error = await response.json();
if (error?.error) message = error.error;
} catch (_) {
- // JSON ?ค๋ฅ ?๋ต???๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ๋ฉ์์ง๋ฅ??ฌ์ฉ?ฉ๋??
+ // JSON ์ค๋ฅ ์๋ต์ด ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ๋ฉ์์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค.
}
throw new Error(message);
}
@@ -1562,7 +1560,7 @@
const resultBox = document.getElementById('resultBox');
resultBox.style.display = 'block';
- if (result.includes('[?ค๋ฅ]') || result.includes('?ค๋ฅ ๋ฐ์:')) {
+ if (result.includes('[์ค๋ฅ]') || result.includes('์ค๋ฅ ๋ฐ์:')) {
resultBox.className = 'error';
resultBox.textContent = result;
} else {
@@ -1628,16 +1626,16 @@
const form = document.getElementById('toolForm');
const data = Object.fromEntries(new FormData(form).entries());
if (!data.baseName) {
- throw new Error('Base Name???
๋ ฅ?ด์ฃผ?ธ์.');
+ throw new Error('Base Name์ ์
๋ ฅํด์ฃผ์ธ์.');
}
if (data.routingType === 'MCI' && (!data.interfaceId || !data.clientSystemCode)) {
- throw new Error('MCI Tool? Legacy Interface ID? Target System Code๋ฅ??
๋ ฅ?ด์ผ ?ฉ๋??');
+ throw new Error('MCI Tool์ Legacy Interface ID์ Target System Code๋ฅผ ์
๋ ฅํด์ผ ํฉ๋๋ค.');
}
if (data.routingType === 'HTTP' && !data.httpApiName) {
- throw new Error('HTTP Tool? HTTP API Name???
๋ ฅ?ด์ผ ?ฉ๋??');
+ throw new Error('HTTP Tool์ HTTP API Name์ ์
๋ ฅํด์ผ ํฉ๋๋ค.');
}
if (!['MCI', 'HTTP'].includes(data.routingType)) {
- throw new Error('?ฌ๋ฌ Tool UseCase??MCI ?๋ HTTP ?๋ก? ์ฝ๋ง?์ง?ํฉ?๋ค.');
+ throw new Error('์ฌ๋ฌ Tool UseCase๋ MCI ๋๋ HTTP ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.');
}
return {
baseName: data.baseName,
@@ -1665,7 +1663,7 @@
try {
const tool = currentToolDefinition();
if (groupedTools.some(item => item.methodName === tool.methodName || item.baseName === tool.baseName)) {
- throw new Error('๊ฐ์? Base Name ?๋ ๋ฉ์?๋ช
???ด๋? ๋ฌถ์???์ต?๋ค.');
+ throw new Error('๊ฐ์ Base Name ๋๋ ๋ฉ์๋๋ช
์ด ์ด๋ฏธ ๋ฌถ์์ ์์ต๋๋ค.');
}
groupedTools.push(tool);
renderToolGroupSummary();
@@ -1679,13 +1677,13 @@
const workspacePath = document.querySelector('#toolForm input[name="workspacePath"]')?.value || document.querySelector('input[name="workspacePath"]')?.value || '';
const categoryKey = document.querySelector('#toolForm [name="categoryKey"]').value.trim();
const select = document.getElementById('toolGroupUseCaseSelect');
- select.innerHTML = '
';
+ select.innerHTML = '
';
if (!/^[a-z0-9]{3}$/.test(categoryKey)) return;
try {
const response = await fetch(`/api/v1/scaffold/usecases?moduleName=${encodeURIComponent(moduleName)}&categoryKey=${encodeURIComponent(categoryKey)}&workspacePath=${encodeURIComponent(workspacePath)}`);
- if (!response.ok) throw new Error('UseCase ๋ชฉ๋ก ์กฐํ ?คํจ');
+ if (!response.ok) throw new Error('UseCase ๋ชฉ๋ก ์กฐํ ์คํจ');
const useCases = await response.json();
- useCases.forEach(useCaseName => select.add(new Option(`๊ธฐ์กด ${useCaseName}???จ์ ์ถ๊?`, useCaseName)));
+ useCases.forEach(useCaseName => select.add(new Option(`๊ธฐ์กด ${useCaseName}์ ํจ์ ์ถ๊ฐ`, useCaseName)));
} catch (error) {
console.warn(error);
}
@@ -1696,12 +1694,12 @@
const workspacePath = document.querySelector('#toolForm input[name="workspacePath"]')?.value || document.querySelector('input[name="workspacePath"]')?.value || '';
const select = document.getElementById('domainCategorySelect');
const nameInput = document.getElementById('domainCategoryName');
- select.innerHTML = '
';
+ select.innerHTML = '
';
try {
const response = await fetch(`/api/v1/scaffold/categories?moduleName=${encodeURIComponent(moduleName)}&workspacePath=${encodeURIComponent(workspacePath)}`);
- if (!response.ok) throw new Error('Category ๋ชฉ๋ก ์กฐํ ?คํจ');
+ if (!response.ok) throw new Error('Category ๋ชฉ๋ก ์กฐํ ์คํจ');
const categories = await response.json();
- categories.forEach(cat => select.add(new Option(`๊ธฐ์กด ${cat} ?๋ฉ??, cat)));
+ categories.forEach(cat => select.add(new Option(`๊ธฐ์กด ${cat} ๋๋ฉ์ธ`, cat)));
} catch (error) {
console.warn(error);
}
@@ -1737,8 +1735,8 @@
function renderToolGroupSummary() {
const summary = document.getElementById('toolGroupSummary');
summary.textContent = groupedTools.length
- ? `${groupedTools.length}๊ฐ?Tool: ${groupedTools.map(tool => `${tool.baseName} ??${tool.methodName}()`).join(', ')}`
- : '๋ฌถ์??์ถ๊???Tool ?์ ???ผ๋ฐ Generate Tool? ๊ธฐ์กด ?จ์ผ Tool ?์ฑ?
๋??';
+ ? `${groupedTools.length}๊ฐ Tool: ${groupedTools.map(tool => `${tool.baseName} โ ${tool.methodName}()`).join(', ')}`
+ : '๋ฌถ์์ ์ถ๊ฐ๋ Tool ์์ โ ์ผ๋ฐ Generate Tool์ ๊ธฐ์กด ๋จ์ผ Tool ์์ฑ์
๋๋ค.';
}
document.getElementById('toolForm').addEventListener('submit', function(e) {
@@ -1747,7 +1745,7 @@
e.preventDefault();
e.stopImmediatePropagation();
if (!/^[A-Z][A-Za-z0-9]*$/.test(useCaseName)) {
- alert('UseCase ?ด๋ฆ? PascalCase๋ก??
๋ ฅ?ด์ฃผ?ธ์. ?? Customer');
+ alert('UseCase ์ด๋ฆ์ PascalCase๋ก ์
๋ ฅํด์ฃผ์ธ์. ์: Customer');
return;
}
try {
@@ -1757,7 +1755,7 @@
const btn = this.querySelector('button[type="submit"]');
const originalText = btn.innerHTML;
- btn.innerHTML = '
์ฒ๋ฆฌ์ค?..';
+ btn.innerHTML = '
์ฒ๋ฆฌ์ค...';
btn.disabled = true;
fetch('/api/v1/scaffold/tool-group', {
@@ -1962,15 +1960,15 @@
fields = JSON.parse(textarea.value);
if (!Array.isArray(fields)) throw new Error('not an array');
} catch (error) {
- alert('?์ฌ JSON ?์???ฌ๋ฐ๋ฅด์? ?์ต?๋ค. JSON???์ ?????ค์ ?ด์ด์ฃผ์ธ??');
+ alert('ํ์ฌ JSON ํ์์ด ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค. JSON์ ์์ ํ ํ ๋ค์ ์ด์ด์ฃผ์ธ์.');
return;
}
}
fieldEditorTargetId = targetId;
document.getElementById('fieldEditorModalLabel').textContent = targetId === 'inputFields'
- ? 'Input Fields ?ธ์ง'
- : 'Output Fields ?ธ์ง';
+ ? 'Input Fields ํธ์ง'
+ : 'Output Fields ํธ์ง';
const body = document.getElementById('fieldEditorBody');
body.replaceChildren();
(fields.length ? fields : [{}]).forEach(addFieldEditorRow);
@@ -2041,14 +2039,14 @@
itemFieldsContainer.className = 'd-flex gap-1';
const itemFieldsInput = makeInput(field.type === 'List' && field.itemType === 'Object'
- ? JSON.stringify(field.itemFields || []) : '', 'JSON ์ง์ ?
๋ ฅ ?๋ ?ฐ์ธก ?ธ์ง ?ด๋ฆญ');
+ ? JSON.stringify(field.itemFields || []) : '', 'JSON ์ง์ ์
๋ ฅ ๋๋ ์ฐ์ธก ํธ์ง ํด๋ฆญ');
itemFieldsInput.dataset.field = 'itemFields';
itemFieldsInput.style.flex = '1';
const editItemBtn = document.createElement('button');
editItemBtn.type = 'button';
editItemBtn.className = 'btn-secondary-action';
- editItemBtn.textContent = '?ธ์ง';
+ editItemBtn.textContent = 'ํธ์ง';
editItemBtn.style.padding = '0.2rem 0.5rem';
editItemBtn.onclick = () => {
if (typeof openSubFieldEditor === 'function') openSubFieldEditor(itemFieldsInput);
@@ -2062,7 +2060,7 @@
itemFieldsInput.disabled = !objectList;
editItemBtn.disabled = !objectList;
itemFieldsInput.placeholder = objectList
- ? 'JSON ์ง์ ?
๋ ฅ ?๋ ?ฐ์ธก ?ธ์ง ?ด๋ฆญ'
+ ? 'JSON ์ง์ ์
๋ ฅ ๋๋ ์ฐ์ธก ํธ์ง ํด๋ฆญ'
: 'Select List > Object to enter item fields';
if (!objectList) itemFieldsInput.value = '';
};
@@ -2098,7 +2096,7 @@
const deleteButton = document.createElement('button');
deleteButton.type = 'button';
deleteButton.className = 'btn-secondary-action';
- deleteButton.textContent = '?? ';
+ deleteButton.textContent = '์ญ์ ';
deleteButton.addEventListener('click', () => {
row.remove();
updateFieldEditorPreview();
@@ -2156,12 +2154,12 @@
async function createNaturalFieldDraft() {
const source = document.getElementById('fieldNaturalLanguage').value.trim();
if (!source) {
- alert('?๋ ์ด์??๋ง๋ค ๋ฌธ์ฅ???
๋ ฅ?ด์ฃผ?ธ์.');
+ alert('ํ๋ ์ด์์ ๋ง๋ค ๋ฌธ์ฅ์ ์
๋ ฅํด์ฃผ์ธ์.');
return;
}
const button = document.getElementById('fieldDraftButton');
const originalLabel = button.textContent;
- button.textContent = 'AI ?์ฑ ์ค?..';
+ button.textContent = 'AI ์์ฑ ์ค...';
button.disabled = true;
try {
const response = await fetch('/api/v1/scaffold/field-draft', {
@@ -2170,16 +2168,16 @@
body: JSON.stringify({ description: source, target: fieldEditorTargetId, model: selectedAiModel() })
});
const result = await response.json();
- if (!response.ok) throw new Error(result.error || 'AI ์ด์ ?์ฑ???คํจ?์ต?๋ค.');
+ if (!response.ok) throw new Error(result.error || 'AI ์ด์ ์์ฑ์ ์คํจํ์ต๋๋ค.');
if (!Array.isArray(result.fields) || result.fields.length === 0) {
- throw new Error('AI๊ฐ ?ฌ์ฉ?????๋ ?๋๋ฅ?๋ง๋ค์ง ๋ชปํ?ต๋??');
+ throw new Error('AI๊ฐ ์ฌ์ฉํ ์ ์๋ ํ๋๋ฅผ ๋ง๋ค์ง ๋ชปํ์ต๋๋ค.');
}
const body = document.getElementById('fieldEditorBody');
body.replaceChildren();
result.fields.forEach(addFieldEditorRow);
updateFieldEditorPreview();
} catch (error) {
- alert(`AI ์ด์ ?์ฑ ?คํจ: ${error.message}`);
+ alert(`AI ์ด์ ์์ฑ ์คํจ: ${error.message}`);
} finally {
button.textContent = originalLabel;
button.disabled = false;
@@ -2193,12 +2191,12 @@
async function createAiToolDraft() {
const source = document.getElementById('toolNaturalLanguage').value.trim();
if (!source) {
- alert('AI๊ฐ ๋ง๋ค Tool ?ค๋ช
???
๋ ฅ?ด์ฃผ?ธ์.');
+ alert('AI๊ฐ ๋ง๋ค Tool ์ค๋ช
์ ์
๋ ฅํด์ฃผ์ธ์.');
return;
}
const button = document.getElementById('toolDraftButton');
const originalLabel = button.textContent;
- button.textContent = 'AI ?์ฑ ์ค?..';
+ button.textContent = 'AI ์์ฑ ์ค...';
button.disabled = true;
try {
const response = await fetch('/api/v1/scaffold/tool-draft', {
@@ -2207,7 +2205,7 @@
body: JSON.stringify({ description: source, model: selectedAiModel() })
});
const result = await response.json();
- if (!response.ok) throw new Error(result.error || 'AI Tool ์ด์ ?์ฑ???คํจ?์ต?๋ค.');
+ if (!response.ok) throw new Error(result.error || 'AI Tool ์ด์ ์์ฑ์ ์คํจํ์ต๋๋ค.');
const form = document.getElementById('toolForm');
form.elements.baseName.value = result.baseName || '';
@@ -2231,9 +2229,9 @@
form.elements.ownerOrg.value = result.ownerOrg || 'MCP_TOOL';
document.getElementById('inputFields').value = JSON.stringify(result.inputFields || [], null, 2);
document.getElementById('outputFields').value = JSON.stringify(result.outputFields || [], null, 2);
- alert('Tool ์ด์??์ฑ์ ?ต๋?? Legacy Interface ID? Client System Code???ค์ ?ฐ๊ณ ๋ช
์ธ๋ฅ??์ธ???
๋ ฅ?ด์ฃผ?ธ์.');
+ alert('Tool ์ด์์ ์ฑ์ ์ต๋๋ค. Legacy Interface ID์ Client System Code๋ ์ค์ ์ฐ๊ณ ๋ช
์ธ๋ฅผ ํ์ธํด ์
๋ ฅํด์ฃผ์ธ์.');
} catch (error) {
- alert(`AI Tool ์ด์ ?์ฑ ?คํจ: ${error.message}`);
+ alert(`AI Tool ์ด์ ์์ฑ ์คํจ: ${error.message}`);
} finally {
button.textContent = originalLabel;
button.disabled = false;
@@ -2246,11 +2244,11 @@
for (const field of fields) {
const name = field.name;
if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name)) {
- alert(`?๋๋ช?"${name}"?(?? Java ?๋๋ช??์?ผ๋ก ?
๋ ฅ?ด์ฃผ?ธ์.`);
+ alert(`ํ๋๋ช
"${name}"์(๋) Java ํ๋๋ช
ํ์์ผ๋ก ์
๋ ฅํด์ฃผ์ธ์.`);
return;
}
if (names.has(name)) {
- alert(`?๋๋ช?"${name}"??๊ฐ) ์ค๋ณต?์?ต๋??`);
+ alert(`ํ๋๋ช
"${name}"์ด(๊ฐ) ์ค๋ณต๋์์ต๋๋ค.`);
return;
}
names.add(name);
@@ -2379,7 +2377,7 @@
})
.then(response => response.text())
.then(result => {
- if (result.includes('[?ค๋ฅ]') || result.includes('?ค๋ฅ ๋ฐ์:')) {
+ if (result.includes('[์ค๋ฅ]') || result.includes('์ค๋ฅ ๋ฐ์:')) {
alert('Error updating source:\n' + result);
} else {
alert('Source code updated successfully.\nPlease rebuild the Pod container to reflect changes.');
diff --git a/dat-gateway/src/main/resources/static/tester.html b/dat-gateway/src/main/resources/static/tester.html
index fa469e2f..6f4c43b7 100644
--- a/dat-gateway/src/main/resources/static/tester.html
+++ b/dat-gateway/src/main/resources/static/tester.html
@@ -207,7 +207,7 @@
Auto-saved to LocalStorage