v3.1 + 批次0: 智能回复重构基线 - ApprovalMatcher + 关键词降级 + 文档速修 + v4.0任务书面化

This commit is contained in:
Simon
2026-07-17 23:08:59 +08:00
parent 5a77a89ab1
commit 3ed86d5fb3
181 changed files with 19738 additions and 2655 deletions
+56 -1
View File
@@ -37,6 +37,7 @@ from app.dependencies import require_permission, get_current_user, UserInfo
from app.services.ws_manager import manager
from app.services.session_service import SessionService
from app.services.conversation.session_query_service import SessionQueryService
from app.utils.response import AppException, ERR_CONVERSATION_NOT_FOUND, ERR_CONVERSATION_RESOLVED, success_response
logger = logging.getLogger(__name__)
@@ -765,4 +766,58 @@ async def send_typing_event(
elif pid in manager.employee_connections:
await manager.send_to_employee(pid, payload)
return success_response(message="typing 事件已发送")
return success_response(message="typing 事件已发送")
# --------------------------------------------------------------------------
# GET /api/employees/{employee_id}/history-messages — 获取员工历史消息(跨会话聚合)
# --------------------------------------------------------------------------
@router.get("/employees/{employee_id}/history-messages")
@require_permission("conversation", "read", "all")
async def get_employee_history_messages(
employee_id: str,
limit: int = Query(50, ge=1, le=100, description="每页消息数量"),
before: Optional[str] = Query(None, description="游标:加载此消息ID之前的消息(向上翻页)"),
current_conversation_id: Optional[str] = Query(None, description="当前会话ID(用于标记当前会话的分隔条)"),
current_agent: Agent = Depends(get_current_agent),
db: AsyncSession = Depends(get_db),
):
"""获取员工历史消息(跨会话聚合)。
将同一员工的所有会话消息合并为一条时间线,按时间排序。
用于"历史会话"功能,让坐席查看员工过去的所有咨询记录。
Args:
employee_id: 员工企微 UserID
limit: 每页消息数量(1~100
before: 游标消息ID,只查该消息之前的消息(向上翻页)
current_conversation_id: 当前会话ID(用于标记当前会话的分隔条)
current_agent: 当前坐席(鉴权依赖注入)
db: 数据库会话
Returns:
Dict: 统一响应格式,包含消息列表、是否还有更多、会话摘要映射
"""
service = SessionQueryService(db)
messages, has_more, conversation_summaries = await service.get_employee_history_messages(
employee_id=employee_id,
limit=limit,
before=before,
current_conversation_id=current_conversation_id,
)
# 转换为响应格式(补充发送者头像)
items = [
await _enrich_message_with_avatar(
MessageResponse.model_validate(m).model_dump(), db
)
for m in messages
]
return success_response(
data={
"items": items,
"has_more": has_more,
"conversation_summaries": conversation_summaries,
}
)