Update README and project cleanup
This commit is contained in:
94
scripts/fix-duplicate-category.js
Normal file
94
scripts/fix-duplicate-category.js
Normal file
@@ -0,0 +1,94 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* 修复分类重复问题
|
||||
* 1. 删除"用户身份标签"分类及其所有标签和关系
|
||||
* 2. 把"家庭角色"移到第一个位置
|
||||
* 3. 调整其他分类的sort_order
|
||||
*/
|
||||
|
||||
const Database = require('better-sqlite3');
|
||||
const path = require('path');
|
||||
|
||||
const dbPath = path.join(__dirname, '../dmp_onion.db');
|
||||
const db = new Database(dbPath);
|
||||
|
||||
console.log('\n╔════════════════════════════════════════════════════════════════╗');
|
||||
console.log('║ 🔧 修复分类重复问题 ║');
|
||||
console.log('╚════════════════════════════════════════════════════════════════╝\n');
|
||||
|
||||
try {
|
||||
// 1. 获取用户身份标签的所有标签ID
|
||||
console.log('1️⃣ 获取\"用户身份标签\"的所有标签...');
|
||||
const tagIds = db.prepare('SELECT id FROM tags WHERE category_id = 33').all();
|
||||
console.log(` 找到 ${tagIds.length} 个标签`);
|
||||
|
||||
// 2. 删除相关的user_tags关系
|
||||
console.log('\n2️⃣ 删除user_tags关系...');
|
||||
const stmt = db.prepare('DELETE FROM user_tags WHERE tag_id = ?');
|
||||
let relDeleted = 0;
|
||||
for (const tag of tagIds) {
|
||||
const result = stmt.run(tag.id);
|
||||
relDeleted += result.changes;
|
||||
}
|
||||
console.log(` 删除了 ${relDeleted} 条关系`);
|
||||
|
||||
// 3. 删除tags
|
||||
console.log('\n3️⃣ 删除标签...');
|
||||
const tagDeleteResult = db.prepare('DELETE FROM tags WHERE category_id = 33').run();
|
||||
console.log(` 删除了 ${tagDeleteResult.changes} 个标签`);
|
||||
|
||||
// 4. 删除分类
|
||||
console.log('\n4️⃣ 删除分类...');
|
||||
const catDeleteResult = db.prepare('DELETE FROM tag_categories WHERE id = 33').run();
|
||||
console.log(` 删除了 ${catDeleteResult.changes} 个分类`);
|
||||
|
||||
// 5. 更新家庭角色的sort_order到0
|
||||
console.log('\n5️⃣ 更新\"家庭角色\"的位置...');
|
||||
db.prepare('UPDATE tag_categories SET sort_order = 0 WHERE id = 46').run();
|
||||
console.log(' ✓ 家庭角色现在排在第一位');
|
||||
|
||||
// 6. 重新调整其他分类的sort_order
|
||||
console.log('\n6️⃣ 重新调整其他分类的顺序...');
|
||||
const categories = db.prepare('SELECT id, key, name, sort_order FROM tag_categories ORDER BY sort_order').all();
|
||||
|
||||
let newOrder = 0;
|
||||
for (const cat of categories) {
|
||||
if (cat.id === 46) continue; // 家庭角色已经是0
|
||||
if (cat.sort_order !== newOrder) {
|
||||
db.prepare('UPDATE tag_categories SET sort_order = ? WHERE id = ?').run(newOrder, cat.id);
|
||||
}
|
||||
newOrder++;
|
||||
}
|
||||
console.log(` ✓ 调整了 ${newOrder} 个分类`);
|
||||
|
||||
// 7. 显示最终结果
|
||||
console.log('\n7️⃣ 最终分类列表:');
|
||||
const finalCats = db.prepare('SELECT id, key, name, sort_order FROM tag_categories ORDER BY sort_order').all();
|
||||
for (const cat of finalCats) {
|
||||
console.log(` ${cat.sort_order + 1}. ${cat.name} (ID:${cat.id})`);
|
||||
}
|
||||
|
||||
// 8. 统计数据
|
||||
console.log('\n📊 数据统计:');
|
||||
const stats = db.prepare(`
|
||||
SELECT
|
||||
(SELECT COUNT(*) FROM users) as 总用户,
|
||||
(SELECT COUNT(*) FROM tags) as 总标签,
|
||||
(SELECT COUNT(*) FROM tag_categories) as 分类数,
|
||||
(SELECT COUNT(*) FROM user_tags) as 总关系
|
||||
`).get();
|
||||
|
||||
console.log(` • 总用户: ${stats.总用户}`);
|
||||
console.log(` • 总标签: ${stats.总标签}`);
|
||||
console.log(` • 分类数: ${stats.分类数} (从16减少到15)`);
|
||||
console.log(` • 总关系: ${stats.总关系}`);
|
||||
|
||||
console.log('\n✅ 修复完成!\n');
|
||||
|
||||
} catch (e) {
|
||||
console.error('❌ 错误:', e.message);
|
||||
process.exit(1);
|
||||
} finally {
|
||||
db.close();
|
||||
}
|
||||
Reference in New Issue
Block a user