huibao/backend/cleanup_analysis.py

50 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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