dingdanquanliucheng/backend/app/api/routes.py
wsb1224 1d12d061e0 接入微信服务号模板消息,修复通知链路重复发送和静默失败
小程序订阅消息每订阅一次只能发一条,用户无法持续收到通知。改为接入微信
服务号模板消息,用户关注服务号后可无限次接收推送通知。

新增功能:
- ServiceAccountNotificationService:服务号模板消息发送服务
- 服务号事件回调(subscribe/unsubscribe)+ 手机号验证绑定流程
- PendingServiceBinding 模型:存储关注者的 openid 待绑定记录
- 小程序 bind-service 页面:输入手机号完成绑定
- 三个详情页(审批/任务/发厂)增加"绑定微信通知"入口
- web-sales NotificationBell 增加服务号关注引导
- web-admin SystemPage/ConfigPage 增加服务号绑定状态和模板配置展示

修复问题:
- EventBus 和 _notify_status_change 重复发送微信消息(业务员收到2条)
- EventBus order_status_changed 事件缺少模板映射导致微信通知静默丢失
- 所有微信发送失败被 except Exception: pass 静默吞掉,增加日志
- 定时任务(欠款/沉默客户/物流超时)不触发 WebSocket 实时通知
- reminder_method 配置未生效

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-23 17:17:06 +08:00

56 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
API 总路由注册模块
职责:
创建全局 APIRouter 实例api_router并按顺序挂载各业务子路由
- 基础路由(健康检查等)
- 认证、订单、销售流程、客户、产品、供应商
- 物流、文件、AI、提醒、业务员、报表
- 系统配置、定价、审计日志、系统管理
该模块被 FastAPI 应用主入口引用,是所有 HTTP 接口的统一入口。
"""
from fastapi import APIRouter
from backend.app.api.ai import router as ai_router
from backend.app.api.audit_logs import router as audit_logs_router
from backend.app.api.auth import router as auth_router
from backend.app.api.configs import router as configs_router
from backend.app.api.customers import router as customers_router
from backend.app.api.files import router as files_router
from backend.app.api.h5_bind_service import router as h5_bind_router
from backend.app.api.logistics import router as logistics_router
from backend.app.api.orders import router as orders_router
from backend.app.api.pricing import router as pricing_router
from backend.app.api.sales_flow import router as sales_flow_router
from backend.app.api.products import router as products_router
from backend.app.api.reminders import router as reminders_router
from backend.app.api.reports import router as reports_router
from backend.app.api.salesman import router as salesman_router
from backend.app.api.router import router as base_router
from backend.app.api.suppliers import router as suppliers_router
from backend.app.api.system import router as system_router
from backend.app.api.wechat_callback import router as wechat_callback_router
# 全局 API 路由实例,挂载到 FastAPI 应用
api_router = APIRouter()
api_router.include_router(base_router)
api_router.include_router(auth_router)
api_router.include_router(wechat_callback_router)
api_router.include_router(h5_bind_router)
api_router.include_router(orders_router)
api_router.include_router(sales_flow_router)
api_router.include_router(customers_router)
api_router.include_router(products_router)
api_router.include_router(suppliers_router)
api_router.include_router(logistics_router)
api_router.include_router(files_router)
api_router.include_router(ai_router)
api_router.include_router(reminders_router)
api_router.include_router(salesman_router)
api_router.include_router(reports_router)
api_router.include_router(configs_router)
api_router.include_router(pricing_router)
api_router.include_router(audit_logs_router)
api_router.include_router(system_router)