99619f851f
fix: 删除/修改后前端缓存未清除导致数据不刷新
...
预警模块:
- batchDeleteAlerts 清除所有 alerts_* 缓存,强制刷新 loadAlerts(1, true)
- resolveAlert 同样清除缓存并强制刷新
工单模块:
- batchDeleteWorkorders 修复参数错误(loadWorkOrders(true) loadWorkOrders(1, true))
- deleteWorkOrder 添加缓存清除
- createWorkOrder 添加缓存清除和强制刷新
- saveWorkOrder 添加缓存清除和强制刷新
- importWorkOrders 添加缓存清除和强制刷新
知识库模块:
- batchDeleteKnowledge 清除所有 knowledge_* 缓存
2026-04-07 10:57:01 +08:00
cc73403cf2
refactor: 系统优化配置从硬编码改为持久化
...
- SystemOptimizer 启动时从 system_settings.json 加载 rate_limits/cost_limits/security_settings
- 硬编码值仅作为 fallback(配置文件不存在或字段缺失时使用)
- security-settings/traffic-settings/cost-settings 三个 API 端点重写:
- GET 从 system_settings.json 读取实际值(不再返回假数据)
- POST 写入 system_settings.json(不再丢弃数据)
- 新增 _read_system_settings/_save_system_settings 工具函数
2026-04-07 10:09:34 +08:00
4ac24d2413
fix: 工单创建和飞书同步修复 + 日志精简
...
1. TSPAssistant.create_work_order 补齐 tenant_id 参数
2. workorder_sync._create_workorder 修复 SQLAlchemy session 泄漏(用 flush 替代 commit+refresh+expunge)
3. _find_existing_workorder 返回 order_id 字符串而非 ORM 对象
4. 飞书同步日志精简:
- feishu_client API 请求/响应日志降为 DEBUG
- flexible_field_mapper 字段映射日志降为 DEBUG
- workorder_sync 字段转换日志降为 DEBUG
- 只保留关键的创建/同步结果为 INFO
2026-04-07 10:06:29 +08:00
369e61404e
refactor: 模块权限从租户管理移到系统设置
...
- 模块权限 checkbox 从租户编辑弹窗移除
- 系统设置页面新增'模块权限'配置区(14个模块独立开关)
- 权限保存到 system_settings.json 的 modules 字段
- applyModulePermissions 改为从系统设置读取(不再从租户配置读取)
- 加载系统设置时自动同步 checkbox 状态
- 租户管理只保留:名称、描述、飞书群绑定、系统提示词
2026-04-02 23:16:45 +08:00
46b6a10730
feat: 租户级系统提示词 + 模块权限树
...
1. 系统提示词按租户配置:
- 去掉所有硬编码的'奇瑞汽车'品牌名
- realtime_chat 的 _build_chat_prompt 按 tenant_id 动态获取提示词
- _generate_response 和 _generate_response_stream 都传递 tenant_id
- 默认提示词为通用客服助手(不含品牌名)
- 租户编辑弹窗新增系统提示词配置区
2. 模块权限树:
- Tenant config 新增 modules 字段(14个模块的开关)
- GET /api/tenants/my-modules 返回当前用户所属租户的模块权限
- 前端 applyModulePermissions() 初始化时隐藏无权限的侧边栏标签
- 租户编辑弹窗新增模块权限 checkbox 配置区
- 默认全部模块开启,取消勾选即隐藏
3. 其他清理:
- llm_client.py 通用提示词去掉品牌名
- react_agent.py SYSTEM_PROMPT 去掉'车辆'限定
2026-04-02 23:06:59 +08:00
c3d709afeb
fix: 知识库添加时 vec 变量未初始化导致 embedding 禁用时报错
2026-04-02 22:51:09 +08:00
fa3c3935f7
fix: 租户集成遗漏修复
...
1. 知识库文件上传:前端 FormData 传 tenant_id,后端 upload 端点读取并传给 process_file_to_knowledge
2. process_file_to_knowledge 接受 tenant_id 参数,add_knowledge_entry 时传递
3. 工单创建弹窗新增租户选择器,createWorkOrder 传 tenant_id
4. populateTenantSelectors 同时填充工单创建的租户选择器
2026-04-02 21:25:33 +08:00
c73a750e60
fix: 知识库支持分租户添加
...
- 添加按钮始终可见(不再在租户列表视图隐藏)
- 在租户详情视图添加时,自动关联当前租户,弹窗标题显示租户名
- 在租户列表视图添加时,弹窗显示租户选择器让用户选择目标租户
- 分类选项统一添加 OTA升级
2026-04-02 16:57:01 +08:00
d6c87683af
fix: 飞书长连接改用 ThreadPoolExecutor 处理消息
...
- 用 ThreadPoolExecutor(max_workers=5) 替代单次 threading.Thread
- 支持并发处理多条消息,避免排队阻塞
- 添加消息序号日志,方便追踪消息接收和处理
- _process_message_safe 包装确保异常不会导致线程崩溃
- 如果消息确实没被 SDK 推送,日志里不会有对应的 #N 记录
2026-04-02 16:24:58 +08:00
18fb3155ba
fix: LLM 回复禁用 markdown 格式,适配飞书纯文本消息
...
- system prompt 明确要求纯文本回复
- 禁止 **加粗**、# 标题、- 列表等 markdown 语法
- 步骤列举改用中文序号(第一步/1)等)
2026-04-02 16:01:40 +08:00
b7627927d4
fix: 长连接 sender_id 提取修复 + 去重复赋值
...
- 移除重复的 sender_id = sender.sender_id.user_id 赋值(会覆盖已修复的值)
- 添加 sender_id 属性调试日志,方便排查 SDK 对象结构
- 优先用 open_id 构造会话标识,避免 user_id 为 None 的问题
- get_user_info 无权限时用 open_id 缩写作为标识
2026-04-02 15:58:31 +08:00
eb127ed897
fix: 飞书长连接消息处理改为后台线程,防止漏接收
...
- _handle_message 立即派发到 threading.Thread 处理,不阻塞 SDK 事件循环
- 解决 LLM 响应慢时后续消息排队/丢失的问题
- 精简日志输出,去掉冗余分隔线
2026-04-02 15:52:30 +08:00
d27b6a9c87
fix: 飞书发送者信息获取修复
...
- sender_id 优先用 open_id(user_id 在无权限时为 None)
- get_user_info 默认用 open_id 类型查询
- contact API 无权限时优雅降级,用 ID 缩写作为标识(用户_xxx)
- feishu_bot 和 longconn 都统一了 sender 提取逻辑
2026-04-02 15:47:36 +08:00
c07cbf47c8
feat: 飞书消息记录完善 记录发送者ID、姓名、群信息
...
- FeishuService 新增 get_user_info() 根据 user_id 获取飞书用户姓名
- feishu_bot.py 处理消息时获取发送者姓名,日志格式改为:发送者=姓名(ID), 群=chat_id, 类型=群聊/私聊, 租户=xxx
- feishu_longconn_service.py 同样获取发送者姓名并记录
- Conversation.ip_address 存储 feishu:user_id:sender_name(扩大字段到200字符)
- Conversation.invocation_method 存储 feishu_bot(group) / feishu_longconn(p2p) 等详细来源
- ChatSession.source 同步记录详细来源信息
2026-04-02 15:40:26 +08:00
28e90d2182
fix: 飞书群绑定租户完善
...
- tenants.js 去掉已删除的 appid/appsecret 元素引用
- showEditTenantModal 改为从 API 加载完整租户数据(不再传参拼接)
- saveTenant 保留已有的非 feishu 配置,只更新 chat_groups
- 租户列表显示绑定群数量或'未绑定飞书群'
- 飞书 bot/longconn 复用已有会话时同步更新 tenant_id(群重新绑定后立即生效)
- 删除租户后同步刷新租户选择器
2026-04-02 15:25:50 +08:00
44cfe2a0ea
fix: 租户管理标签页位置修复 从模态框区域移到主内容区域内
2026-04-02 15:15:52 +08:00
7950cd8237
feat: 飞书机器人按租户路由 群组绑定租户 + 独立凭证 + 知识库隔离
...
1. 新增 resolve_tenant_by_chat_id() 根据飞书群 chat_id 查找绑定的租户
2. 新增 get_tenant_feishu_config() 获取租户级飞书凭证
3. FeishuService 支持传入自定义 app_id/app_secret(租户级别)
4. feishu_bot.py 收到消息时自动解析租户,使用租户凭证回复
5. feishu_longconn_service.py 同样按 chat_id 解析租户并传递 tenant_id
6. 租户管理 UI 新增飞书配置字段:App ID、App Secret、绑定群 Chat ID
7. 租户列表展示飞书绑定状态和群数量
8. 保存租户时同步更新飞书配置到 config JSON
2026-04-02 09:58:04 +08:00
edb0616f7f
feat: 租户管理体系建设 CRUD + 各业务模块接入 tenant_id
...
1. 新增 Tenant 模型(tenants 表),支持租户创建、重命名、删除
2. 新增 /api/tenants CRUD 蓝图,default 租户不可删除
3. 数据库初始化时自动创建默认租户记录
4. Dashboard 新增租户管理标签页(创建/编辑/删除租户)
5. 各业务模块写入数据时正确传递 tenant_id:
- realtime_chat: create_session 和 _save_conversation 支持 tenant_id
- dialogue_manager: _save_conversation 和 create_work_order 支持 tenant_id
- conversation_history: save_conversation 支持 tenant_id
- workorder_sync: sync_from_feishu 支持 tenant_id
- websocket_server: create_session 传递 tenant_id
- HTTP chat API: create_session 传递 tenant_id
- feishu_sync API: 同步时传递 tenant_id
- workorders API: 创建工单时传递 tenant_id
6. 网页对话入口添加租户选择器
7. 知识库搜索按租户隔离(realtime_chat 中 _search_knowledge 传递 tenant_id)
8. 初始化时自动加载租户列表填充选择器
2026-04-02 09:33:16 +08:00
7013e9db70
feat: 对话历史页面租户分组展示功能
...
- 新增 ConversationHistoryManager.get_tenant_summary() 按租户聚合会话统计
- get_sessions_paginated() 和 get_conversation_analytics() 增加 tenant_id 过滤
- 新增 GET /api/conversations/tenants 租户汇总端点
- sessions 和 analytics API 端点支持 tenant_id 查询参数
- 前端实现租户卡片列表视图和租户详情会话表格视图
- 实现面包屑导航、搜索范围限定、统计面板上下文切换
- 会话删除后自动检测空租户并返回列表视图
- dashboard.html 添加租户视图 DOM 容器
- 交互模式与知识库租户分组视图保持一致
2026-04-01 16:11:02 +08:00
e14e3ee7a5
大改,未验证
2026-03-20 16:50:26 +08:00
root
c7ee292c4f
增加机器人能力
2026-03-20 10:29:45 +08:00
zhaojie
d0dd18342f
feat: 优化飞书集成、知识库、Agent、工单管理及AI建议功能,统一前端对话字体样式并移除工单模板文件。
2026-02-11 22:53:08 +08:00
zhaojie
5e93473294
机器人赋能
2026-02-11 14:41:37 +08:00
zhaojie
c3560b43fd
docs: update README and CLAUDE.md to v2.2.0
...
- Added documentation for audit tracking (IP address, invocation method).
- Updated database model descriptions for enhanced WorkOrder and Conversation fields.
- Documented the new UnifiedConfig system.
- Reflected enhanced logging transparency for knowledge base parsing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-11 00:08:09 +08:00