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