""" 清理所有分析内容:删除提取和分析结果,重置报告状态 用于重新手动分析 """ import asyncio import sys sys.path.insert(0, ".") from app.database import AsyncSessionLocal, init_db from app.models import Report, ExtractedContent, AnalysisResult, AnalysisStatus from sqlalchemy import select, delete async def cleanup_analysis(): print("=" * 60) print("清理所有分析内容") print("=" * 60) await init_db() async with AsyncSessionLocal() as db: # 1. 删除所有分析结果 result = await db.execute(delete(AnalysisResult)) analysis_count = result.rowcount print(f"✓ 删除了 {analysis_count} 条分析结果") # 2. 删除所有提取内容 result = await db.execute(delete(ExtractedContent)) extracted_count = result.rowcount print(f"✓ 删除了 {extracted_count} 条提取内容") # 3. 重置报告分析状态(但保留is_extracted,防止定时任务重新触发) stmt = select(Report) result = await db.execute(stmt) reports = result.scalars().all() for report in reports: # 保持 is_extracted = True,这样定时任务不会重新处理 report.is_analyzed = False report.analysis_status = AnalysisStatus.PENDING.value await db.commit() print(f"✓ 重置了 {len(reports)} 份报告的分析状态(保留提取状态)") print("\n" + "=" * 60) print("清理完成!所有报告现在都可以手动点击分析") print("=" * 60) if __name__ == "__main__": asyncio.run(cleanup_analysis())