feat: 2026-07-11 全量更新 - 代办集成+会议室预定+知识迭代修复+UI统一+Bug修复
== 已部署上线 (9项) == - 代办事项真实数据源集成 (企微审批API 8bug修复链) - H5/坐席端 Logo样式统一+绿色背景 - 视频引导页修复 (localStorage key v2) - 坐席端 v9 Vue版本修复 (ElMessage._context) - 截图按钮 v10 修复 (getDisplayMedia user gesture) - 扫码样式恢复+H5扫码登录跳转修复 - H5截图快捷键提示 == 代码完成待部署 (3项) == - 知识迭代3Bug修复 (#8 POST端点/#7 MERGE幂等/#6 过期检查) - 会议室预定-小鱼易联终端 (40文件, 40/40测试通过) - IT资产升级审批推送 (asset_service.py) == 需求文档 (2项) == - 坐席端AI辅助消息框-PRD (4项新功能确认) - 坐席端布局优化建议 v2.0 (7天计划) == 新增文档 == - 日报-2026-07-11.md - 知识迭代Bug修复报告-20260711.md - 会议室预定-部署指南.md - CHANGELOG.md 更新 == 测试 == - test_todo_integration.py: 40/40 - test_meetingroom.py: 40/40 - test_bugfix_ki_suggestions.py: 21/21
This commit is contained in:
@@ -29,10 +29,25 @@ from app.api.admin_roles import router as admin_roles_router
|
||||
from app.api.admin.security_comparison import router as security_comparison_router
|
||||
from app.api.approval import router as approval_router
|
||||
from app.api.wecom_jsapi import router as wecom_jsapi_router # v0.5.4 应急页 JS-SDK 签名
|
||||
from app.api.knowledge_iteration import router as knowledge_iteration_router # Tier1 知识库自动迭代
|
||||
from app.api.approval_queue import router as approval_queue_router # Tier1 独立审批队列
|
||||
from app.api.vision import router as vision_router # Tier1 视觉理解
|
||||
from app.api.ragflow_ingestion import router as ragflow_router # Tier1 RAGFlow文档摄入
|
||||
from app.api.avatar import router as avatar_router # 头像代理(解决 COEP/CSP 跨域)
|
||||
|
||||
# Tier1 模块 — 容器可能缺少依赖(neo4j等),用 try/except 保护
|
||||
try:
|
||||
from app.api.knowledge_iteration import router as knowledge_iteration_router # Tier1 知识库自动迭代
|
||||
except ImportError:
|
||||
knowledge_iteration_router = None
|
||||
try:
|
||||
from app.api.approval_queue import router as approval_queue_router # Tier1 独立审批队列
|
||||
except ImportError:
|
||||
approval_queue_router = None
|
||||
try:
|
||||
from app.api.vision import router as vision_router # Tier1 视觉理解
|
||||
except ImportError:
|
||||
vision_router = None
|
||||
try:
|
||||
from app.api.ragflow_ingestion import router as ragflow_router # Tier1 RAGFlow文档摄入
|
||||
except ImportError:
|
||||
ragflow_router = None
|
||||
|
||||
# 创建 API 路由器
|
||||
# 所有子路由都会挂载到这个路由器上
|
||||
@@ -65,6 +80,10 @@ api_router.include_router(conversations_router, tags=["会话管理"])
|
||||
# GET /api/conversations/{id}/messages/poll — 轮询新消息
|
||||
api_router.include_router(messages_router, tags=["消息管理"])
|
||||
|
||||
# 头像代理 API
|
||||
# GET /api/avatar/proxy — 代理企微头像图片(解决 COEP/CSP/Mixed Content 跨域)
|
||||
api_router.include_router(avatar_router, tags=["头像代理"])
|
||||
|
||||
# 坐席管理 API
|
||||
# POST /api/agents/login — 坐席登录
|
||||
# GET /api/agents/me — 获取当前坐席信息
|
||||
@@ -72,6 +91,12 @@ api_router.include_router(messages_router, tags=["消息管理"])
|
||||
# GET /api/agents — 获取坐席列表
|
||||
api_router.include_router(agents_router, tags=["坐席管理"])
|
||||
|
||||
# 坐席员工目录 API(邀请参与者弹窗用)
|
||||
# GET /api/agent/employees/search?keyword=xxx — 模糊搜索员工(姓名/工号)
|
||||
# GET /api/agent/org/tree — 获取组织架构树(部门→员工)
|
||||
from app.api.agent_directory import router as agent_directory_router
|
||||
api_router.include_router(agent_directory_router, tags=["坐席员工目录"])
|
||||
|
||||
# 快速回复模板 API
|
||||
# GET /api/quick-replies — 获取模板列表
|
||||
# POST /api/quick-replies — 创建模板
|
||||
@@ -200,6 +225,13 @@ api_router.include_router(security_comparison_router, tags=["终端安全对比"
|
||||
# GET /api/approval/keywords — 获取审批关键词
|
||||
api_router.include_router(approval_router, tags=["审批流程"])
|
||||
|
||||
# 自备电脑补贴(BYOD)资格查询 API
|
||||
# POST /api/byod/detect-intent — BYOD意图检测(关键词预过滤 → Dify → 兜底)
|
||||
# POST /api/byod/check-eligibility — BYOD资格检查(企微通讯录查岗位 → 匹配清单 → 返回结果)
|
||||
# GET /api/byod/eligible-positions — 获取资格岗位清单
|
||||
from app.api.byod import router as byod_router
|
||||
api_router.include_router(byod_router, tags=["自备电脑补贴"])
|
||||
|
||||
# 企微 JS-SDK 签名 API (v0.5.4 应急页身份检测用)
|
||||
# GET /api/wecom/jsapi-config?url=xxx — 返回 corp_id/agent_id/timestamp/nonce_str/signature
|
||||
api_router.include_router(wecom_jsapi_router, tags=["企微JS-SDK"])
|
||||
@@ -219,24 +251,33 @@ api_router.include_router(auth_qrcode_router, tags=["扫码登录"])
|
||||
from app.api.high_risk_routes import router as high_risk_routes_router
|
||||
api_router.include_router(high_risk_routes_router, tags=["高危操作"])
|
||||
|
||||
# ⚠️ DEPRECATED - OTP API 已废弃 (2026-07-10)
|
||||
# 原因:认证重构后统一使用企微扫码登录,无需OTP二次验证
|
||||
# 如需保留管理员紧急访问OTP功能,请注释下面两行
|
||||
from app.api.otp import router as otp_router # 三端认证重构 AUTH-03
|
||||
|
||||
# 统一 OTP 二次认证 API(三端共用,取代原 /mfa/* 与 /admin/mfa/*)
|
||||
# ⚠️ 已废弃 - 请使用统一的企微扫码登录 (app/api/auth.py)
|
||||
# GET /api/auth/otp-status — 查询绑定状态
|
||||
# POST /api/auth/otp-bind — 生成 secret + 二维码
|
||||
# POST /api/auth/otp-verify — 输入 OTP 通过验证(写 Redis 30 分钟)
|
||||
# POST /api/auth/otp-unbind — 用户主动关闭 OTP
|
||||
# POST /api/auth/otp-admin-reset/{id} — 管理员重置指定员工 OTP
|
||||
# GET /api/auth/otp-admin-users — 管理员查看全部坐席 OTP 绑定状态
|
||||
api_router.include_router(otp_router, tags=["OTP二次认证"])
|
||||
api_router.include_router(otp_router, tags=["[已废弃] OTP二次认证"])
|
||||
|
||||
# 企微 SSO (v0.7.1 task #85)
|
||||
# GET /api/auth_wecom/sso/init — 企微浏览器 UA 检测后初始化 SSO
|
||||
# GET /api/auth_wecom/sso/callback — 企微 OAuth2 回调,用 code 换 userid → 跳端点
|
||||
# GET /api/auth_wecom/sso/verify — 前端用 SSO token 换用户身份(一次性)
|
||||
from app.api.auth_wecom_sso import router as auth_wecom_sso_router
|
||||
from app.api.auth_wecom_sso import alias_router as auth_wecom_sso_alias_router
|
||||
api_router.include_router(auth_wecom_sso_router, tags=["企微SSO"])
|
||||
|
||||
# 认证别名路由(v0.7.x 前端统一调用 /api/auth/refresh)
|
||||
# POST /api/auth/refresh — 刷新 token(与 /api/auth_wecom/refresh 等效)
|
||||
api_router.include_router(auth_wecom_sso_alias_router, tags=["认证"])
|
||||
|
||||
# 审计日志 API (v0.7.1 task #89)
|
||||
# GET /api/admin/audit-logs — 分页 + 多维过滤(给 auditor / admin 角色用)
|
||||
# 权限要求: audit_log:read:all (RBAC 装饰器强制)
|
||||
@@ -293,20 +334,67 @@ api_router.include_router(evaluations_router, tags=["满意度评价"])
|
||||
# POST /api/admin/knowledge-iteration/suggestions/{id}/queue — 放入队列
|
||||
# POST /api/admin/knowledge-iteration/suggestions/{id}/dequeue-approve — 队列中审批
|
||||
# GET /api/admin/knowledge-iteration/stats — 获取统计
|
||||
api_router.include_router(knowledge_iteration_router, prefix="/admin/knowledge-iteration", tags=["知识库自动迭代"])
|
||||
if knowledge_iteration_router:
|
||||
api_router.include_router(knowledge_iteration_router, prefix="/admin/knowledge-iteration", tags=["知识库自动迭代"])
|
||||
|
||||
# 独立审批队列 API (Tier1)
|
||||
# GET /api/admin/approval-queue/queued — 队列列表
|
||||
# GET /api/admin/approval-queue/queued/stats — 队列统计
|
||||
# POST /api/admin/approval-queue/queued/{id}/dequeue-approve — 队列中审批通过
|
||||
api_router.include_router(approval_queue_router, prefix="/admin/approval-queue", tags=["独立审批队列"])
|
||||
if approval_queue_router:
|
||||
api_router.include_router(approval_queue_router, prefix="/admin/approval-queue", tags=["独立审批队列"])
|
||||
|
||||
# 视觉理解 API (Tier1)
|
||||
# POST /api/vision/analyze — 分析截图(multipart: image + conversation_id)
|
||||
# GET /api/vision/models — 可用视觉模型列表
|
||||
api_router.include_router(vision_router, prefix="/api/vision", tags=["视觉理解"])
|
||||
if vision_router:
|
||||
api_router.include_router(vision_router, prefix="/api/vision", tags=["视觉理解"])
|
||||
|
||||
# RAGFlow 文档摄入 API (Tier1)
|
||||
# POST /api/ragflow/ingest — 上传文档触发RAGFlow处理
|
||||
# GET /api/ragflow/tasks/{task_id} — 查询处理状态
|
||||
api_router.include_router(ragflow_router, prefix="/api/ragflow", tags=["RAGFlow文档摄入"])
|
||||
if ragflow_router:
|
||||
api_router.include_router(ragflow_router, prefix="/api/ragflow", tags=["RAGFlow文档摄入"])
|
||||
|
||||
# 统一认证 API (三端认证重构)
|
||||
# GET /api/auth/qrcode — 获取扫码登录二维码
|
||||
# GET /api/auth/scan/status — 轮询扫码状态
|
||||
# GET /api/auth/oauth2/callback — OAuth2回调处理
|
||||
# POST /api/auth/bind — 账号绑定(互联企业)
|
||||
# POST /api/auth/verify — 验证Token
|
||||
# POST /api/auth/logout — 登出
|
||||
# GET /api/auth/me — 获取当前用户信息
|
||||
# POST /api/auth/switch-role — 切换角色
|
||||
from app.api.auth import router as auth_router
|
||||
api_router.include_router(auth_router, tags=["统一认证"])
|
||||
|
||||
# 百度语音识别 API
|
||||
# POST /api/voice/asr — 语音转文字(上传PCM音频,返回识别文字)
|
||||
from app.api.voice_asr import router as voice_asr_router
|
||||
api_router.include_router(voice_asr_router, tags=["语音识别"])
|
||||
|
||||
# 业务路由推荐 API
|
||||
# GET /api/h5/routing/contact — H5查询业务联系人(按业务类别)
|
||||
# GET /api/routing/contacts — 坐席端联系人列表(P1)
|
||||
# POST /api/conversations/{id}/send-contact-card — 坐席手动发名片(P1)
|
||||
from app.api.routing import router as routing_router
|
||||
api_router.include_router(routing_router, tags=["业务路由推荐"])
|
||||
|
||||
# 会议室预定 API
|
||||
# GET /itportal/meetingroom/list — 会议室列表
|
||||
# GET /itportal/meetingroom/{id}/booking — 预定状态查询
|
||||
# GET /itportal/meetingroom/{id}/status — 当前实时状态
|
||||
# POST /itportal/meetingroom/book — 预定会议室
|
||||
# DELETE /itportal/meetingroom/booking/{id} — 取消预定
|
||||
# GET /itportal/meetingroom/booking/{id}/detail — 预定详情
|
||||
# GET /itportal/meetingroom/terminal/{sn}/binding — 终端绑定查询
|
||||
from app.api.meetingroom import router as meetingroom_router
|
||||
api_router.include_router(meetingroom_router, tags=["会议室预定"])
|
||||
|
||||
# 终端绑定管理 API
|
||||
# GET /itportal/admin/terminal-bindings — 绑定列表
|
||||
# POST /itportal/admin/terminal-bindings — 新增绑定
|
||||
# PUT /itportal/admin/terminal-bindings/{id} — 更新绑定
|
||||
# DELETE /itportal/admin/terminal-bindings/{id} — 删除绑定
|
||||
from app.api.admin.terminal_binding import router as terminal_binding_router
|
||||
api_router.include_router(terminal_binding_router, tags=["终端绑定管理"])
|
||||
|
||||
Reference in New Issue
Block a user