huibao/backend/cleanup_analysis.py

50 lines
1.7 KiB
Python
Raw Permalink Normal View History

"""
清理所有分析内容删除提取和分析结果重置报告状态
用于重新手动分析
"""
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())