"""里程碑路由。""" 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.milestone import MilestoneTree from app.models.user import User from app.schemas.common import ApiResponse, success from app.services.milestone_agent import suggest_path_switch router = APIRouter(prefix="/milestones", tags=["milestones"]) @router.get("", response_model=ApiResponse[list]) async def list_milestones(company_id: str = Query(...), db: AsyncSession = Depends(get_db), user: User = Depends(get_current_user)): """获取里程碑树。""" result = await db.execute( select(MilestoneTree).where(MilestoneTree.company_id == company_id) ) items = result.scalars().all() return success(data=[ { "id": str(i.id), "company_id": str(i.company_id), "name": i.name, "parent_id": i.parent_id, "is_current": i.is_current, "status": i.status, "target_date": i.target_date.isoformat() if i.target_date else None, "actual_date": i.actual_date.isoformat() if i.actual_date else None, "description": i.description, "ai_analysis": i.ai_analysis, } for i in items ]) @router.post("/suggest-switch", response_model=ApiResponse[dict]) async def suggest_switch(req: dict, user: User = Depends(get_current_user)): """AI 建议路径切换。""" result = await suggest_path_switch(req.get("milestone_context", ""), req.get("env_changes", "")) return success(data=result)