"""投后服务路由(回访/话术库/触达日志,业务在 service/advisor/visits.py)。""" from fastapi import APIRouter, Depends, Query from sqlalchemy.ext.asyncio import AsyncSession from api.deps import require_advisor from config.deps import get_db from model.sys_user import SysUser from schemas.advisor import VisitCreateReq, VisitUpdateReq from service.advisor import visits as visits_service from utils.response import success router = APIRouter() @router.get("/visits", summary="回访记录列表") async def list_visits( customer_id: int | None = Query(None), page: int = Query(1, ge=1), page_size: int = Query(10, ge=1, le=100), user: SysUser = Depends(require_advisor), db: AsyncSession = Depends(get_db), ): return success( await visits_service.list_visits( db, user, customer_id=customer_id, page=page, page_size=page_size ) ) @router.post("/visits", summary="新增回访留痕(不触发 Agent 记忆抽取)") async def create_visit( req: VisitCreateReq, user: SysUser = Depends(require_advisor), db: AsyncSession = Depends(get_db), ): return success(await visits_service.create_visit(db, user, req)) @router.get("/visits/{visit_id}", summary="回访记录详情") async def get_visit( visit_id: int, user: SysUser = Depends(require_advisor), db: AsyncSession = Depends(get_db), ): return success(await visits_service.get_visit(db, user, visit_id)) @router.put("/visits/{visit_id}", summary="编辑回访留痕") async def update_visit( visit_id: int, req: VisitUpdateReq, user: SysUser = Depends(require_advisor), db: AsyncSession = Depends(get_db), ): return success(await visits_service.update_visit(db, user, visit_id, req)) @router.get("/talk-templates", summary="合规话术库(内置,投顾参考)") async def talk_templates(user: SysUser = Depends(require_advisor)): return success(visits_service.list_talk_templates()) @router.get("/touch-logs", summary="触达留痕(站内信 + 回访)") async def touch_logs( customer_id: int = Query(...), page: int = Query(1, ge=1), page_size: int = Query(10, ge=1, le=100), user: SysUser = Depends(require_advisor), db: AsyncSession = Depends(get_db), ): return success( await visits_service.list_touch_logs( db, user, customer_id, page=page, page_size=page_size ) )