feat: 重大功能更新 v1.4.0 - 飞书集成、AI语义相似度、前端优化
主要更新内容: - 🚀 飞书多维表格集成,支持工单数据同步 - 🤖 AI建议与人工描述语义相似度计算 - 🎨 前端UI全面优化,现代化设计 - 📊 智能知识库入库策略(AI准确率<90%使用人工描述) - 🔧 代码重构,模块化架构优化 - 📚 完整文档整合和更新 - 🐛 修复配置导入和数据库字段问题 技术特性: - 使用sentence-transformers进行语义相似度计算 - 快速模式结合TF-IDF和语义方法 - 响应式设计,支持移动端 - 加载状态和动画效果 - 配置化AI准确率阈值
This commit is contained in:
@@ -46,16 +46,31 @@ class WorkOrderSyncService:
|
||||
|
||||
# 字段映射配置 - 根据实际飞书表格结构
|
||||
self.field_mapping = {
|
||||
# 飞书字段名 -> 本地字段名
|
||||
# 核心字段
|
||||
"TR Number": "order_id", # TR编号映射到工单号
|
||||
"TR Description": "title", # TR描述作为标题(问题描述)
|
||||
"TR Description": "description", # TR描述作为详细描述
|
||||
"Type of problem": "category", # 问题类型作为分类
|
||||
"TR Level": "priority", # TR Level作为优先级
|
||||
"TR Status": "status", # TR Status作为状态(修正字段名)
|
||||
"Source": "assignee", # 来源信息
|
||||
"TR Status": "status", # TR Status作为状态
|
||||
"Source": "source", # 来源信息(Mail, Telegram bot等)
|
||||
"Date creation": "created_at", # 创建日期
|
||||
"处理过程": "description", # 处理过程作为描述
|
||||
"TR tracking": "solution", # TR跟踪作为解决方案
|
||||
"处理过程": "solution", # 处理过程作为解决方案
|
||||
"TR tracking": "resolution", # TR跟踪作为解决方案详情
|
||||
|
||||
# 扩展字段
|
||||
"Created by": "created_by", # 创建人
|
||||
"Module(模块)": "module", # 模块
|
||||
"Wilfulness(责任人)": "wilfulness", # 责任人
|
||||
"Date of close TR": "date_of_close", # 关闭日期
|
||||
"Vehicle Type01": "vehicle_type", # 车型
|
||||
"VIN|sim": "vin_sim", # 车架号/SIM
|
||||
"App remote control version": "app_remote_control_version", # 应用远程控制版本
|
||||
"HMI SW": "hmi_sw", # HMI软件版本
|
||||
"父记录": "parent_record", # 父记录
|
||||
"Has it been updated on the same day": "has_updated_same_day", # 是否同日更新
|
||||
"Operating time": "operating_time", # 操作时间
|
||||
|
||||
# AI建议字段
|
||||
"AI建议": "ai_suggestion", # AI建议字段
|
||||
"Issue Start Time": "updated_at" # 问题开始时间作为更新时间
|
||||
}
|
||||
@@ -387,7 +402,7 @@ class WorkOrderSyncService:
|
||||
value = self.status_mapping[value]
|
||||
elif local_field == "priority" and value in self.priority_mapping:
|
||||
value = self.priority_mapping[value]
|
||||
elif local_field in ["created_at", "updated_at"] and value:
|
||||
elif local_field in ["created_at", "updated_at", "date_of_close"] and value:
|
||||
try:
|
||||
# 处理飞书时间戳(毫秒)
|
||||
if isinstance(value, (int, float)):
|
||||
@@ -404,6 +419,16 @@ class WorkOrderSyncService:
|
||||
else:
|
||||
logger.info(f"飞书字段 {feishu_field} 不存在于数据中")
|
||||
|
||||
# 生成标题 - 使用TR Number和问题类型
|
||||
tr_number = feishu_fields.get("TR Number", "")
|
||||
problem_type = feishu_fields.get("Type of problem", "")
|
||||
if tr_number and problem_type:
|
||||
local_data["title"] = f"{tr_number} - {problem_type}"
|
||||
elif tr_number:
|
||||
local_data["title"] = f"{tr_number} - TR工单"
|
||||
else:
|
||||
local_data["title"] = "TR工单"
|
||||
|
||||
# 设置默认值
|
||||
if "status" not in local_data:
|
||||
local_data["status"] = WorkOrderStatus.PENDING
|
||||
@@ -411,8 +436,6 @@ class WorkOrderSyncService:
|
||||
local_data["priority"] = WorkOrderPriority.MEDIUM
|
||||
if "category" not in local_data:
|
||||
local_data["category"] = "Remote control" # 根据表格中最常见的问题类型
|
||||
if "title" not in local_data or not local_data["title"]:
|
||||
local_data["title"] = "TR工单" # 默认标题
|
||||
|
||||
return local_data
|
||||
|
||||
|
||||
Reference in New Issue
Block a user