63 lines
1.9 KiB
JavaScript
63 lines
1.9 KiB
JavaScript
'use strict';
|
||
|
||
/**
|
||
* 将 LLM 生成的创建请求体写回 crudFlow,提取主键供删除步骤使用。
|
||
*/
|
||
|
||
return storeCreateResult(msg, node);
|
||
|
||
function storeCreateResult(message, node) {
|
||
if (!message.crudFlow || !message.crudFlow.create) {
|
||
return message;
|
||
}
|
||
|
||
const identityField = message.crudFlow.identityField || message.identityField || 'dsid';
|
||
const mockBody = extractMockBody(message);
|
||
|
||
if (mockBody) {
|
||
message.crudFlow.create.payload = clone(mockBody);
|
||
} else if (!message.crudFlow.create.payload) {
|
||
node.warn('未从模型生成创建参数,继续使用默认样例', message);
|
||
message.crudFlow.create.payload = clone(message.crudFlow.create.samplePayload || {});
|
||
}
|
||
|
||
const payload = message.crudFlow.create.payload || {};
|
||
const primaryKeyValue = payload[identityField];
|
||
if (primaryKeyValue !== undefined) {
|
||
message.primaryKeyValue = primaryKeyValue;
|
||
message.crudFlow.delete = message.crudFlow.delete || {};
|
||
message.crudFlow.delete.actualKey = primaryKeyValue;
|
||
}
|
||
|
||
delete message.mock;
|
||
delete message.mockCandidates;
|
||
delete message.mockPrompt;
|
||
delete message.mockSource;
|
||
delete message.mockAutoSelected;
|
||
delete message.llmContext;
|
||
delete message.llmRaw;
|
||
delete message.prompt;
|
||
delete message.method;
|
||
delete message.path;
|
||
delete message.url;
|
||
delete message.headers;
|
||
delete message.statusCode;
|
||
delete message.payload;
|
||
|
||
return message;
|
||
}
|
||
|
||
function extractMockBody(message) {
|
||
if (message && message.mock && typeof message.mock === 'object' && message.mock.body && typeof message.mock.body === 'object') {
|
||
return message.mock.body;
|
||
}
|
||
if (message && message.payload && typeof message.payload === 'object' && !Array.isArray(message.payload)) {
|
||
return message.payload;
|
||
}
|
||
return null;
|
||
}
|
||
|
||
function clone(value) {
|
||
return value == null ? value : JSON.parse(JSON.stringify(value));
|
||
}
|