Files

76 lines
2.4 KiB
Python
Raw Permalink Normal View History

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
)
)