// ============================================================================= // 企微IT智能服务台 — AI Wingman API 调用模块 // ============================================================================= // 说明:封装与 AI Wingman(坐席智能副驾驶)相关的 HTTP 请求 // 对应后端 API:/api/conversations/{id}/wingman // 包括:生成草稿回复、生成会话摘要、生成标签建议 // ============================================================================= import apiClient from './index' import type { AxiosResponse } from 'axios' // -------------------------------------------------------------------------- // TypeScript 类型定义 — 与后端 Wingman API 响应格式保持一致 // -------------------------------------------------------------------------- /** 草稿回复结果 */ export interface DraftResult { /** 草稿内容 */ content: string /** 置信度(0-1) */ confidence: number /** 生成推理说明 */ reasoning: string } /** 会话摘要结果 */ export interface SummaryResult { /** 问题描述 */ problem: string /** 原因分析 */ cause: string /** 解决方案 */ solution: string } /** 标签建议结果 */ export interface TagsResult { /** 建议标签列表 */ suggested_tags: string[] /** 分类 */ category: string /** 优先级: low/medium/high */ priority: string } // -------------------------------------------------------------------------- // API 函数 // -------------------------------------------------------------------------- /** * 生成 AI 草稿回复 * 基于当前会话的消息历史,生成坐席可以采纳的草稿回复 * * @param conversationId - 会话ID * @returns 草稿回复结果 */ export async function generateDraft(conversationId: string): Promise { const response: AxiosResponse = await apiClient.post( `/conversations/${conversationId}/wingman/draft` ) return response.data.data } /** * 生成会话自动摘要 * 基于完整对话生成结构化摘要,包含问题、原因、解决方案 * 通常在结单时调用 * * @param conversationId - 会话ID * @returns 会话摘要结果 */ export async function generateSummary(conversationId: string): Promise { const response: AxiosResponse = await apiClient.post( `/conversations/${conversationId}/wingman/summary` ) return response.data.data } /** * 生成自动标签建议 * 基于对话内容建议标签分类 * * @param conversationId - 会话ID * @returns 标签建议结果 */ export async function suggestTags(conversationId: string): Promise { const response: AxiosResponse = await apiClient.post( `/conversations/${conversationId}/wingman/tags` ) return response.data.data } /** * 保存会话标签 * 将标签保存到会话记录中 * * @param conversationId - 会话ID * @param tags - 标签字典 * @returns 更新后的会话详情 */ export async function saveConversationTags( conversationId: string, tags: Record ): Promise { const response: AxiosResponse = await apiClient.post( `/conversations/${conversationId}/tags`, { tags } ) return response.data.data }