"""产品竞争力诊断路由。""" from fastapi import APIRouter, Depends, Query from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.core.database import get_db from app.core.dependencies import get_current_user from app.models.product_diagnostic import ProductDiagnostic from app.models.user import User from app.schemas.common import ApiResponse, success from app.services.product_diagnostic_agent import diagnose_product router = APIRouter(prefix="/product-diagnostics", tags=["product-diagnostics"]) @router.get("", response_model=ApiResponse[list]) async def list_diagnostics(company_id: str | None = Query(default=None), db: AsyncSession = Depends(get_db), user: User = Depends(get_current_user)): """获取产品诊断列表。""" query = select(ProductDiagnostic) if company_id: query = query.where(ProductDiagnostic.company_id == company_id) result = await db.execute(query.order_by(ProductDiagnostic.created_at.desc())) items = result.scalars().all() return success(data=[ { "id": str(i.id), "company_id": str(i.company_id), "product_name": i.product_name, "dimensions": i.dimensions, "heatmap_data": i.heatmap_data, "competitors": i.competitors, "roadmap_suggestions": i.roadmap_suggestions, } for i in items ]) @router.post("/diagnose", response_model=ApiResponse[dict]) async def diagnose(req: dict, user: User = Depends(get_current_user)): """AI 产品竞争力诊断。""" result = await diagnose_product(req.get("product_info", ""), req.get("competitor_info", "")) return success(data=result)