主要更新: - 更新所有12个产业的教务系统数据和功能 - 删除所有 node_modules 文件夹(节省3.7GB) - 删除所有 .yoyo 缓存文件夹(节省1.2GB) - 删除所有 dist 构建文件(节省55MB) 项目优化: - 项目大小从 8.1GB 减少到 3.2GB(节省60%空间) - 保留完整的源代码和配置文件 - .gitignore 已配置,防止再次提交大文件 启动脚本: - start-industry.sh/bat/ps1 脚本会自动检测并安装依赖 - 首次启动时自动运行 npm install - 支持单个或批量启动产业系统 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
112 lines
3.2 KiB
JavaScript
112 lines
3.2 KiB
JavaScript
#!/usr/bin/env node
|
||
|
||
const fs = require('fs');
|
||
|
||
// Create backup
|
||
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, -5);
|
||
const backupPath = `src/mocks/resumeInterviewMock.js.backup_${timestamp}_correct_clean`;
|
||
const originalContent = fs.readFileSync('src/mocks/resumeInterviewMock.js', 'utf-8');
|
||
fs.writeFileSync(backupPath, originalContent);
|
||
console.log(`✓ Backup created: ${backupPath}`);
|
||
|
||
// Function to clean indentation from text
|
||
function cleanIndentation(text) {
|
||
const lines = text.split('\n');
|
||
const cleanedLines = lines.map(line => {
|
||
// Remove all leading whitespace (spaces and tabs)
|
||
return line.replace(/^[\s\t]+/, '');
|
||
});
|
||
return cleanedLines.join('\n');
|
||
}
|
||
|
||
let totalCount = 0;
|
||
let updatedContent = originalContent;
|
||
|
||
// Use a more specific regex that handles multi-line content
|
||
const regex = /"answer":\s*"((?:[^"\\]|\\.)*)"/g;
|
||
let match;
|
||
|
||
const replacements = [];
|
||
|
||
while ((match = regex.exec(originalContent)) !== null) {
|
||
const fullMatch = match[0];
|
||
const answerContent = match[1];
|
||
|
||
// Unescape the content
|
||
let unescaped = answerContent
|
||
.replace(/\\n/g, '\n')
|
||
.replace(/\\"/g, '"')
|
||
.replace(/\\\\/g, '\\');
|
||
|
||
// Clean indentation
|
||
let cleaned = cleanIndentation(unescaped);
|
||
|
||
// Re-escape for JSON
|
||
let escaped = cleaned
|
||
.replace(/\\/g, '\\\\')
|
||
.replace(/"/g, '\\"')
|
||
.replace(/\n/g, '\\n');
|
||
|
||
const newMatch = `"answer": "${escaped}"`;
|
||
|
||
replacements.push({
|
||
original: fullMatch,
|
||
replacement: newMatch
|
||
});
|
||
|
||
totalCount++;
|
||
}
|
||
|
||
// Apply all replacements
|
||
replacements.forEach(({ original, replacement }) => {
|
||
updatedContent = updatedContent.replace(original, replacement);
|
||
});
|
||
|
||
console.log(`\n✅ Processed ${totalCount} answer fields`);
|
||
|
||
// Save the file
|
||
fs.writeFileSync('src/mocks/resumeInterviewMock.js', updatedContent);
|
||
|
||
// Verify syntax
|
||
const { execSync } = require('child_process');
|
||
try {
|
||
execSync('node -c src/mocks/resumeInterviewMock.js', { encoding: 'utf-8' });
|
||
console.log('✅ Syntax validation passed');
|
||
|
||
// Verify the changes
|
||
console.log('\n📋 Verification of cleaned answers:\n');
|
||
|
||
// Check a few samples
|
||
const sampleRegex = /"answer":\s*"([^"]*?阶段[^"]{0,400})"/;
|
||
const sampleMatch = updatedContent.match(sampleRegex);
|
||
|
||
if (sampleMatch) {
|
||
const sample = sampleMatch[1].replace(/\\n/g, '\n').substring(0, 500);
|
||
console.log('Sample answer (should have NO leading spaces):');
|
||
console.log('═'.repeat(60));
|
||
console.log(sample);
|
||
console.log('═'.repeat(60));
|
||
|
||
// Check each line for indentation
|
||
const lines = sample.split('\n');
|
||
let hasIndentation = false;
|
||
lines.forEach((line, idx) => {
|
||
if (line.match(/^[\s\t]+/)) {
|
||
hasIndentation = true;
|
||
console.log(`Line ${idx + 1} still has indentation: "${line.substring(0, 40)}..."`);
|
||
}
|
||
});
|
||
|
||
if (!hasIndentation) {
|
||
console.log('\n✅ SUCCESS: All indentation has been removed!');
|
||
} else {
|
||
console.log('\n⚠️ WARNING: Some lines still have indentation');
|
||
}
|
||
}
|
||
|
||
} catch (error) {
|
||
console.error('❌ Syntax error detected, restoring backup...');
|
||
fs.writeFileSync('src/mocks/resumeInterviewMock.js', originalContent);
|
||
console.log('Backup restored');
|
||
console.error('Error:', error.message);
|
||
} |