Ajustes de estructura

This commit is contained in:
Jordan Diaz
2026-04-29 15:30:21 +00:00
parent 3af875ed11
commit 8875cb29cb

View File

@@ -251,36 +251,60 @@ export function registerUploadRecordImageTool(server) {
); );
if (validationError) return validationError; if (validationError) return validationError;
const credentials = await getSessionCredentials(extra.sessionId); const projectSlug = path.basename(resolveCurrentProjectDir());
let result;
// Step 1: Delete old upload try {
await mcpPost( // Paso 1: borrar upload viejo via Python (incluye sync de borrado a produccion).
credentials, await pythonPost("/api/cms/delete-upload", {
"deleteRecordUpload", project: projectSlug,
{ uploadId }, uploadId,
credentials.token, table: tableName,
credentials.tokenHash });
);
// Step 2: Upload new image // Paso 2: subir el nuevo via Python (incluye sync a produccion + truncado local).
// Si la URL es local, descargar y enviar base64 (el servidor remoto no result = await pythonPost("/api/cms/upload-to-field", {
// puede descargarla en modo produccion). project: projectSlug,
const localFile = await resolveLocalImageAsBase64(imageUrl); table: tableName,
const uploadPayload = localFile num: recordId,
? { tableName, recordId, fieldName, alt, fileBase64: localFile.fileBase64, fileName: localFile.fileName } field: fieldName,
: { tableName, recordId, fieldName, imageUrl, alt }; imageUrl: imageUrl,
});
} catch (pyErr) {
// Fallback al flujo directo PHP solo cuando el Python no es accesible.
// En este path queda el bug original (sin sync a produccion en modo test),
// pero es preferible a fallar el tool entero.
console.error(`[replace_record_image] Python server failed (${pyErr.message}), falling back to PHP direct`);
const credentials = await getSessionCredentials(extra.sessionId);
await mcpPost(
credentials,
"deleteRecordUpload",
{ uploadId },
credentials.token,
credentials.tokenHash
);
const localFile = await resolveLocalImageAsBase64(imageUrl);
const uploadPayload = localFile
? { tableName, recordId, fieldName, alt, fileBase64: localFile.fileBase64, fileName: localFile.fileName }
: { tableName, recordId, fieldName, imageUrl, alt };
const response = await mcpPost(
credentials,
"uploadRecordImage",
uploadPayload,
credentials.token,
credentials.tokenHash
);
const apiError = handleApiResponse(response.data, 'replace_record_image');
if (apiError) return apiError;
result = { success: true, data: response.data };
}
const response = await mcpPost( if (!result?.success && !result?.data?.success) {
credentials, const errMsg = result?.error || result?.data?.error || "Unknown error";
"uploadRecordImage", return { content: [{ type: "text", text: JSON.stringify({ error: errMsg }, null, 2) }], isError: true };
uploadPayload, }
credentials.token,
credentials.tokenHash
);
const apiError = handleApiResponse(response.data, 'replace_record_image');
if (apiError) return apiError;
const replaceData = result.data || result;
return { return {
content: [{ content: [{
type: "text", type: "text",
@@ -291,7 +315,7 @@ export function registerUploadRecordImageTool(server) {
recordId, recordId,
fieldName, fieldName,
replacedUploadId: uploadId, replacedUploadId: uploadId,
...response.data ...replaceData,
}, null, 2) }, null, 2)
}], }],
}; };