"""AI 报告路由 —— 手动触发报告生成与飞书推送""" from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from database import get_db from models import User from auth import require_permission router = APIRouter(prefix="/api/reports", tags=["AI报告"]) @router.post("/daily") async def trigger_daily_report( db: Session = Depends(get_db), current_user: User = Depends(require_permission("dashboard:view")), ): """手动触发日报生成并推送飞书""" from services.report_service import generate_daily_report from services.feishu_service import feishu report = generate_daily_report(db) push_result = await feishu.send_report_to_all(report["title"], report["content"]) return { "message": "日报生成并推送完成", "title": report["title"], "content": report["content"], "push_result": push_result, } @router.post("/weekly") async def trigger_weekly_report( db: Session = Depends(get_db), current_user: User = Depends(require_permission("dashboard:view")), ): """手动触发周报生成并推送飞书""" from services.report_service import generate_weekly_report from services.feishu_service import feishu report = generate_weekly_report(db) push_result = await feishu.send_report_to_all(report["title"], report["content"]) return { "message": "周报生成并推送完成", "title": report["title"], "content": report["content"], "push_result": push_result, } @router.post("/monthly") async def trigger_monthly_report( db: Session = Depends(get_db), current_user: User = Depends(require_permission("dashboard:view")), ): """手动触发月报生成并推送飞书""" from services.report_service import generate_monthly_report from services.feishu_service import feishu report = generate_monthly_report(db) push_result = await feishu.send_report_to_all(report["title"], report["content"]) return { "message": "月报生成并推送完成", "title": report["title"], "content": report["content"], "push_result": push_result, } @router.post("/preview/{report_type}") async def preview_report( report_type: str, db: Session = Depends(get_db), current_user: User = Depends(require_permission("dashboard:view")), ): """预览报告内容(不推送飞书)""" from services.report_service import ( generate_daily_report, generate_weekly_report, generate_monthly_report, ) generators = { "daily": generate_daily_report, "weekly": generate_weekly_report, "monthly": generate_monthly_report, } generator = generators.get(report_type) if not generator: return {"error": f"不支持的报告类型: {report_type},可选: daily, weekly, monthly"} report = generator(db) return { "title": report["title"], "content": report["content"], "data": report.get("data"), } @router.get("/risks") def get_project_risks( db: Session = Depends(get_db), current_user: User = Depends(require_permission("dashboard:view")), ): """获取当前所有项目风险预警""" from services.report_service import analyze_project_risks return analyze_project_risks(db)