修复AI建议逻辑和字段映射问题

- 修复AI建议基于问题描述而不是处理过程生成
- 修复工单详情页面显示逻辑
- 修复飞书时间字段处理(毫秒时间戳转换)
- 优化字段映射和转换逻辑
- 添加飞书集成功能
- 改进对话历史合并功能
- 优化系统优化反馈机制
This commit is contained in:
赵杰 Jie Zhao (雄狮汽车科技)
2025-09-19 17:29:33 +01:00
parent 66f44143d9
commit 79cf316c63
20 changed files with 2648 additions and 86 deletions

View File

@@ -101,26 +101,47 @@ class DialogueManager:
# 性能优化分析
optimization_result = self.system_optimizer.optimize_response_time(response_time)
# 记录Token使用情况
if success and "token_usage" in response_result:
token_usage = response_result["token_usage"]
# 计算成本
# 记录Token使用情况(兼容多种返回格式)
if success:
# 兼容返回 usage: {prompt_tokens, completion_tokens}
usage = response_result.get("usage", {}) or {}
token_usage = response_result.get("token_usage", {}) or {}
input_tokens = token_usage.get("input_tokens")
output_tokens = token_usage.get("output_tokens")
if input_tokens is None and isinstance(usage, dict):
input_tokens = usage.get("prompt_tokens") or usage.get("input_tokens") or 0
if output_tokens is None and isinstance(usage, dict):
output_tokens = usage.get("completion_tokens") or usage.get("output_tokens") or 0
# 若均为0使用简易估算避免记录缺失
if not input_tokens and user_message:
try:
input_tokens = max(1, len(user_message) // 4)
except Exception:
input_tokens = 0
if not output_tokens and response_result.get("response"):
try:
output_tokens = max(1, len(response_result.get("response")) // 4)
except Exception:
output_tokens = 0
model_name = response_result.get("model") or response_result.get("model_name") or "qwen-plus-latest"
# 计算成本并限制
estimated_cost = self.token_monitor._calculate_cost(
response_result.get("model_name", "qwen-plus-latest"),
token_usage.get("input_tokens", 0),
token_usage.get("output_tokens", 0)
model_name,
int(input_tokens or 0),
int(output_tokens or 0)
)
# 检查成本限制
if not self.system_optimizer.check_cost_limit(estimated_cost):
return {"error": "请求成本超限,请稍后再试"}
self.token_monitor.record_token_usage(
user_id=user_id or "anonymous",
work_order_id=work_order_id,
model_name=response_result.get("model_name", "qwen-plus-latest"),
input_tokens=token_usage.get("input_tokens", 0),
output_tokens=token_usage.get("output_tokens", 0),
model_name=model_name,
input_tokens=int(input_tokens or 0),
output_tokens=int(output_tokens or 0),
response_time=response_time,
success=success,
error_message=error_message