const fs = require('fs');

const file = 'src/modules/book-generator/langgraph-generator.ts';
let content = fs.readFileSync(file, 'utf8');

// 修复1：添加双重转义处理
const fix1 = `    // 调试：打印前80个字符
    console.log('[SubsectionParser] 原始前80字符:', JSON.stringify(cleanedStr.substring(0, 80)));

    // 处理双重转义：将 \\n 转换为 \n，\\t 转换为 \t 等
    cleanedStr = cleanedStr.replace(/\\\\n/g, '\\n').replace(/\\\\t/g, '\\t').replace(/\\\\r/g, '\\r');

    // 清理 JSON 字符串中的非法控制字符`;

content = content.replace(
  `    // 调试：打印前80个字符
    console.log('[SubsectionParser] 原始前80字符:', JSON.stringify(cleanedStr.substring(0, 80)));

    // 清理 JSON 字符串中的非法控制字符`,
  fix1
);

// 修复2：添加正则提取容错
const fix2 = `      } catch (parseErr) {
        // 尝试使用正则提取 subsections 数组
        console.log('[SubsectionParser] 首次解析失败，尝试正则提取');
        const subsectionsMatch = jsonCandidate.match(/"subsections"\\s*:\\s*(\\[[\\s\\S]*\\])/);
        if (subsectionsMatch) {
          try {
            const subsectionsJson = subsectionsMatch[1];
            data = { subsections: JSON.parse(subsectionsJson) };
          } catch (e) {
            console.error('[SubsectionParser] 正则提取后解析仍失败:', e);
            return null;
          }
        } else {
          console.error('[SubsectionParser] JSON 解析失败:', parseErr);
          return null;
        }
      }`;

content = content.replace(
  `      } catch (parseErr) {
        console.error('[SubsectionParser] JSON 解析失败:', parseErr);
        return null;
      }`,
  fix2
);

fs.writeFileSync(file, content, 'utf8');
console.log('✅ parseSubsections 修复完成');
