2026-09-12 20:42:33 +08:00
|
|
|
"""投后服务路由(回访/话术库/触达日志,业务在 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
|
2026-09-13 16:19:24 +08:00
|
|
|
from schemas.advisor import VisitCreateReq, VisitUpdateReq
|
2026-09-12 20:42:33 +08:00
|
|
|
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),
|
2026-09-13 22:21:49 +08:00
|
|
|
page_size: int = Query(10, ge=1, le=100),
|
2026-09-12 20:42:33 +08:00
|
|
|
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))
|
|
|
|
|
|
|
|
|
|
|
2026-09-13 16:19:24 +08:00
|
|
|
@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))
|
|
|
|
|
|
|
|
|
|
|
2026-09-12 20:42:33 +08:00
|
|
|
@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),
|
2026-09-13 22:21:49 +08:00
|
|
|
page_size: int = Query(10, ge=1, le=100),
|
2026-09-12 20:42:33 +08:00
|
|
|
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
|
|
|
|
|
)
|
|
|
|
|
)
|