feat: 重大功能更新 v1.4.0 - 飞书集成、AI语义相似度、前端优化

主要更新内容:
- 🚀 飞书多维表格集成,支持工单数据同步
- 🤖 AI建议与人工描述语义相似度计算
- 🎨 前端UI全面优化,现代化设计
- 📊 智能知识库入库策略(AI准确率<90%使用人工描述)
- 🔧 代码重构,模块化架构优化
- 📚 完整文档整合和更新
- 🐛 修复配置导入和数据库字段问题

技术特性:
- 使用sentence-transformers进行语义相似度计算
- 快速模式结合TF-IDF和语义方法
- 响应式设计,支持移动端
- 加载状态和动画效果
- 配置化AI准确率阈值
This commit is contained in:
赵杰 Jie Zhao (雄狮汽车科技)
2025-09-19 19:32:42 +01:00
parent 79cf316c63
commit da4736c323
30 changed files with 4778 additions and 1406 deletions

View File

@@ -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