v3.1 + 批次0: 智能回复重构基线 - ApprovalMatcher + 关键词降级 + 文档速修 + v4.0任务书面化
This commit is contained in:
@@ -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,
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user