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())
|