智枢 · AI驱动的企业级售后服务与故障协同平台 文章目录1. 项目概述1.1 项目背景1.2 产品定位1.3 服务角色业务2. 整体技术架构3. 各模块功能总览1. auth — 认证授权2. ticket — 工单核心3. quotation — 服务报价4. order — 服务订单5. payment — 支付中心6. ai — AI 集成7. knowledge — 知识库8. statistics — 统计分析9. file — 文件上传10. user — 用户管理11. middleware — 中间件12. shared — 基础设施13. tasks — MQ 消费者4. Redis、RabbitMQ、Elasticsearch使用场景4.1 Redis使用场景4.2 RabbitMQ使用场景1. 交换机2. 业务事件3. DLX 延迟消息原理4. 兜底机制4.3 Elasticsearch使用场景1. 索引2. 搜索3. 降级策略4. ES 初始化5. 项目核心业务流转图6. 项目总结1. 项目概述1.1 项目背景在企业IT外包、设备售后、技术支持等商业化服务场景中传统工单系统普遍存在服务计费混乱、流程断裂、管理黑盒等核心痛点故障上报渠道分散问题分类依赖人工经验响应效率低服务报价、订单、支付线下流转对账困难收费标准不透明现场服务易出现隐性故障追加费用流程不规范易产生纠纷同类问题重复处理历史经验难沉淀。1.2 产品定位「智枢」定位为AI驱动的商业化售后服务一体化平台以「工单协同为核心、AI智能辅助为亮点、服务计费为闭环」覆盖「报障→AI诊断→服务报价→订单支付→派单→工程师处理→知识库辅助→验收评价→AI总结沉淀」全链路为企业售后、IT外包、技术支持团队提供可落地、可量化、可盈利的完整解决方案。核心说明本项目核心是技术服务交付支付仅作为服务费用的结算环节主体是工单服务全生命周期管理并非实物商品交易。1.3 服务角色业务角色权限说明客户提交报修工单、查看报价、确认报价、支付订单、验收评分工程师接收派单、提交报价、受理工单、处理工单、提交报告、查看知识库、AI问答管理员全局工单管理、超时人工派单、用户管理、知识库审核、数据统计、审计日志2. 整体技术架构AI服务层消息队列层数据存储层后端服务层网关层前端层客户端 Vue 3Element Plus / Pinia端口: 5173工程师端 Vue 3Element Plus / Pinia端口: 5174管理端 Vue 3Element Plus / ECharts端口: 5175Nginx 反向代理80 端口对外FastAPI 应用认证 / 工单 / 报价 / 订单支付 / AI / 知识库 / 统计MySQL 8.03307 端口Redis 7.06379 端口Elasticsearch 8.109200 端口RabbitMQ 3.125672 端口管理界面: 15672Dify Cloud API故障诊断 / RAG问答/工单总结技术栈: FastAPI SQLAlchemy 2.0 异步 MySQL 8.0 RabbitMQ 3.12 Redis 7.0 Elasticsearch 8.10 Vue 3 TypeScript项目完成后通过Docker部署在阿里云ECS服务器上。3. 各模块功能总览1. auth — 认证授权功能说明密码登录用户名/手机号 密码短信登录手机号 阿里云短信验证码短信注册短信验证码 密码创建客户账号JWT Tokenaccess_token refresh_token 双令牌RBAC 鉴权get_current_userrequire_role(customer/engineer/admin)登出黑名单Token 加入 Redis 黑名单TTL 内不可用角色缓存用户角色信息 Redis 缓存 60s2. ticket — 工单核心功能说明客户创建工单POST /api/v1/tickets自动 AI 诊断 多方派单客户取消工单pending/quoting/quoted/paying 状态可取消客户验收评价confirming → completed评分 1-5 星工程师受理接受工单处理任务工程师处理日志逐条追加处理记录工程师保存/提交报告report 草稿 / submit 跳转 confirming管理员全局查询多维度筛选状态/优先级/搜索管理员手动派单manual_dispatch → 指定工程师 定价管理员关闭工单带原因关闭管理员状态跳转quoting/quoted → processing跳过报价/支付ES 搜索工单标题描述全文检索标题权重 x2状态机9 状态 × 角色权限矩阵state_machine.py3. quotation — 服务报价功能说明工程师创建主报价POST /api/v1/engineer/quotations工程师追加报价POST /api/v1/engineer/quotations/additional24h 超时作废工程师查看已报价我的报价列表工程师查看待报价待报价工单派单列表客户查看报价单个工单下所有报价客户选择报价select选定中标 其余 rejected客户确认报价confirm→ 锁定报价 生成订单客户驳回报价reject单条驳回状态机6 状态draft/pending/confirmed/locked/rejected/expired4. order — 服务订单功能说明自动生成订单客户确认报价后自动创建pending金额校验订单金额以服务端报价单为准管理员订单列表GET /api/v1/admin/orders订单详情含关联工单信息状态机4 状态pending/paid/cancelled/completed5. payment — 支付中心功能说明发起支付POST /api/v1/payment/create/{order_id}支持 wechat/alipayMock 支付开发环境自动触发回调支付回调微信/支付宝签名验证三重幂等Redis 分布式锁 pay_no 唯一索引 状态检查金额二次校验回调金额 vs 服务端订单金额Lua 锁释放仅持有者可释放 Redis 锁MQ 事件支付成功发布payment.success6. ai — AI 集成功能说明AI 故障诊断POST /api/v1/ai/diagnosis调 Dify 诊断工作流RAG 知识问答POST /api/v1/ai/rag/query工程师检索知识库AI 工单总结POST /api/v1/ai/summary/{ticket_id}工单关闭后生成总结双客户端Mock开发/测试 Dify Cloud生产降级策略AI 不可用时返回默认值不阻塞主流程任务记录ai_task表记录每次调用输入/输出/状态7. knowledge — 知识库功能说明文章 CRUD管理员创建/编辑/删除草稿审核AI 生成草稿 → 管理员审核 → 发布/驳回分类管理知识库分类 CRUDES 搜索全文检索优先 ES降级 MySQL LIKEES 同步发布/更新/删除时异步同步到 ES8. statistics — 统计分析功能说明概览统计工单总数/活跃数/完成数/总营收工单分布按状态 按优先级 GROUP BY工程师绩效TOP 20 解决工单数 评分财务统计总营收 订单总数Redis 缓存4 个端点均缓存 60s失败静默降级9. file — 文件上传功能说明上传POST /api/v1/files/upload本地磁盘存储查询按工单 ID 查附件列表删除同时删除磁盘文件MIME 校验白名单 魔法数字检测jpg/png/gif/webp10. user — 用户管理功能说明管理员 CRUD创建/编辑/重置密码/启用禁用工程师自助个人设置工程师画像rating/avg_resolve_time/total_resolved 增量更新11. middleware — 中间件中间件功能CORS跨域允许RequestID为每个请求分配唯一 ID日志请求/响应日志记录限流登录 5次/分钟、创建工单 10次/分钟、支付 10次/分钟DEBUG 跳过状态校验部分端点校验前置状态12. shared — 基础设施模块功能database.pySQLAlchemy 2.0 异步引擎 session 工厂redis.pyRedis 连接池 get_redis依赖注入rabbitmq.pyRabbitMQ 连接 交换机/队列声明elasticsearch.pyES 客户端初始化event_publisher.pyMQ 事件发布 DLX 延迟消息es_sync.pyES 异步同步发布工具publish_sync/index_document/delete_document/search_index/ensure_indexesresponse.py统一响应格式APIResponse.ok()/APIResponse.fail()audit.py审计日志写入write_auditsms.py阿里云短信发送客户端pagination.py分页工具13. tasks — MQ 消费者消费者消费队列功能ai_tasks.pyticket.createdAI 故障诊断 多方竞价派单ai_tasks.pyticket.closedAI 工单总结 知识库草稿payment_tasks.pypayment.success支付后绑定工程师 工单转 processingbid_tasks.pydispatch.timeout报价超时处理 2 分钟兜底扫描quotation_tasks.pyquotation.additional.created.expired追加报价 24h 超时调度 到期作废sync_tasks.pyes.sync.#ES 异步索引/删除文档consumer.py消费者入口统一连接 装饰器注册4. Redis、RabbitMQ、Elasticsearch使用场景4.1 Redis使用场景使用场景模块Key 模式TTL降级策略JWT 黑名单auth/dependenciestoken_blacklist:{sha256(token)}Token 到期Redis 不可用 → 放行JWT 过期机制兜底角色权限缓存auth/dependenciesrbac:role:{user_id}60sRedis 不可用 → 跳过缓存直接查 DB短信验证码auth/servicesms:code:{scene}:{phone}300sRedis 不可用 → 走阿里云 API 校验短信冷却auth/servicesms:cooldown:{scene}:{phone}60sRedis 不可用 → 跳过冷却检查RefreshToken 黑名单auth/servicetoken_blacklist:refresh:{sha256(token)}Token 到期Redis 不可用 → 静默跳过支付分布式锁payment/servicepayment:lock:{pay_no}30s获取锁失败 → 等待 1s 重查 DB统计缓存statistics/routerstats:overview / ticket / engineer / finance60sRedis 不可用 → 直接查 DB限流计数middleware/rate_limit内存实现注释标注生产环境替换为 Redis——4.2 RabbitMQ使用场景1. 交换机交换机类型durable用途zhishu.eventsTOPIC✓业务事件总线zhishu.syncTOPIC✓ES 异步同步总线zhishu.delayTOPIC✓DLX 延迟消息TTL 到期 → dead-letter →zhishu.events2. 业务事件事件发布方消费者触发时机ticket.createdticket/serviceai_tasks.py客户创建工单ticket.quotingai/service—通知用AI 诊断后进入待报价ticket.dispatch_createdai/service—通知用派单记录创建dispatch.timeoutai/service →DLXbid_tasks.py报价截止5/15/30minticket.manual_dispatchbid_tasks.py—通知管理员全部超时转人工ticket.processingticket/service—通知用工单进入处理中ticket.confirmingticket/service—通知用工程师提交报告ticket.completedticket/service—通知用客户验收通过ticket.closedticket/serviceai_tasks.py工单终态 → AI 总结payment.successpayment/servicepayment_tasks.py支付回调验证通过quotation.additional.createdquotation/servicequotation_tasks.py工程师追加报价quotation.expiredquotation_tasks →DLXquotation_tasks.py追加报价 24h 未确认es.sync.#各模块 publish_syncsync_tasks.py数据变更通配符所有模块复用3. DLX 延迟消息原理发布消息 → zhishu.delay 交换机 → 持有队列TTL 倒计时 → TTL 到期 → dead-letter → DLXzhishu.events, routing_key原始key → 业务队列 → 消费者处理4. 兜底机制dispatch.timeout:bid_tasks.py每 2 分钟运行run_dispatch_safety_scanner()补偿可能丢失的 DLX 消息quotation.expired: 启动时运行check_expired_quotations()扫描已过期的 pending 追加报价消息积压保护: 毒消息首次 requeue 重试 1 次二次失败 reject 永久丢弃4.3 Elasticsearch使用场景1. 索引索引同步方式同步触发ticketsMQ 异步es.sync.#工单创建/状态变更/数据更新knowledgeMQ 异步es.sync.#文章发布/更新2. 搜索搜索场景模块方法权重工单搜索ticket/repositorysearch_index(tickets, ...)title^2description知识库搜索knowledge/servicesearch_index(knowledge, ...)全文检索管理员工单搜索ticket/repository同上title^2description3. 降级策略ES 搜索失败/无结果 → 降级为 MySQL LIKE 查询ES 同步失败 →publish_sync内部 MQ 消息不阻塞主流程消费者处理失败 → 写入 audit_log 记录4. ES 初始化应用启动时ensure_indexes()检查并创建索引分词器: IK 分词器中文支持5. 项目核心业务流转图6. 项目总结不足工单图片是本地存储没有存储到oss上。支付功能没有接入真实的微信支付/支付宝支付。工单RAG-AI问答系统是使用的dify工作流的没有做到和知识库同步实时更新。