EENE Dashboard upload to Gitea
This commit is contained in:
54
backend/scripts/cleanup-legacy-task-details.ts
Normal file
54
backend/scripts/cleanup-legacy-task-details.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
/**
|
||||
* HR import 시 TaskDetail(피드백)에 잘못 들어간 progressStatus 레거시 삭제
|
||||
* — milestoneId 없고 authorName 없는 행 (seed 자동 생성분)
|
||||
*
|
||||
* npx tsx scripts/cleanup-legacy-task-details.ts
|
||||
* npx tsx scripts/cleanup-legacy-task-details.ts --dry-run
|
||||
*/
|
||||
import 'dotenv/config';
|
||||
import { PrismaClient } from '@prisma/client';
|
||||
|
||||
const prisma = new PrismaClient();
|
||||
const dryRun = process.argv.includes('--dry-run');
|
||||
|
||||
async function main() {
|
||||
const legacy = await prisma.taskDetail.findMany({
|
||||
where: {
|
||||
milestoneId: null,
|
||||
OR: [{ authorName: null }, { authorName: '' }],
|
||||
},
|
||||
include: { task: { select: { title: true } } },
|
||||
orderBy: { createdAt: 'asc' },
|
||||
});
|
||||
|
||||
if (legacy.length === 0) {
|
||||
console.log('✅ 삭제할 레거시 피드백 없음');
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(`레거시 TaskDetail ${legacy.length}건 (일정 미연결 · 작성자 없음):`);
|
||||
for (const row of legacy) {
|
||||
const preview = row.content.replace(/\s+/g, ' ').slice(0, 72);
|
||||
console.log(` · [${row.task.title}] ${preview}${row.content.length > 72 ? '…' : ''}`);
|
||||
}
|
||||
|
||||
if (dryRun) {
|
||||
console.log('\n(dry-run — 삭제하지 않음. 적용: npx tsx scripts/cleanup-legacy-task-details.ts)');
|
||||
return;
|
||||
}
|
||||
|
||||
const result = await prisma.taskDetail.deleteMany({
|
||||
where: {
|
||||
id: { in: legacy.map((r) => r.id) },
|
||||
},
|
||||
});
|
||||
|
||||
console.log(`\n✅ ${result.count}건 삭제 완료`);
|
||||
}
|
||||
|
||||
main()
|
||||
.catch((err) => {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
})
|
||||
.finally(() => prisma.$disconnect());
|
||||
Reference in New Issue
Block a user