dingdanquanliucheng/backend/app/api/reminders.py
taiyi b2a9c94c45 轮完成内容
前端新增 业务员工作台

路由:/salesman
覆盖:
快速录单
个人订单列表
提醒待办处理
新客户识别提示
后端新增业务员工作台接口

新增 backend/app/api/salesman.py
新接口:
GET /api/salesman/dashboard
返回:
业务员订单列表
业务员提醒列表
汇总统计
后端路由注册

已接入 API 路由
导航同步

增加 业务员工作台
清单同步更新

业务员端完整支持
完整业务员录单页面
完整查单页面
提醒处理页面
lint 检查通过,没有报错
2026-05-21 17:51:35 +08:00

100 lines
3.2 KiB
Python

from fastapi import APIRouter, Depends, Query
from sqlalchemy.orm import Session
from backend.app.api.deps import require_roles
from backend.app.db import get_db_session
from backend.app.schemas.common import success_payload
from backend.app.services.reminder_service import reminder_service
router = APIRouter(prefix="/api/reminders", tags=["reminders"])
@router.get("")
def list_reminders(
reminder_type: str | None = Query(default=None),
status: str | None = Query(default=None),
receiver_user_id: int | None = Query(default=None),
page_no: int = Query(default=1),
page_size: int = Query(default=20),
session: Session = Depends(get_db_session),
current_user: dict = Depends(require_roles("salesman", "manager", "admin")),
) -> dict:
return success_payload(
reminder_service.list_reminders(
session,
{
"reminder_type": reminder_type,
"status": status,
"receiver_user_id": receiver_user_id,
"page_no": page_no,
"page_size": page_size,
},
)
)
@router.get("/dashboard")
def reminder_dashboard(
session: Session = Depends(get_db_session),
current_user: dict = Depends(require_roles("salesman", "manager", "admin")),
) -> dict:
reminders = reminder_service.list_reminders(
session,
{
"page_no": 1,
"page_size": 200,
},
)
return success_payload(
{
"summary": {
"total": reminders["total"],
"pending": len([item for item in reminders["list"] if item["status"] == "pending"]),
"read": len([item for item in reminders["list"] if item["status"] == "read"]),
},
"list": reminders["list"],
"checked_at": "",
}
)
@router.post("/{reminder_id}/read")
def read_reminder(
reminder_id: int,
session: Session = Depends(get_db_session),
current_user: dict = Depends(require_roles("salesman", "manager", "admin")),
) -> dict:
return success_payload(reminder_service.read_reminder(reminder_id, session))
@router.post("/arrears/check")
def check_arrears_reminders(
session: Session = Depends(get_db_session),
current_user: dict = Depends(require_roles("manager", "admin")),
) -> dict:
return success_payload(reminder_service.check_arrears(session))
@router.post("/inactive-customers/check")
def check_inactive_customer_reminders(
session: Session = Depends(get_db_session),
current_user: dict = Depends(require_roles("manager", "admin")),
) -> dict:
return success_payload(reminder_service.check_inactive_customers(session))
@router.post("/logistics-timeout/check")
def check_logistics_timeout_reminders(
session: Session = Depends(get_db_session),
current_user: dict = Depends(require_roles("manager", "admin")),
) -> dict:
return success_payload(reminder_service.check_logistics_timeout(session))
@router.post("/check-all")
def check_all_reminders(
session: Session = Depends(get_db_session),
current_user: dict = Depends(require_roles("manager", "admin")),
) -> dict:
return success_payload(reminder_service.check_all(session))