update pay function

This commit is contained in:
2025-11-30 17:18:05 +08:00
parent 25c3d9d828
commit 9d9d3430b7

View File

@@ -240,6 +240,60 @@ export const MarkdownWithCharts = ({ content, variant = 'auto' }) => {
// 移除可能的前后空白和不可见字符
cleanContent = cleanContent.replace(/^\s+|\s+$/g, '');
// 检查 JSON 是否完整并尝试修复
// 使用栈来跟踪括号,确保正确的闭合顺序
const stack = [];
let inString = false;
let escape = false;
for (let i = 0; i < cleanContent.length; i++) {
const char = cleanContent[i];
if (escape) {
escape = false;
continue;
}
if (char === '\\' && inString) {
escape = true;
continue;
}
if (char === '"') {
inString = !inString;
continue;
}
if (inString) continue;
if (char === '{' || char === '[') {
stack.push(char);
} else if (char === '}') {
if (stack.length > 0 && stack[stack.length - 1] === '{') {
stack.pop();
}
} else if (char === ']') {
if (stack.length > 0 && stack[stack.length - 1] === '[') {
stack.pop();
}
}
}
// 如果栈不为空,说明有未闭合的括号,需要补全
if (stack.length > 0) {
logger.warn('检测到不完整的 ECharts JSON尝试修复', {
unclosed: stack.join(''),
});
// 按照栈的逆序补全闭合括号
while (stack.length > 0) {
const open = stack.pop();
cleanContent += open === '{' ? '}' : ']';
}
logger.info('ECharts JSON 已修复');
}
// 尝试解析 JSON
const chartOption = JSON.parse(cleanContent);