69 lines
2.4 KiB
Python
69 lines
2.4 KiB
Python
|
|
"""
|
|||
|
|
强制触发深度AI分析,并实时打印进度
|
|||
|
|
"""
|
|||
|
|
import asyncio
|
|||
|
|
import sys
|
|||
|
|
import logging
|
|||
|
|
sys.path.insert(0, ".")
|
|||
|
|
|
|||
|
|
# 配置日志输出到控制台
|
|||
|
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s | %(levelname)s | %(message)s')
|
|||
|
|
|
|||
|
|
from app.database import AsyncSessionLocal, init_db
|
|||
|
|
from app.models import Report
|
|||
|
|
from app.services.ai_analyzer import ai_analyzer
|
|||
|
|
from app.services.pdf_extractor import pdf_extractor
|
|||
|
|
from sqlalchemy import select
|
|||
|
|
|
|||
|
|
from sqlalchemy.orm import selectinload
|
|||
|
|
|
|||
|
|
async def force_analyze_latest():
|
|||
|
|
print("=" * 60)
|
|||
|
|
print("🚀 强制启动深度AI分析 (电商实战版)")
|
|||
|
|
print("=" * 60)
|
|||
|
|
|
|||
|
|
await init_db()
|
|||
|
|
|
|||
|
|
async with AsyncSessionLocal() as db:
|
|||
|
|
# 1. 找一份报告(优先找博士眼镜,因为是标杆)
|
|||
|
|
stmt = select(Report).where(Report.title.like("%2024年半年度报告%")) \
|
|||
|
|
.options(selectinload(Report.company)) \
|
|||
|
|
.limit(1)
|
|||
|
|
result = await db.execute(stmt)
|
|||
|
|
report = result.scalar_one_or_none()
|
|||
|
|
|
|||
|
|
if not report:
|
|||
|
|
print("✗ 未找到目标报告")
|
|||
|
|
return
|
|||
|
|
|
|||
|
|
print(f"📄 目标报告: {report.title} (ID: {report.id})")
|
|||
|
|
print(f"🏢 所属公司: {report.company.short_name}")
|
|||
|
|
|
|||
|
|
# 2. 提取内容
|
|||
|
|
if not report.is_extracted:
|
|||
|
|
print("\n[阶段1] 正在提取PDF内容...")
|
|||
|
|
contents = await pdf_extractor.extract_and_save(db, report)
|
|||
|
|
print(f"✓ 提取到 {len(contents)} 个关键章节")
|
|||
|
|
else:
|
|||
|
|
print("\n[阶段1] 内容已提取,跳过")
|
|||
|
|
|
|||
|
|
# 3. 强制分析
|
|||
|
|
print("\n[阶段2] 正在进行AI深度分析...")
|
|||
|
|
print(" 正在挖掘【分销渠道】、【新品类】、【数字化】线索...")
|
|||
|
|
print(" (由于分析维度较多,大约需要 1-2 分钟,请耐心等待...)")
|
|||
|
|
|
|||
|
|
# 强制重置状态以触发重新分析
|
|||
|
|
report.is_analyzed = False
|
|||
|
|
await db.commit()
|
|||
|
|
|
|||
|
|
success = await ai_analyzer.analyze_report(db, report)
|
|||
|
|
|
|||
|
|
if success:
|
|||
|
|
print("\n✅ 分析完成!")
|
|||
|
|
print("请在前端刷新页面查看《电商突围与数字化内参》")
|
|||
|
|
else:
|
|||
|
|
print("\n✗ 分析失败,请检查后端日志")
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
asyncio.run(force_analyze_latest())
|