diff --git a/database_init_report.json b/database_init_report.json new file mode 100644 index 0000000..2b8bc3f --- /dev/null +++ b/database_init_report.json @@ -0,0 +1,9 @@ +{ + "init_time": "2025-12-12T13:31:25.459591", + "database_version": "SQLite 3.43.1", + "database_url": "sqlite:///tsp_assistant.db", + "migrations_applied": 0, + "tables_created": 9, + "initial_data_inserted": true, + "verification_passed": true +} \ No newline at end of file diff --git a/local_test.db b/local_test.db index 12443a3..6354edf 100644 Binary files a/local_test.db and b/local_test.db differ diff --git a/logs/dashboard.log b/logs/dashboard.log index aabaf24..3e3ccfd 100644 --- a/logs/dashboard.log +++ b/logs/dashboard.log @@ -1228,3 +1228,4765 @@ TypeError: WebSocketServer.start_server..handle_client_with_cors() missi 2025-12-08 00:33:14,420 - werkzeug - INFO - 127.0.0.1 - - [08/Dec/2025 00:33:14] "GET /api/alerts HTTP/1.1" 200 - 2025-12-08 00:33:27,392 - werkzeug - INFO - 127.0.0.1 - - [08/Dec/2025 00:33:27] "GET /api/monitor/status HTTP/1.1" 200 - 2025-12-08 00:33:29,903 - werkzeug - INFO - 127.0.0.1 - - [08/Dec/2025 00:33:29] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 00:56:18,014 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-08 00:56:18,825 - src.core.database - INFO - 数据库初始化成功 +2025-12-08 00:56:18,831 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-08 00:56:27,849 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-08 00:56:27,869 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-08 00:56:28,009 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.3.12.3:5000 +2025-12-08 00:56:28,009 - werkzeug - INFO - Press CTRL+C to quit +2025-12-08 00:56:45,294 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:45] "GET / HTTP/1.1" 200 - +2025-12-08 00:56:45,731 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:45] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-08 00:56:46,149 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:46] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-08 00:56:46,209 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:46] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-08 00:56:46,354 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:46] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-08 00:56:46,543 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:46] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-08 00:56:46,546 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:46] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-08 00:56:46,985 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:46] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-08 00:56:53,110 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:53] "GET /api/workorders HTTP/1.1" 200 - +2025-12-08 00:56:53,240 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 00:56:53,248 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 00:56:53,251 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-08 00:56:53,434 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-08 00:56:53,434 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-08 00:56:53,435 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:53] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-08 00:56:53,487 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 00:56:53,491 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-08 00:56:53,492 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:53] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-08 00:56:54,333 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:54] "GET /api/system/info HTTP/1.1" 200 - +2025-12-08 00:56:54,421 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:54] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-08 00:56:54,425 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 00:56:54,429 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-08 00:56:54,429 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-08 00:56:54,429 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-08 00:56:54,430 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-08 00:56:54,431 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-08 00:56:54,432 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-08 00:56:54,433 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-08 00:56:54,434 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-08 00:56:54,435 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-08 00:56:54,436 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-08 00:56:54,438 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-08 00:56:54,439 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-08 00:56:54,440 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-08 00:56:54,441 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-08 00:56:54,442 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-08 00:56:54,443 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-08 00:56:54,444 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-08 00:56:54,445 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-08 00:56:54,446 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-08 00:56:54,447 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-08 00:56:54,448 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-08 00:56:54,449 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-08 00:56:54,450 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-08 00:56:54,451 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-08 00:56:54,452 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-08 00:56:54,464 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:54] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-08 00:56:58,379 - werkzeug - ERROR - 36.231.97.35 - - [08/Dec/2025 00:56:58] code 400, message Bad request version ("n,(Rǯ^\x03XÆ,\x13\x13±ÄvÐ×&RR]ÃX\x14#k'sà\x1bâ\x00") +2025-12-08 00:56:58,397 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:58] "\x16\x03\x01\x06ö\x01\x00\x06ò\x03\x03\x80\x8e\x18:\x9e\x8b\x90\x1d¾\x9côX\x9a0ð¹¯@S\x8d\x1bR8`\x1cF}x) \x06U n,(Rǯ^\x03XÆ,\x13\x13±ÄvÐ×&RR]ÃX\x14#k'sà\x1bâ\x00 " HTTPStatus.BAD_REQUEST - +2025-12-08 00:56:58,400 - werkzeug - ERROR - 36.231.97.35 - - [08/Dec/2025 00:56:58] code 400, message Bad HTTP/0.9 request type ('\x16\x03\x01\x06Ö\x01\x00\x06Ò\x03\x03qºÝX\x91hD#B\x01ÉΧ\x0f=\x0eËdALÛÂ\x968KåHî±U\x84é') +2025-12-08 00:56:58,400 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:58] "\x16\x03\x01\x06Ö\x01\x00\x06Ò\x03\x03qºÝX\x91hD#B\x01ÉΧ\x0f=\x0eËdALÛÂ\x968KåHî±U\x84é \x8f½¦\x16ò\x83å´\x8b^®¢K?ÖË\x96ìH\x88m)¥3(8ïz3Zªc\x00 " HTTPStatus.BAD_REQUEST - +2025-12-08 00:56:58,652 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:58] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:56:58,972 - werkzeug - ERROR - 36.231.97.35 - - [08/Dec/2025 00:56:58] code 400, message Bad request version ("8\x8f|\x05t\\Ê>/\x813Ú\x92_\x81\x07\x9bcÖ?TSÅÏÑXm%%\x94\x94\x90\x84ô'ðÃ") +2025-12-08 00:56:58,978 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:58] "\x16\x03\x01\x06ö\x01\x00\x06ò\x03\x03­¹:\x8f\x00\x92VoÏ$!;\x9dIXkCL{câãKî\x9fñÕ\x1e\\B\x9c\x8c °âg\x0f\x95ÌY|ÕHs\x13øsßøD\x13\x86M&ú^j\x81_uÊÐ^ù%\x00 êê\x13\x01\x13\x02\x13\x03À+À/À,À0̨̩À\x13À\x14\x00\x9c\x00\x9d\x00/\x005\x01\x00\x06\x89\x1a\x1a\x00\x00\x00\x0d\x00\x12\x00\x10\x04\x03\x08\x04\x04\x01\x05\x03\x08\x05\x05\x01\x08\x06\x06\x01\x003\x04ï\x04íªª\x00\x01\x00\x11ì\x04Àõ&l\x82\x92¼ÝìBnCeÅSNnûÌÓHs4±\x03ÒÑ2\x92¼O£@\x84\x89( \x09\x07\x81,Û:¯õrÂ\\R 8\x8f|\x05t\\Ê>/\x813Ú\x92_\x81\x07\x9bcÖ?TSÅÏÑXm%%\x94\x94\x90\x84ô'ðÃ" HTTPStatus.BAD_REQUEST - +2025-12-08 00:56:59,019 - werkzeug - ERROR - 36.231.97.35 - - [08/Dec/2025 00:56:59] code 400, message Bad request version ('\x1aAa\xad') +2025-12-08 00:56:59,019 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:56:59] "\x16\x03\x01\x06ö\x01\x00\x06ò\x03\x03û\x16jë,Û0e5|zO\x8dwUBÛDÝ=\x1c ËêÖ[îo_Ê÷\x1f Ñ\x1e26\x83¨q6\x99\x8c\x9a\\¤\x13¹n*Ïø\x91úoá*ÄÊufVìEð\x00 \x9a\x9a\x13\x01\x13\x02\x13\x03À+À/À,À0̨̩À\x13À\x14\x00\x9c\x00\x9d\x00/\x005\x01\x00\x06\x89ÚÚ\x00\x00\x003\x04ï\x04íÚÚ\x00\x01\x00\x11ì\x04À]\x98\x8a!b\x14ϤT\x90\x158\x89º{,ç(ÉÜ\x96.c¢´\x90ů\x90\x8d¼\x89\x05 \x11f\x92%`4#!\x92A\x9a\x0c«Z¢¼\x87&\x12Áj5½\x9b\x19WÄ\x8ciw¨µî\x1ah^\x02\x0f\x91\x024\x1aõÍܨ\x0dC-\x18\x05\x18\x1er\x0bR\x04\x95\x88j\x7f´öÈ\x93õ(\x98ª=ÈõF0ð\x9böÙjü\x87¸¯\x13}á\x15%\x8b¶\x96UÅ\x13¹¸t\x08×\x1d=\x85RÆz8éC¸â\x1c\x1aAa­" HTTPStatus.BAD_REQUEST - +2025-12-08 00:57:03,185 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:03] "GET / HTTP/1.1" 200 - +2025-12-08 00:57:04,270 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:04] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-08 00:57:04,803 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:04] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 00:57:13,846 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:13] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 00:57:13,929 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:13] "GET /favicon.ico HTTP/1.1" 404 - +2025-12-08 00:57:14,056 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:14] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-08 00:57:14,711 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:14] "GET /api/rules HTTP/1.1" 200 - +2025-12-08 00:57:19,212 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:19] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-08 00:57:22,436 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:22] "GET /api/alerts?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-08 00:57:24,357 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:24] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:57:25,435 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:25] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 00:57:30,329 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:30] "POST /api/batch-delete/alerts HTTP/1.1" 200 - +2025-12-08 00:57:32,130 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:32] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:57:33,842 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:33] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-08 00:57:34,014 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:34] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 00:57:35,041 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:35] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:57:36,262 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:36] "GET /api/alerts?page=1&per_page=50 HTTP/1.1" 200 - +2025-12-08 00:57:38,099 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:38] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:57:38,281 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:38] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:57:39,235 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:39] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 00:57:40,355 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:40] "POST /api/batch-delete/alerts HTTP/1.1" 200 - +2025-12-08 00:57:56,581 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:57:56] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 00:58:12,902 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:58:14,287 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:14] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 00:58:14,381 - src.web.error_handlers - ERROR - 错误响应: 预警不存在: [111616, 111617, 111618, 111619, 111620, 111621, 111622, 111623, 111624, 111625, 111626, 111627, 111628, 111629, 111630, 111631, 111632, 111633, 111634, 111635, 111636, 111637, 111638, 111639, 111640, 111641, 111642, 111643, 111644, 111645, 111646, 111647, 111648, 111649, 111650, 111651, 111652, 111653, 111654, 111655, 111656, 111657, 111658, 111659, 111660, 111661, 111612, 111613, 111614, 111615] - None +2025-12-08 00:58:14,409 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:14] "POST /api/batch-delete/alerts HTTP/1.1" 404 - +2025-12-08 00:58:15,728 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:15] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-08 00:58:20,658 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:20] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:58:25,226 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:58:26,834 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:26] "GET /api/workorders?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-08 00:58:49,660 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:49] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:58:58,072 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:58:58] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:59:05,172 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:05] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:59:06,477 - src.integrations.workorder_sync - INFO - 开始从飞书同步工单数据... +2025-12-08 00:59:06,480 - src.integrations.feishu_client - INFO - 正在获取飞书tenant_access_token,应用ID: cli_a8b50ec0eed1500d +2025-12-08 00:59:06,970 - src.integrations.feishu_client - INFO - 飞书API响应: {'code': 0, 'expire': 3056, 'msg': 'ok', 'tenant_access_token': 't-g104c7nOSPYB6V6UE63G2DXX5T3ACJFDSQZ3AJ3B'} +2025-12-08 00:59:06,974 - src.integrations.feishu_client - INFO - tenant_access_token获取成功: t-g104c7nOSPYB6V6UE6... +2025-12-08 00:59:06,974 - src.integrations.feishu_client - INFO - 令牌有效期: 3056秒,过期时间: 2025-12-08 01:50:02 +2025-12-08 00:59:06,975 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records +2025-12-08 00:59:06,977 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 00:59:09,328 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 00:59:09,332 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'has_more': False, 'items': [{'fields': {'AI建议': "模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}, {'fields': {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}, {'fields': {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}, {'fields': {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}], 'total': 4}, 'msg': 'success'} +2025-12-08 00:59:09,337 - src.integrations.workorder_sync - INFO - 从飞书获取 4 条记录 +2025-12-08 00:59:09,337 - src.integrations.workorder_sync - INFO - 开始生成AI建议... +2025-12-08 00:59:09,339 - src.integrations.workorder_sync - INFO - 第一条记录结构示例: record_id=rec253kqBfXae4, 有fields字段=True +2025-12-08 00:59:09,341 - src.integrations.workorder_sync - INFO - 第一条记录的fields示例: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source'] +2025-12-08 00:59:09,341 - src.integrations.workorder_sync - INFO - 第一条记录的AI建议字段内容: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Th +2025-12-08 00:59:09,348 - src.integrations.ai_suggestion_service - INFO - 记录 rec253kqBfXae4 - 现有AI建议长度: 112 +2025-12-08 00:59:09,349 - src.integrations.ai_suggestion_service - INFO - 记录 rec253kqBfXae4 - 现有AI建议前100字符: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:The widget weather doesn't work + +相关背景信息: +无相关背景信息 + +请 +2025-12-08 00:59:09,480 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 00:59:09,496 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765126749 +2025-12-08 00:59:09,528 - src.knowledge_base.knowledge_manager - INFO - 搜索查询 '请作为专业的汽车技术支持工程师,为以下工单问题提供详细的技术分析和处理建议。 + +问题描述: +The widget weather doesn't work + + +当前处理进度: +0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志 + + +历史AI建议记录: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:The widget weather doesn't work + +相关背景信息: +无相关背景信息 + +请提供: +1. 问题... + + +要求: +1. 基于已有处理记录和当前进度,分析问题进展情况 +2. 判断之前的处理步骤是否有效,找出可能的遗漏点 +3. 根据问题发展阶段提供更深入的技术解决方案 +4. 如果远程处理无效,明确说明需要哪些线下技术支持 +5. 详细说明进站后需要执行的具体诊断和修复步骤 +6. 包含技术参数、工具要求和注意事项 +7. 便于技术人员快速理解问题状态和下一步行动 + +请提供针对性的深入分析和处理建议:' 返回 3 个结果 +2025-12-08 00:59:22,469 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:59:23,084 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:23] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-08 00:59:29,120 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:29] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 00:59:30,610 - src.core.llm_client - INFO - API请求成功 +2025-12-08 00:59:30,824 - src.knowledge_base.knowledge_manager - INFO - 成功更新 3 个知识库条目的使用次数 +2025-12-08 00:59:30,825 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下: + +1. **问题进展分析**: + 前期已排除基... +2025-12-08 00:59:30,825 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下: + +1. **问题进展分析**: + 前期已排除基 +2025-12-08 00:59:30,836 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下: +2025-12-08 00:59:30,843 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:... +2025-12-08 00:59:30,843 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1208, existing长度=112 +2025-12-08 00:59:30,843 - src.integrations.ai_suggestion_service - INFO - 为记录 rec253kqBfXae4 生成AI建议,新建议长度: 190 +2025-12-08 00:59:30,850 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLSh2a2S7 - 现有AI建议长度: 112 +2025-12-08 00:59:30,879 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLSh2a2S7 - 现有AI建议前100字符: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Vehicle data is not updated in the app => dated from +2025-12-08 00:59:30,920 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 00:59:30,943 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765126770 +2025-12-08 00:59:30,965 - src.knowledge_base.knowledge_manager - INFO - 搜索查询 '请作为专业的汽车技术支持工程师,为以下工单问题提供详细的技术分析和处理建议。 + +问题描述: +Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19. + + + +当前处理进度: +1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志 + + +历史AI建议记录: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Vehicle data is not updated in the app => dated from October,... + + +要求: +1. 基于已有处理记录和当前进度,分析问题进展情况 +2. 判断之前的处理步骤是否有效,找出可能的遗漏点 +3. 根据问题发展阶段提供更深入的技术解决方案 +4. 如果远程处理无效,明确说明需要哪些线下技术支持 +5. 详细说明进站后需要执行的具体诊断和修复步骤 +6. 包含技术参数、工具要求和注意事项 +7. 便于技术人员快速理解问题状态和下一步行动 + +请提供针对性的深入分析和处理建议:' 返回 3 个结果 +2025-12-08 00:59:37,986 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:59:44,965 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 00:59:49,625 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:49] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 00:59:51,821 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 00:59:51] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-08 00:59:53,910 - src.core.llm_client - INFO - API请求成功 +2025-12-08 00:59:54,067 - src.knowledge_base.knowledge_manager - INFO - 成功更新 3 个知识库条目的使用次数 +2025-12-08 00:59:54,067 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBO... +2025-12-08 00:59:54,068 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBO +2025-12-08 00:59:54,068 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBO +2025-12-08 00:59:54,070 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBO... +2025-12-08 00:59:54,073 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1208, existing长度=112 +2025-12-08 00:59:54,075 - src.integrations.ai_suggestion_service - INFO - 为记录 recv0NLSh2a2S7 生成AI建议,新建议长度: 231 +2025-12-08 00:59:54,075 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKLlRJ - 现有AI建议长度: 112 +2025-12-08 00:59:54,077 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKLlRJ - 现有AI建议前100字符: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:User not able to enter into member center neither mo +2025-12-08 00:59:54,096 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 00:59:54,105 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765126794 +2025-12-08 00:59:54,119 - src.knowledge_base.knowledge_manager - INFO - 搜索查询 '请作为专业的汽车技术支持工程师,为以下工单问题提供详细的技术分析和处理建议。 + +问题描述: +User not able to enter into member center neither mobile phone nor QR code. + + +当前处理进度: +1024: DMC logs attached as well as vieos of the issue. + + +历史AI建议记录: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:User not able to enter into member center neither mobile phon... + + +要求: +1. 基于已有处理记录和当前进度,分析问题进展情况 +2. 判断之前的处理步骤是否有效,找出可能的遗漏点 +3. 根据问题发展阶段提供更深入的技术解决方案 +4. 如果远程处理无效,明确说明需要哪些线下技术支持 +5. 详细说明进站后需要执行的具体诊断和修复步骤 +6. 包含技术参数、工具要求和注意事项 +7. 便于技术人员快速理解问题状态和下一步行动 + +请提供针对性的深入分析和处理建议:' 返回 3 个结果 +2025-12-08 01:00:01,162 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:01] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:00:02,087 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 01:00:04,293 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:04] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 01:00:04,915 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records +2025-12-08 01:00:04,935 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 01:00:06,700 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 01:00:06,703 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'has_more': False, 'items': [{'fields': {'AI建议': "模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}, {'fields': {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}, {'fields': {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}, {'fields': {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}], 'total': 4}, 'msg': 'success'} +2025-12-08 01:00:06,708 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:06] "GET /api/feishu-sync/preview-feishu-data HTTP/1.1" 200 - +2025-12-08 01:00:13,560 - src.core.llm_client - INFO - API请求成功 +2025-12-08 01:00:13,804 - src.knowledge_base.knowledge_manager - INFO - 成功更新 3 个知识库条目的使用次数 +2025-12-08 01:00:13,810 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。 + +当前处理有效性评估: +✅ 已完成关... +2025-12-08 01:00:13,828 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。 + +当前处理有效性评估: +✅ 已完成关 +2025-12-08 01:00:13,838 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。 +2025-12-08 01:00:14,071 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。... +2025-12-08 01:00:14,080 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1208, existing长度=112 +2025-12-08 01:00:14,086 - src.integrations.ai_suggestion_service - INFO - 为记录 recv0NLZoKLlRJ 生成AI建议,新建议长度: 197 +2025-12-08 01:00:14,092 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKjKvx - 现有AI建议长度: 112 +2025-12-08 01:00:14,099 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKjKvx - 现有AI建议前100字符: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Abnormal traffic consumption + +相关背景信息: +相关知识库信息: +- TR8 +2025-12-08 01:00:14,153 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 01:00:14,177 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765126814 +2025-12-08 01:00:14,236 - src.knowledge_base.knowledge_manager - INFO - 搜索查询 '请作为专业的汽车技术支持工程师,为以下工单问题提供详细的技术分析和处理建议。 + +问题描述: +Abnormal traffic consumption + + +当前处理进度: +1024:建议用户抓去DMC日志回传分析 +1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf + + +历史AI建议记录: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Abnormal traffic consumption + +相关背景信息: +相关知识库信息: +- TR866 - Traf... + + +要求: +1. 基于已有处理记录和当前进度,分析问题进展情况 +2. 判断之前的处理步骤是否有效,找出可能的遗漏点 +3. 根据问题发展阶段提供更深入的技术解决方案 +4. 如果远程处理无效,明确说明需要哪些线下技术支持 +5. 详细说明进站后需要执行的具体诊断和修复步骤 +6. 包含技术参数、工具要求和注意事项 +7. 便于技术人员快速理解问题状态和下一步行动 + +请提供针对性的深入分析和处理建议:' 返回 3 个结果 +2025-12-08 01:00:18,434 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:18] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:00:23,257 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:23] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 01:00:24,752 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:24] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 01:00:25,794 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:00:35,439 - src.core.llm_client - INFO - API请求成功 +2025-12-08 01:00:36,167 - src.knowledge_base.knowledge_manager - INFO - 成功更新 3 个知识库条目的使用次数 +2025-12-08 01:00:36,195 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下: + +一、问题... +2025-12-08 01:00:36,200 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下: + +一、问题 +2025-12-08 01:00:36,201 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下: +2025-12-08 01:00:36,201 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:... +2025-12-08 01:00:36,204 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1208, existing长度=112 +2025-12-08 01:00:36,231 - src.integrations.ai_suggestion_service - INFO - 为记录 recv0NLZoKjKvx 生成AI建议,新建议长度: 212 +2025-12-08 01:00:36,250 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/rec253kqBfXae4 +2025-12-08 01:00:36,250 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 01:00:38,160 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 01:00:38,175 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题..."}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}}, 'msg': 'success'} +2025-12-08 01:00:38,194 - src.integrations.workorder_sync - INFO - 更新飞书记录 rec253kqBfXae4 的AI建议 +2025-12-08 01:00:38,205 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/recv0NLSh2a2S7 +2025-12-08 01:00:38,225 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 01:00:39,921 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 01:00:39,921 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}}, 'msg': 'success'} +2025-12-08 01:00:39,923 - src.integrations.workorder_sync - INFO - 更新飞书记录 recv0NLSh2a2S7 的AI建议 +2025-12-08 01:00:39,923 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/recv0NLZoKLlRJ +2025-12-08 01:00:39,923 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 01:00:41,718 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 01:00:41,719 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}}, 'msg': 'success'} +2025-12-08 01:00:41,720 - src.integrations.workorder_sync - INFO - 更新飞书记录 recv0NLZoKLlRJ 的AI建议 +2025-12-08 01:00:41,720 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/recv0NLZoKjKvx +2025-12-08 01:00:41,721 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 01:00:43,739 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 01:00:43,741 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}}, 'msg': 'success'} +2025-12-08 01:00:43,741 - src.integrations.workorder_sync - INFO - 更新飞书记录 recv0NLZoKjKvx 的AI建议 +2025-12-08 01:00:43,834 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': "模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'} +2025-12-08 01:00:43,836 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:00:43,837 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:The widget weather doesn't work + +相关背景信息: +无相关背景信息 + +请提供: +1. 问题... +2025-12-08 01:00:43,837 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Evgeniy +2025-12-08 01:00:43,838 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1745769600000 +2025-12-08 01:00:43,838 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: local O&M +2025-12-08 01:00:43,838 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:00:43,838 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: The widget weather doesn't work +2025-12-08 01:00:43,838 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:00:43,838 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR559 +2025-12-08 01:00:43,840 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-08 01:00:43,840 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs. +2025-12-08 01:00:43,840 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: HU troubles +2025-12-08 01:00:43,840 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LVTDD24B8RG019153 +2025-12-08 01:00:43,856 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: EXEED RX(T22) +2025-12-08 01:00:43,863 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: Evgeniy +2025-12-08 01:00:43,863 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志 +2025-12-08 01:00:43,956 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:00:43,960 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:00:43,961 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:00:43,961 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:00:43,961 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:00:44,146 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'} +2025-12-08 01:00:44,160 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:00:44,160 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Vehicle data is not updated in the app => dated from October,... +2025-12-08 01:00:44,160 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-08 01:00:44,163 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761148800000 +2025-12-08 01:00:44,171 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: TBOX +2025-12-08 01:00:44,171 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:00:44,171 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19. + +2025-12-08 01:00:44,171 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:00:44,171 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR863 +2025-12-08 01:00:44,171 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-08 01:00:44,171 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi +2025-12-08 01:00:44,172 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Remote control +2025-12-08 01:00:44,172 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LNNBDDEZ8SD345645 +2025-12-08 01:00:44,172 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: JAECOO J7(T1EJ) +2025-12-08 01:00:44,172 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: 刘娇龙 +2025-12-08 01:00:44,172 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志 +2025-12-08 01:00:44,174 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:00:44,174 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:00:44,174 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:00:44,174 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:00:44,174 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:00:44,197 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'} +2025-12-08 01:00:44,198 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:00:44,198 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:User not able to enter into member center neither mobile phon... +2025-12-08 01:00:44,198 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-08 01:00:44,198 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761148800000 +2025-12-08 01:00:44,198 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: 生态/ecologically +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: User not able to enter into member center neither mobile phone nor QR code. +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR864 +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 23/10: DMC logs attached as well as vieos of the issue. +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Problem with auth in member center +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LNNBDDEZXSD449358 +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: EXEED VX FL(M36T) +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: 袁清 +2025-12-08 01:00:44,199 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024: DMC logs attached as well as vieos of the issue. +2025-12-08 01:00:44,202 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:00:44,202 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:00:44,208 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:00:44,222 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:00:44,228 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:00:44,283 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'} +2025-12-08 01:00:44,294 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:00:44,296 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Abnormal traffic consumption + +相关背景信息: +相关知识库信息: +- TR866 - Traf... +2025-12-08 01:00:44,483 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-08 01:00:44,485 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761235200000 +2025-12-08 01:00:44,485 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: DMC +2025-12-08 01:00:44,498 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:00:44,498 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: Abnormal traffic consumption +2025-12-08 01:00:44,505 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:00:44,508 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR866 +2025-12-08 01:00:44,514 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Analysising +2025-12-08 01:00:44,515 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi +24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached +2025-12-08 01:00:44,536 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Traffic is over +2025-12-08 01:00:44,543 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: XEYDD14B3SA012164 +2025-12-08 01:00:44,543 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: TEST +2025-12-08 01:00:44,543 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: Vsevolod Tsoi +2025-12-08 01:00:44,543 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024:建议用户抓去DMC日志回传分析 +1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf +2025-12-08 01:00:44,547 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:00:44,547 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:00:44,548 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:00:44,548 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:00:44,548 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:00:44,738 - src.integrations.workorder_sync - INFO - 飞书同步完成: {'success': True, 'total_records': 4, 'synced_count': 4, 'created_count': 0, 'updated_count': 4, 'ai_suggestions_generated': True, 'errors': []} +2025-12-08 01:00:44,739 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:44] "POST /api/feishu-sync/sync-from-feishu HTTP/1.1" 200 - +2025-12-08 01:00:48,369 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:48] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:00:54,363 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records +2025-12-08 01:00:54,398 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 01:00:55,328 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:00:56,310 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 01:00:56,310 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'has_more': False, 'items': [{'fields': {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}, {'fields': {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}, {'fields': {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}, {'fields': {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}], 'total': 4}, 'msg': 'success'} +2025-12-08 01:00:56,317 - src.integrations.flexible_field_mapper - INFO - 开始发现字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:00:56,374 - src.integrations.flexible_field_mapper - INFO - 字段发现完成: 已映射 15, 未映射 1, 建议映射 1 +2025-12-08 01:00:56,405 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:56] "POST /api/feishu-sync/field-mapping/discover HTTP/1.1" 200 - +2025-12-08 01:00:57,846 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:00:57] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 01:01:04,117 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 87.2% +2025-12-08 01:01:04,940 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 87.1% +2025-12-08 01:01:18,776 - src.integrations.workorder_sync - INFO - 开始从飞书同步工单数据... +2025-12-08 01:01:18,782 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records +2025-12-08 01:01:18,783 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104c7nOSPYB6V6UE6... +2025-12-08 01:01:20,324 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-08 01:01:20,329 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'has_more': False, 'items': [{'fields': {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}, {'fields': {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}, {'fields': {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}, {'fields': {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}], 'total': 4}, 'msg': 'success'} +2025-12-08 01:01:20,331 - src.integrations.workorder_sync - INFO - 从飞书获取 4 条记录 +2025-12-08 01:01:20,396 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'} +2025-12-08 01:01:20,680 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:The widget weather doesn't work + +相关背景信息: +无相关背景信息 + +请提供: +1. 问题... +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Evgeniy +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1745769600000 +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: local O&M +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: The widget weather doesn't work +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR559 +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-08 01:01:20,681 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs. +2025-12-08 01:01:20,699 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: HU troubles +2025-12-08 01:01:20,699 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LVTDD24B8RG019153 +2025-12-08 01:01:20,699 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: EXEED RX(T22) +2025-12-08 01:01:20,699 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: Evgeniy +2025-12-08 01:01:20,699 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志 +2025-12-08 01:01:20,702 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:01:20,702 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:01:20,702 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:01:20,702 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:01:20,702 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:01:20,714 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'} +2025-12-08 01:01:20,720 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:01:20,720 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。 +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Vehicle data is not updated in the app => dated from October,... +2025-12-08 01:01:20,720 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-08 01:01:20,726 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761148800000 +2025-12-08 01:01:20,726 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: TBOX +2025-12-08 01:01:20,726 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:01:20,733 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19. + +2025-12-08 01:01:20,738 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:01:20,748 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR863 +2025-12-08 01:01:20,748 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-08 01:01:20,787 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi +2025-12-08 01:01:20,787 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Remote control +2025-12-08 01:01:20,787 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LNNBDDEZ8SD345645 +2025-12-08 01:01:20,788 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: JAECOO J7(T1EJ) +2025-12-08 01:01:20,788 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: 刘娇龙 +2025-12-08 01:01:20,789 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志 +2025-12-08 01:01:20,802 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:01:20,815 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:01:20,822 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:01:20,823 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:01:20,849 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:01:20,906 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'} +2025-12-08 01:01:20,941 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:01:20,941 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。 +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:User not able to enter into member center neither mobile phon... +2025-12-08 01:01:20,941 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-08 01:01:20,941 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761148800000 +2025-12-08 01:01:20,941 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: 生态/ecologically +2025-12-08 01:01:20,941 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: User not able to enter into member center neither mobile phone nor QR code. +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR864 +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 23/10: DMC logs attached as well as vieos of the issue. +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Problem with auth in member center +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LNNBDDEZXSD449358 +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: EXEED VX FL(M36T) +2025-12-08 01:01:20,942 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: 袁清 +2025-12-08 01:01:20,943 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024: DMC logs attached as well as vieos of the issue. +2025-12-08 01:01:20,946 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:01:20,946 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:01:20,946 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:01:20,946 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:01:20,953 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:01:21,010 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'} +2025-12-08 01:01:21,021 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-08 01:01:21,022 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Abnormal traffic consumption + +相关背景信息: +相关知识库信息: +- TR866 - Traf... +2025-12-08 01:01:21,030 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-08 01:01:21,031 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761235200000 +2025-12-08 01:01:21,039 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: DMC +2025-12-08 01:01:21,039 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-08 01:01:21,040 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: Abnormal traffic consumption +2025-12-08 01:01:21,040 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR866 +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Analysising +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi +24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Traffic is over +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: XEYDD14B3SA012164 +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: TEST +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: Vsevolod Tsoi +2025-12-08 01:01:21,047 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024:建议用户抓去DMC日志回传分析 +1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf +2025-12-08 01:01:21,050 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-08 01:01:21,050 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-08 01:01:21,050 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-08 01:01:21,050 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-08 01:01:21,050 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-08 01:01:21,131 - src.integrations.workorder_sync - INFO - 飞书同步完成: {'success': True, 'total_records': 4, 'synced_count': 4, 'created_count': 0, 'updated_count': 4, 'ai_suggestions_generated': False, 'errors': []} +2025-12-08 01:01:21,132 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:01:21] "POST /api/feishu-sync/sync-from-feishu HTTP/1.1" 200 - +2025-12-08 01:01:22,302 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:01:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 01:01:29,904 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:01:29] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:01:33,628 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:01:33] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:01:43,409 - werkzeug - INFO - 203.175.14.32 - - [08/Dec/2025 01:01:43] "GET /api/feishu-sync/field-mapping/status HTTP/1.1" 200 - +2025-12-08 01:01:47,237 - werkzeug - INFO - 23.247.138.217 - - [08/Dec/2025 01:01:47] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 01:01:51,719 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:01:51] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 01:02:05,782 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 90.7% +2025-12-08 01:02:06,308 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 90.9% +2025-12-08 01:02:12,892 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-08 01:02:13,693 - src.core.database - INFO - 数据库初始化成功 +2025-12-08 01:02:13,698 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-08 01:02:16,181 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-08 01:02:16,191 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-08 01:02:16,250 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.3.12.3:5000 +2025-12-08 01:02:16,250 - werkzeug - INFO - Press CTRL+C to quit +2025-12-08 01:02:16,561 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 01:02:16,562 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 01:02:16,572 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 01:02:16,576 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 01:02:16,578 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-08 01:02:16,586 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-08 01:02:16,615 - werkzeug - INFO - 23.247.138.217 - - [08/Dec/2025 01:02:16] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 01:02:38,059 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:02:38] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 01:02:38,625 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:02:38] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 01:02:38,627 - werkzeug - INFO - 36.231.97.35 - - [08/Dec/2025 01:02:38] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:22:24,082 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-08 13:22:24,658 - src.core.database - INFO - 数据库初始化成功 +2025-12-08 13:22:24,663 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-08 13:22:27,263 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-08 13:22:27,273 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-08 13:22:27,332 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.3.12.3:5000 +2025-12-08 13:22:27,332 - werkzeug - INFO - Press CTRL+C to quit +2025-12-08 13:22:48,185 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET / HTTP/1.1" 200 - +2025-12-08 13:22:48,305 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-08 13:22:48,425 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-08 13:22:48,642 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-08 13:22:48,669 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-08 13:22:48,675 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-08 13:22:48,676 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-08 13:22:48,871 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-08 13:22:48,999 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:48] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-08 13:22:49,125 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:49] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-08 13:22:50,310 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:50,311 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:50,316 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-08 13:22:50,316 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-08 13:22:50,317 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:50] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-08 13:22:50,326 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:50,328 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:50,329 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:50,332 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-08 13:22:50,332 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-08 13:22:50,333 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:50] "GET /api/rules HTTP/1.1" 200 - +2025-12-08 13:22:50,338 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:50,341 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-08 13:22:50,569 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:50,571 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-08 13:22:50,572 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:50] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-08 13:22:50,931 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:50] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-08 13:22:50,972 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:22:50,984 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:50] "GET /api/workorders HTTP/1.1" 200 - +2025-12-08 13:22:51,176 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:51] "GET /api/system/info HTTP/1.1" 200 - +2025-12-08 13:22:51,192 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:51] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:22:51,203 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:51] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-08 13:22:51,383 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:51] "GET /favicon.ico HTTP/1.1" 404 - +2025-12-08 13:22:51,453 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-08 13:22:51,489 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-08 13:22:51,495 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-08 13:22:51,495 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-08 13:22:51,503 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-08 13:22:51,506 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-08 13:22:51,506 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-08 13:22:51,515 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-08 13:22:51,519 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-08 13:22:51,524 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-08 13:22:51,525 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-08 13:22:51,532 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-08 13:22:51,534 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-08 13:22:51,535 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-08 13:22:51,542 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-08 13:22:51,548 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-08 13:22:51,553 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-08 13:22:51,557 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-08 13:22:51,566 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-08 13:22:51,568 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-08 13:22:51,571 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-08 13:22:51,572 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-08 13:22:51,576 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-08 13:22:51,581 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-08 13:22:51,582 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-08 13:22:51,587 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-08 13:22:51,635 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:51] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-08 13:22:55,597 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:22:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:23:00,728 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:23:08,875 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:08] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-08 13:23:08,888 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:08] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-08 13:23:09,246 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:09] "GET /api/agent/tools/stats HTTP/1.1" 200 - +2025-12-08 13:23:09,302 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:09] "GET /api/settings HTTP/1.1" 200 - +2025-12-08 13:23:10,525 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:10] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:23:10,865 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:10] "GET /api/alerts?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-08 13:23:11,751 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:11] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:23:12,403 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:23:15,711 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:15] "POST /api/batch-delete/alerts HTTP/1.1" 200 - +2025-12-08 13:23:16,658 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:16] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:23:17,555 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:17] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 13:23:17,980 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:17] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:23:42,384 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:23:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:24:00,231 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:00] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 13:24:01,376 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:01] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:24:01,737 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:01] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-08 13:24:02,538 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:02] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:24:08,797 - src.web.error_handlers - ERROR - 错误响应: 预警不存在: [111610, 111608, 111611, 111606, 111607, 111672, 111673, 111674, 111675, 111609] - None +2025-12-08 13:24:08,802 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:08] "POST /api/batch-delete/alerts HTTP/1.1" 404 - +2025-12-08 13:24:09,306 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:09] "GET /api/alerts?page=1&per_page=50 HTTP/1.1" 200 - +2025-12-08 13:24:17,892 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:24:33,642 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:33] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:24:44,176 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:24:51,434 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:24:51] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:24:51,470 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:24:51] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:24:55,480 - werkzeug - INFO - 211.141.219.110 - - [08/Dec/2025 13:24:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:25:11,583 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:25:11] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:25:16,365 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:25:16] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:25:35,401 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:25:35] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:25:58,762 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:25:58] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:25:59,367 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:25:59] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:26:10,513 - werkzeug - INFO - 220.196.160.125 - - [08/Dec/2025 13:26:10] "GET / HTTP/1.1" 200 - +2025-12-08 13:26:11,746 - werkzeug - INFO - 159.75.199.224 - - [08/Dec/2025 13:26:11] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-08 13:26:11,953 - werkzeug - INFO - 159.75.199.224 - - [08/Dec/2025 13:26:11] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-08 13:26:12,169 - werkzeug - INFO - 43.144.106.82 - - [08/Dec/2025 13:26:12] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-08 13:26:12,765 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:12] "GET / HTTP/1.1" 200 - +2025-12-08 13:26:13,198 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-08 13:26:13,226 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-08 13:26:13,641 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-08 13:26:13,653 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-08 13:26:13,660 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-08 13:26:13,664 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-08 13:26:13,669 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-08 13:26:13,683 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-08 13:26:13,904 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:13] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-08 13:26:15,947 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:15] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-08 13:26:15,949 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:15] "GET /api/rules HTTP/1.1" 200 - +2025-12-08 13:26:16,071 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:16] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-08 13:26:16,270 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:16] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:26:16,524 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:16] "GET /api/workorders HTTP/1.1" 200 - +2025-12-08 13:26:16,791 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:16] "GET /api/system/info HTTP/1.1" 200 - +2025-12-08 13:26:17,023 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:17] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-08 13:26:17,130 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:17] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-08 13:26:17,808 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:17] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-08 13:26:17,918 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:17] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:26:22,605 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:22] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-08 13:26:26,034 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:26] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:26:27,225 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:26:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:26:30,789 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:26:30] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:26:36,011 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:36] "GET /api/alerts HTTP/1.1" 200 - +2025-12-08 13:26:44,098 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:26:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:26:47,862 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:26:47] "GET /api/settings HTTP/1.1" 200 - +2025-12-08 13:27:02,616 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:27:02,627 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:27:02,628 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:27:02,631 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:27:02,632 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:27:02,817 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:27:31,856 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:27:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:27:40,039 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:27:40] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-08 13:27:43,368 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:27:43] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 13:27:54,941 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:27:54] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:28:04,121 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.0% +2025-12-08 13:28:04,135 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.1% +2025-12-08 13:28:04,143 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.0% +2025-12-08 13:28:04,148 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.0% +2025-12-08 13:28:04,148 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.1% +2025-12-08 13:28:04,153 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.0% +2025-12-08 13:28:26,089 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:28:26] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:31:34,853 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.1% +2025-12-08 13:31:34,850 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.1% +2025-12-08 13:31:34,864 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.1% +2025-12-08 13:31:34,873 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.1% +2025-12-08 13:31:34,879 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.1% +2025-12-08 13:31:34,932 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 94.0% +2025-12-08 13:31:44,979 - src.core.database - ERROR - 数据库操作失败: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query') +[SQL: SELECT alerts.id AS alerts_id, alerts.rule_name AS alerts_rule_name, alerts.alert_type AS alerts_alert_type, alerts.level AS alerts_level, alerts.severity AS alerts_severity, alerts.message AS alerts_message, alerts.data AS alerts_data, alerts.is_active AS alerts_is_active, alerts.created_at AS alerts_created_at, alerts.resolved_at AS alerts_resolved_at +FROM alerts +WHERE alerts.is_active = true ORDER BY alerts.created_at DESC] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-08 13:31:45,046 - src.analytics.alert_system - ERROR - 获取活跃预警失败: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query') +[SQL: SELECT alerts.id AS alerts_id, alerts.rule_name AS alerts_rule_name, alerts.alert_type AS alerts_alert_type, alerts.level AS alerts_level, alerts.severity AS alerts_severity, alerts.message AS alerts_message, alerts.data AS alerts_data, alerts.is_active AS alerts_is_active, alerts.created_at AS alerts_created_at, alerts.resolved_at AS alerts_resolved_at +FROM alerts +WHERE alerts.is_active = true ORDER BY alerts.created_at DESC] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-08 13:31:56,702 - werkzeug - INFO - 180.101.245.246 - - [08/Dec/2025 13:31:56] "GET /api/analytics HTTP/1.1" 200 - +2025-12-08 13:32:16,444 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:32:16] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:32:22,328 - werkzeug - INFO - 220.205.252.43 - - [08/Dec/2025 13:32:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-08 13:32:36,038 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:32:36,044 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:32:36,045 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:32:36,045 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:32:36,069 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.2% +2025-12-08 13:32:36,088 - src.core.system_optimizer - WARNING - 性能预警: 内存使用率过高: 88.1% +2025-12-10 16:03:04,292 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-10 16:03:08,151 - src.core.database - INFO - 数据库初始化成功 +2025-12-10 16:03:08,620 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-10 16:03:10,589 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-10 16:03:10,622 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-10 16:03:10,712 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://172.23.31.194:5000 +2025-12-10 16:03:10,712 - werkzeug - INFO - Press CTRL+C to quit +2025-12-10 16:03:11,311 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:11,538 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-10 16:03:11,543 - websockets.server - INFO - server listening on [::1]:8765 +2025-12-10 16:03:11,544 - websockets.server - INFO - server listening on 127.0.0.1:8765 +2025-12-10 16:03:13,917 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:13] "GET / HTTP/1.1" 200 - +2025-12-10 16:03:14,894 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-10 16:03:14,894 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-10 16:03:14,895 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:14] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-10 16:03:14,935 - websockets.server - INFO - connection open +2025-12-10 16:03:14,936 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-10 16:03:15,753 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:16,183 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:16] "GET /api/alerts HTTP/1.1" 200 - +2025-12-10 16:03:16,262 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:16,308 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:16,463 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:16,504 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-10 16:03:16,756 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:16,819 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:16] "GET /api/workorders HTTP/1.1" 200 - +2025-12-10 16:03:16,904 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:16,986 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-10 16:03:16,987 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:16] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-10 16:03:16,993 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:16] "GET /api/system/info HTTP/1.1" 200 - +2025-12-10 16:03:16,997 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:16] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-10 16:03:17,148 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-10 16:03:17,149 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:17] "GET /api/rules HTTP/1.1" 200 - +2025-12-10 16:03:17,155 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:17] "GET /favicon.ico HTTP/1.1" 404 - +2025-12-10 16:03:17,234 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:17,386 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 24 个条目 +2025-12-10 16:03:17,479 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-10 16:03:17,480 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-10 16:03:17,480 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-10 16:03:17,481 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-10 16:03:17,482 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-10 16:03:17,484 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-10 16:03:17,485 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-10 16:03:17,486 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-10 16:03:17,487 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-10 16:03:17,489 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-10 16:03:17,489 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-10 16:03:17,490 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-10 16:03:17,492 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-10 16:03:17,492 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-10 16:03:17,494 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-10 16:03:17,495 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-10 16:03:17,496 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-10 16:03:17,497 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-10 16:03:17,498 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-10 16:03:17,499 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-10 16:03:17,500 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-10 16:03:17,503 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-10 16:03:17,505 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-10 16:03:17,506 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-10 16:03:17,507 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-10 16:03:17,629 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-10 16:03:17,741 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:17] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-10 16:03:17,746 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:17] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-10 16:03:17,750 - src.dialogue.realtime_chat - INFO - 创建新会话: session_user_001_1765353797 +2025-12-10 16:03:17,751 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:17] "POST /api/chat/session HTTP/1.1" 200 - +2025-12-10 16:03:18,141 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:18] "GET /api/workorders HTTP/1.1" 200 - +2025-12-10 16:03:18,352 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:18] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-10 16:03:18,469 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:18] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-10 16:03:19,067 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:19] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-10 16:03:19,984 - websockets.server - INFO - connection open +2025-12-10 16:03:19,985 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-10 16:03:20,026 - src.knowledge_base.knowledge_manager - INFO - 搜索查询 'APP显示车辆信息错误' 返回 1 个结果 +2025-12-10 16:03:21,987 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:21] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-10 16:03:22,618 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:22] "GET /api/workorders?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-10 16:03:23,274 - src.core.llm_client - INFO - API请求成功 +2025-12-10 16:03:24,420 - src.knowledge_base.knowledge_manager - INFO - 成功更新 1 个知识库条目的使用次数 +2025-12-10 16:03:24,421 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:24] "POST /api/chat/message HTTP/1.1" 200 - +2025-12-10 16:03:24,992 - websockets.server - INFO - connection open +2025-12-10 16:03:24,993 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-10 16:03:25,021 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:25] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-10 16:03:25,110 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:25] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-10 16:03:25,749 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:25] "GET /api/alerts HTTP/1.1" 200 - +2025-12-10 16:03:29,707 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:29] "POST /api/batch-delete/workorders HTTP/1.1" 200 - +2025-12-10 16:03:30,005 - websockets.server - INFO - connection open +2025-12-10 16:03:30,005 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-10 16:03:31,279 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:31] "GET /api/workorders?page=true&per_page=10 HTTP/1.1" 200 - +2025-12-10 16:03:35,011 - websockets.server - INFO - connection open +2025-12-10 16:03:35,011 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-10 16:03:35,546 - werkzeug - INFO - 127.0.0.1 - - [10/Dec/2025 16:03:35] "GET /api/alerts HTTP/1.1" 200 - +2025-12-10 16:03:40,022 - websockets.server - INFO - connection open +2025-12-10 16:03:40,022 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-10 16:03:45,038 - websockets.server - INFO - connection open +2025-12-10 16:03:45,038 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 09:56:08,705 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 09:56:22,795 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 09:56:44,222 - src.core.database - ERROR - 数据库初始化失败: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'jeason.online' ([WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)") +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 09:56:44,223 - __main__ - ERROR - 数据库连接失败,退出启动 +2025-12-12 09:57:09,661 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 09:57:09,974 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 09:57:09,975 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 09:57:11,908 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 09:57:11,917 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 09:57:12,030 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 09:57:12,031 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 09:57:12,056 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 09:57:12,062 - websockets.server - INFO - server listening on [::1]:8765 +2025-12-12 09:57:12,063 - websockets.server - INFO - server listening on 127.0.0.1:8765 +2025-12-12 09:57:21,982 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:21] "GET / HTTP/1.1" 200 - +2025-12-12 09:57:22,283 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 09:57:22,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 09:57:22,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 09:57:22,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 09:57:22,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 09:57:22,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 09:57:22,591 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 09:57:22,621 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 09:57:22,622 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:22] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 09:57:23,100 - websockets.server - INFO - connection open +2025-12-12 09:57:23,100 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 09:57:23,343 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:57:23,344 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-12 09:57:23,347 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-12 09:57:23,348 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 09:57:23,350 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 09:57:23,351 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-12 09:57:23,351 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 09:57:23,351 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 09:57:23,354 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 09:57:23,357 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 09:57:23,381 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:23,654 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 09:57:23,666 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 09:57:23,672 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 09:57:23,677 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 09:57:23,692 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 09:57:23,715 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-12 09:57:23,716 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-12 09:57:23,717 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-12 09:57:23,718 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-12 09:57:23,720 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-12 09:57:23,721 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-12 09:57:23,722 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-12 09:57:23,723 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-12 09:57:23,723 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-12 09:57:23,725 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-12 09:57:23,727 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-12 09:57:23,728 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-12 09:57:23,730 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-12 09:57:23,731 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-12 09:57:23,732 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-12 09:57:23,733 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-12 09:57:23,735 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-12 09:57:23,736 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-12 09:57:23,737 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-12 09:57:23,738 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-12 09:57:23,739 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-12 09:57:23,741 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-12 09:57:23,743 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-12 09:57:23,744 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-12 09:57:23,746 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-12 09:57:23,752 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 09:57:23,991 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:23] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 09:57:24,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:24] "GET /favicon.ico HTTP/1.1" 404 - +2025-12-12 09:57:24,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:24] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 09:57:24,580 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:24] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 09:57:24,639 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:24] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 09:57:26,075 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET / HTTP/1.1" 200 - +2025-12-12 09:57:26,169 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 09:57:26,175 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 09:57:26,178 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 09:57:26,189 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 09:57:26,190 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 09:57:26,195 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 09:57:26,211 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 09:57:26,213 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 09:57:26,227 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 09:57:26,830 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:57:26,835 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 09:57:26,843 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 09:57:26,852 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 09:57:26,871 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 09:57:26,875 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 09:57:26,881 - websockets.server - INFO - connection open +2025-12-12 09:57:26,883 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:26,885 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 09:57:26,886 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 09:57:26,899 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 09:57:26,904 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 09:57:26,914 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 09:57:26,963 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /favicon.ico HTTP/1.1" 404 - +2025-12-12 09:57:26,965 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 09:57:26,994 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:26] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 09:57:27,006 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:27] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 09:57:27,021 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:27] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 09:57:28,128 - websockets.server - INFO - connection open +2025-12-12 09:57:28,129 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 09:57:28,350 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:28] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:28,429 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:28] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 09:57:28,431 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:28] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 09:57:28,749 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:28] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 09:57:30,520 - src.dialogue.realtime_chat - INFO - 创建新会话: session_user_001_1765504650 +2025-12-12 09:57:30,521 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:30] "POST /api/chat/session HTTP/1.1" 200 - +2025-12-12 09:57:31,835 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:31,867 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:31] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 09:57:31,870 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:31] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 09:57:31,882 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:31] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 09:57:31,945 - websockets.server - INFO - connection open +2025-12-12 09:57:31,946 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 09:57:31,971 - src.knowledge_base.knowledge_manager - WARNING - 知识库中没有活跃条目 +2025-12-12 09:57:33,140 - websockets.server - INFO - connection open +2025-12-12 09:57:33,141 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 09:57:33,345 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:33] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:57:33,378 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:33] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:36,097 - src.core.llm_client - INFO - API请求成功 +2025-12-12 09:57:36,109 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:36] "POST /api/chat/message HTTP/1.1" 200 - +2025-12-12 09:57:37,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:37] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:57:37,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:41,846 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:41] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:44,614 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:44] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 09:57:44,616 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:44] "GET /api/agent/tools/stats HTTP/1.1" 200 - +2025-12-12 09:57:45,837 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:45] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 09:57:46,824 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:46] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:57:46,839 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:46] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:48,447 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:48] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 09:57:48,671 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:48] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 09:57:48,865 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:48] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 09:57:52,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:57:57,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:57] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:57:57,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:57:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:02,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:05,580 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:05] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 09:58:06,830 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:06] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:58:06,845 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:06] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:07,039 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:07] "GET /api/workorders?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 09:58:08,543 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:08] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 09:58:11,755 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:11] "GET /api/conversations/1 HTTP/1.1" 200 - +2025-12-12 09:58:11,845 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:11] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:15,046 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:15] "GET /api/token-monitor/stats HTTP/1.1" 200 - +2025-12-12 09:58:15,065 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:15] "GET /api/token-monitor/records HTTP/1.1" 200 - +2025-12-12 09:58:15,067 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:15] "GET /api/token-monitor/chart HTTP/1.1" 200 - +2025-12-12 09:58:16,833 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:16] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:58:16,859 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:16] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:18,279 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:18] "GET /api/ai-monitor/stats HTTP/1.1" 200 - +2025-12-12 09:58:18,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:18] "GET /api/ai-monitor/model-comparison HTTP/1.1" 200 - +2025-12-12 09:58:18,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:18] "GET /api/ai-monitor/error-distribution HTTP/1.1" 200 - +2025-12-12 09:58:18,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:18] "GET /api/ai-monitor/error-log HTTP/1.1" 200 - +2025-12-12 09:58:21,836 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:21] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:21,917 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:21] "GET /api/system-optimizer/status HTTP/1.1" 200 - +2025-12-12 09:58:21,928 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:21] "GET /api/system-optimizer/security-settings HTTP/1.1" 200 - +2025-12-12 09:58:21,929 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:21] "GET /api/system-optimizer/traffic-settings HTTP/1.1" 200 - +2025-12-12 09:58:21,931 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:21] "GET /api/system-optimizer/cost-settings HTTP/1.1" 200 - +2025-12-12 09:58:24,855 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:24] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 09:58:24,878 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:24] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 09:58:24,964 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:24] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 09:58:26,824 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:26] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:58:26,840 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:26] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:32,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:37,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:37] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:58:37,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:42,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:45,244 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:45] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 09:58:45,252 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:45] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 09:58:45,267 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:45] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 09:58:46,828 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:46] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:58:46,845 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:46] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:49,207 - src.integrations.feishu_client - INFO - 正在获取飞书tenant_access_token,应用ID: cli_a8b50ec0eed1500d +2025-12-12 09:58:49,381 - src.integrations.feishu_client - INFO - 飞书API响应: {'code': 0, 'expire': 3072, 'msg': 'ok', 'tenant_access_token': 't-g104cc8O2CZW3GLGNUZ3LZWBEO5TTEGCCVWP2HHG'} +2025-12-12 09:58:49,382 - src.integrations.feishu_client - INFO - tenant_access_token获取成功: t-g104cc8O2CZW3GLGNU... +2025-12-12 09:58:49,382 - src.integrations.feishu_client - INFO - 令牌有效期: 3072秒,过期时间: 2025-12-12 10:50:01 +2025-12-12 09:58:49,383 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records +2025-12-12 09:58:49,383 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104cc8O2CZW3GLGNU... +2025-12-12 09:58:52,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:58:53,022 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 09:58:53,023 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'has_more': False, 'items': [{'fields': {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}, {'fields': {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}, {'fields': {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}, {'fields': {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}], 'total': 4}, 'msg': 'success'} +2025-12-12 09:58:53,027 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:53] "GET /api/feishu-sync/preview-feishu-data HTTP/1.1" 200 - +2025-12-12 09:58:57,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:57] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:58:57,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:58:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:02,778 - src.integrations.workorder_sync - INFO - 从飞书记录 rec253kqBfXae4 创建工单 +2025-12-12 09:59:02,778 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/rec253kqBfXae4 +2025-12-12 09:59:02,779 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104cc8O2CZW3GLGNU... +2025-12-12 09:59:02,793 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:04,679 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 09:59:04,679 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}}, 'msg': 'success'} +2025-12-12 09:59:04,681 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'} +2025-12-12 09:59:04,682 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-12 09:59:04,682 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:The widget weather doesn't work + +相关背景信息: +无相关背景信息 + +请提供: +1. 问题... +2025-12-12 09:59:04,683 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Evgeniy +2025-12-12 09:59:04,683 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1745769600000 +2025-12-12 09:59:04,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: local O&M +2025-12-12 09:59:04,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-12 09:59:04,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: The widget weather doesn't work +2025-12-12 09:59:04,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-12 09:59:04,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR559 +2025-12-12 09:59:04,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-12 09:59:04,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs. +2025-12-12 09:59:04,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: HU troubles +2025-12-12 09:59:04,686 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LVTDD24B8RG019153 +2025-12-12 09:59:04,686 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: EXEED RX(T22) +2025-12-12 09:59:04,686 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: Evgeniy +2025-12-12 09:59:04,686 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志 +2025-12-12 09:59:04,691 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-12 09:59:04,691 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-12 09:59:04,691 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-12 09:59:04,692 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-12 09:59:04,692 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-12 09:59:04,704 - src.integrations.workorder_sync - INFO - 创建工单成功: TR559 +2025-12-12 09:59:04,704 - src.integrations.workorder_sync - ERROR - 从飞书记录创建工单失败: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3) +2025-12-12 09:59:04,705 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:04] "POST /api/feishu-sync/create-workorder HTTP/1.1" 400 - +2025-12-12 09:59:07,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:07] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:59:07,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:12,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:17,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:17] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:59:17,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:22,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:23,519 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:23] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 09:59:26,833 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:26] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:59:26,851 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:26] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:31,840 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:37,285 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:37] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:59:37,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:42,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:47,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:47] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:59:47,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:52,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 09:59:57,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:57] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 09:59:57,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 09:59:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:02,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:07,074 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:00:07,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:07] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:00:07,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:07,386 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:00:07,387 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:00:09,273 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:00:09,284 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:00:09,394 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:00:09,394 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 10:00:09,418 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:00:12,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:17,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:17] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:00:17,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:18,114 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET / HTTP/1.1" 200 - +2025-12-12 10:00:18,358 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:00:18,453 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:00:18,453 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:00:18,458 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:00:18,460 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:00:18,462 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:00:18,666 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:00:18,776 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:00:18,776 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:18] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:00:19,586 - websockets.server - INFO - connection open +2025-12-12 10:00:19,586 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:00:19,840 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:19] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:00:19,843 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:19] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:00:19,846 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:19] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:00:19,854 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:19] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:00:19,859 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:19] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:20,152 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:00:20,157 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:00:20,162 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:00:20,166 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:00:20,168 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:00:20,175 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:00:20,489 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:00:20,821 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:20] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:00:21,063 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:21] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:00:21,140 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:21] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:00:22,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:23,011 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:23] "GET /favicon.ico HTTP/1.1" 404 - +2025-12-12 10:00:24,607 - websockets.server - INFO - connection open +2025-12-12 10:00:24,607 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:00:24,837 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:24] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:24,906 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:24] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:00:24,910 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:24] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:00:25,149 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:25] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:00:27,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:27] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:00:27,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:29,526 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:29] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:00:29,624 - websockets.server - INFO - connection open +2025-12-12 10:00:29,624 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + path = websocket.path + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:00:29,848 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:29] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:32,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:00:55,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:00:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:00:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:01:55,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:01:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:01:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:01:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:02:55,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:02:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:02:55,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:02:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:03:12,136 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:03:12,432 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:03:12,433 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:03:14,224 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:03:14,233 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:03:14,339 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:03:14,340 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 10:03:14,363 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:03:24,337 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /dashboard HTTP/1.1" 200 - +2025-12-12 10:03:24,525 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:03:24,525 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:03:24,530 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:03:24,544 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:03:24,547 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:03:24,549 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:03:24,556 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:03:24,557 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:03:24,558 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:24] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:03:25,705 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:03:25,705 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:03:25,710 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:03:25,721 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:03:25,727 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:03:25,736 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:03:25,742 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:03:25,742 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:03:25,751 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:03:25,771 - websockets.server - INFO - connection open +2025-12-12 10:03:25,771 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + if websocket.request_headers.get("Origin"): + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:03:25,773 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:03:25,776 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:03:25,794 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:03:25,811 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:03:25,823 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:03:25,833 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:25] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:03:26,677 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:26] "GET /favicon.ico HTTP/1.1" 404 - +2025-12-12 10:03:30,714 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:30] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:03:30,796 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:30] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:03:30,799 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:30] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:03:30,802 - websockets.server - INFO - connection open +2025-12-12 10:03:30,804 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + if websocket.request_headers.get("Origin"): + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:03:30,811 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:30] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:03:35,708 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:35] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:03:35,723 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:03:35,814 - websockets.server - INFO - connection open +2025-12-12 10:03:35,815 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + if websocket.request_headers.get("Origin"): + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:03:40,711 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:03:40,821 - websockets.server - INFO - connection open +2025-12-12 10:03:40,821 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + if websocket.request_headers.get("Origin"): + ^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:03:55,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:03:55,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:03:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:04:55,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:04:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:04:55,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:04:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:05:55,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:05:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:05:55,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:05:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:06:55,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:06:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:06:55,326 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:06:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:07:26,517 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:07:26,814 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:07:26,816 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:07:28,608 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:07:28,617 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:07:28,722 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:07:28,723 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 10:07:28,746 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:07:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:07:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:07:55,332 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:07:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:08:55,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:08:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:08:55,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:08:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:09:36,651 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:09:36,944 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:09:36,945 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:09:38,754 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:09:38,764 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:09:38,877 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:09:38,878 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 10:09:38,902 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:09:55,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:09:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:09:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:09:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:10:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:10:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:10:55,324 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:10:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:11:06,581 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:11:06,877 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:11:06,878 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:11:08,730 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:11:08,740 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:11:08,843 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:11:08,844 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 10:11:08,867 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:11:44,560 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET / HTTP/1.1" 200 - +2025-12-12 10:11:44,628 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:11:44,632 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:11:44,636 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:11:44,640 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:11:44,646 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:11:44,648 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:11:44,652 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:11:44,655 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:11:44,657 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:44] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:11:45,640 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:11:45,641 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:11:45,645 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:11:45,655 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:11:45,663 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:11:45,672 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:11:45,673 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:11:45,680 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:11:45,681 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:11:45,703 - websockets.server - INFO - connection open +2025-12-12 10:11:45,704 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:11:45,706 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:11:45,708 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:11:45,729 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:11:45,745 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:11:45,752 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:11:45,767 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:45] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:11:46,642 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:46] "GET /favicon.ico HTTP/1.1" 404 - +2025-12-12 10:11:50,657 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:11:50,717 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:50] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:11:50,718 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:50] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:11:50,730 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:50] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:11:50,734 - websockets.server - INFO - connection open +2025-12-12 10:11:50,736 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:11:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:11:55,324 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:11:55,647 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:11:55,663 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:11:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:11:55,757 - websockets.server - INFO - connection open +2025-12-12 10:11:55,758 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:12:00,667 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:12:00,770 - websockets.server - INFO - connection open +2025-12-12 10:12:00,771 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:12:05,656 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:05] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:12:05,665 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:05] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:12:05,777 - websockets.server - INFO - connection open +2025-12-12 10:12:05,778 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:12:10,662 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:10] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:12:10,787 - websockets.server - INFO - connection open +2025-12-12 10:12:10,788 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:12:15,644 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:12:15,653 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:12:15,661 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:12:15,664 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:12:15,674 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:12:15,675 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:12:15,685 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:12:15,703 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:12:15,712 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:12:15,718 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:15] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:12:15,796 - websockets.server - INFO - connection open +2025-12-12 10:12:15,796 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:12:20,656 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:20] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:12:20,802 - websockets.server - INFO - connection open +2025-12-12 10:12:20,803 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:12:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:12:55,330 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:12:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:13:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:13:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:13:55,327 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:13:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:01,488 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "GET / HTTP/1.1" 200 - +2025-12-12 10:14:01,567 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 304 - +2025-12-12 10:14:01,568 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 304 - +2025-12-12 10:14:01,587 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "GET /static/css/design-system.css HTTP/1.1" 304 - +2025-12-12 10:14:01,591 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "GET /static/js/core/store.js HTTP/1.1" 304 - +2025-12-12 10:14:01,596 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "GET /static/js/services/api.js HTTP/1.1" 304 - +2025-12-12 10:14:01,604 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "GET /static/js/components/NotificationManager.js HTTP/1.1" 304 - +2025-12-12 10:14:01,606 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "GET /static/js/components/AlertManager.js HTTP/1.1" 304 - +2025-12-12 10:14:01,612 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "GET /static/js/app-new.js HTTP/1.1" 304 - +2025-12-12 10:14:01,614 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:01] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 304 - +2025-12-12 10:14:02,265 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:14:02,266 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:02,271 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:14:02,280 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:14:02,285 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:14:02,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:14:02,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:14:02,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:02,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:14:02,355 - websockets.server - INFO - connection open +2025-12-12 10:14:02,356 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:02,358 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:14:02,362 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:14:02,423 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:14:02,444 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:14:02,453 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:14:02,461 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:02] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:14:07,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:08,284 - websockets.server - INFO - connection open +2025-12-12 10:14:08,285 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:08,288 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:08] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:14:08,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:08] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:14:08,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:08] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:14:12,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:12,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:14,293 - websockets.server - INFO - connection open +2025-12-12 10:14:14,294 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:17,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:20,279 - websockets.server - INFO - connection open +2025-12-12 10:14:20,280 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:22,287 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:22,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:26,291 - websockets.server - INFO - connection open +2025-12-12 10:14:26,292 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:27,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:32,288 - websockets.server - INFO - connection open +2025-12-12 10:14:32,289 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:32,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:32,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:37,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:37,998 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:14:38,286 - websockets.server - INFO - connection open +2025-12-12 10:14:38,286 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:38,292 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:14:38,293 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:14:40,095 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:14:40,104 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:14:40,207 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:14:40,208 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 10:14:40,231 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:14:42,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:42,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:44,291 - websockets.server - INFO - connection open +2025-12-12 10:14:44,292 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:47,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:48,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:48] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:14:49,835 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:49] "GET / HTTP/1.1" 200 - +2025-12-12 10:14:50,099 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:14:50,161 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:14:50,161 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:14:50,162 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:14:50,165 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:14:50,167 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:14:50,283 - websockets.server - INFO - connection open +2025-12-12 10:14:50,284 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:50,406 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:14:50,468 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:14:50,475 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:50] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:14:50,930 - websockets.server - INFO - connection open +2025-12-12 10:14:50,931 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:51,177 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:14:51,180 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:51,182 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:14:51,191 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:14:51,198 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:51,486 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:14:51,494 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:14:51,496 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:14:51,498 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:14:51,502 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:14:51,509 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:14:51,809 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:51] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:14:52,132 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:52] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:14:52,205 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:52] "GET /favicon.ico HTTP/1.1" 404 - +2025-12-12 10:14:52,289 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:52,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:52,391 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:52] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:14:52,455 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:52] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:14:55,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:14:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:55,965 - websockets.server - INFO - connection open +2025-12-12 10:14:55,966 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:56,186 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:56] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:14:56,256 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:56] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:14:56,260 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:56] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:14:56,294 - websockets.server - INFO - connection open +2025-12-12 10:14:56,296 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:14:56,583 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:56] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:14:57,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:14:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:15:00,887 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:15:00,974 - websockets.server - INFO - connection open +2025-12-12 10:15:00,975 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:01,198 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:01] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:15:02,290 - websockets.server - INFO - connection open +2025-12-12 10:15:02,291 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:02,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:15:05,979 - websockets.server - INFO - connection open +2025-12-12 10:15:05,980 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:06,197 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:06] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:15:08,293 - websockets.server - INFO - connection open +2025-12-12 10:15:08,294 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:14,288 - websockets.server - INFO - connection open +2025-12-12 10:15:14,288 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:20,288 - websockets.server - INFO - connection open +2025-12-12 10:15:20,289 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:26,287 - websockets.server - INFO - connection open +2025-12-12 10:15:26,288 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:32,280 - websockets.server - INFO - connection open +2025-12-12 10:15:32,281 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:38,280 - websockets.server - INFO - connection open +2025-12-12 10:15:38,281 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:44,283 - websockets.server - INFO - connection open +2025-12-12 10:15:44,284 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:50,288 - websockets.server - INFO - connection open +2025-12-12 10:15:50,289 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:15:55,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:15:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:15:55,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:15:55,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:55] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:15:55,330 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:15:55,332 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:55] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:15:55,350 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:15:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:15:56,283 - websockets.server - INFO - connection open +2025-12-12 10:15:56,284 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:02,283 - websockets.server - INFO - connection open +2025-12-12 10:16:02,283 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:08,294 - websockets.server - INFO - connection open +2025-12-12 10:16:08,295 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:14,285 - websockets.server - INFO - connection open +2025-12-12 10:16:14,285 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:20,280 - websockets.server - INFO - connection open +2025-12-12 10:16:20,281 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:26,287 - websockets.server - INFO - connection open +2025-12-12 10:16:26,287 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:32,292 - websockets.server - INFO - connection open +2025-12-12 10:16:32,293 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:38,282 - websockets.server - INFO - connection open +2025-12-12 10:16:38,282 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:44,293 - websockets.server - INFO - connection open +2025-12-12 10:16:44,294 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:50,289 - websockets.server - INFO - connection open +2025-12-12 10:16:50,290 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:16:55,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:16:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:16:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:16:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:16:55,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:16:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:16:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:16:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:16:55,334 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:16:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:16:56,285 - websockets.server - INFO - connection open +2025-12-12 10:16:56,285 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:02,285 - websockets.server - INFO - connection open +2025-12-12 10:17:02,285 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:08,288 - websockets.server - INFO - connection open +2025-12-12 10:17:08,288 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:14,292 - websockets.server - INFO - connection open +2025-12-12 10:17:14,293 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:20,294 - websockets.server - INFO - connection open +2025-12-12 10:17:20,295 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:24,458 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:17:24,751 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:17:24,752 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:17:26,291 - websockets.server - INFO - connection open +2025-12-12 10:17:26,292 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:26,569 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:17:26,579 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:17:26,687 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:17:26,688 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 10:17:26,711 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:17:32,291 - websockets.server - INFO - connection open +2025-12-12 10:17:32,292 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:36,014 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET / HTTP/1.1" 200 - +2025-12-12 10:17:36,275 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:17:36,339 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:17:36,339 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:17:36,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:17:36,342 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:17:36,344 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:17:36,584 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:17:36,648 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:17:36,653 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:36] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:17:37,080 - websockets.server - INFO - connection open +2025-12-12 10:17:37,081 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:37,333 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:17:37,334 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:17:37,337 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:17:37,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:17:37,352 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:17:37,648 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:17:37,651 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:17:37,654 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:17:37,658 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:17:37,659 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:17:37,665 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:17:37,984 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:37] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:17:38,200 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:38] "GET /favicon.ico HTTP/1.1" 404 - +2025-12-12 10:17:38,293 - websockets.server - INFO - connection open +2025-12-12 10:17:38,293 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:38,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:38] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:17:38,631 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:38] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:17:38,890 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:38] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:17:42,098 - websockets.server - INFO - connection open +2025-12-12 10:17:42,099 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:42,336 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:17:42,410 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:42] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:17:42,417 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:42] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:17:42,730 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:42] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:17:44,292 - websockets.server - INFO - connection open +2025-12-12 10:17:44,292 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:47,108 - websockets.server - INFO - connection open +2025-12-12 10:17:47,108 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:47,336 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:47] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:17:47,344 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:17:50,289 - websockets.server - INFO - connection open +2025-12-12 10:17:50,290 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:17:55,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:17:55,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:55] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:17:55,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:17:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:55] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:17:55,330 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:17:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:17:56,286 - websockets.server - INFO - connection open +2025-12-12 10:17:56,286 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:02,287 - websockets.server - INFO - connection open +2025-12-12 10:18:02,287 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:08,282 - websockets.server - INFO - connection open +2025-12-12 10:18:08,283 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:14,290 - websockets.server - INFO - connection open +2025-12-12 10:18:14,290 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:20,282 - websockets.server - INFO - connection open +2025-12-12 10:18:20,283 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:26,285 - websockets.server - INFO - connection open +2025-12-12 10:18:26,285 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:32,285 - websockets.server - INFO - connection open +2025-12-12 10:18:32,286 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:38,282 - websockets.server - INFO - connection open +2025-12-12 10:18:38,282 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:44,291 - websockets.server - INFO - connection open +2025-12-12 10:18:44,292 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:50,280 - websockets.server - INFO - connection open +2025-12-12 10:18:50,281 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:18:55,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:18:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:18:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:18:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:18:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:18:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:18:56,283 - websockets.server - INFO - connection open +2025-12-12 10:18:56,284 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:02,291 - websockets.server - INFO - connection open +2025-12-12 10:19:02,291 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:08,282 - websockets.server - INFO - connection open +2025-12-12 10:19:08,283 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:14,296 - websockets.server - INFO - connection open +2025-12-12 10:19:14,296 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:20,295 - websockets.server - INFO - connection open +2025-12-12 10:19:20,296 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:26,282 - websockets.server - INFO - connection open +2025-12-12 10:19:26,282 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:32,284 - websockets.server - INFO - connection open +2025-12-12 10:19:32,285 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:38,290 - websockets.server - INFO - connection open +2025-12-12 10:19:38,290 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:44,289 - websockets.server - INFO - connection open +2025-12-12 10:19:44,289 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:50,293 - websockets.server - INFO - connection open +2025-12-12 10:19:50,293 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:19:55,325 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:19:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:19:55,331 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:19:55] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:19:55,335 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:19:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:19:55,352 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:19:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:19:55,359 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:19:55] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:19:56,329 - websockets.server - INFO - connection open +2025-12-12 10:19:56,329 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:20:02,292 - websockets.server - INFO - connection open +2025-12-12 10:20:02,293 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:20:08,289 - websockets.server - INFO - connection open +2025-12-12 10:20:08,289 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:20:14,295 - websockets.server - INFO - connection open +2025-12-12 10:20:14,295 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 247, in handle_client_with_cors + self.port, + ^^^^ +AttributeError: 'ServerConnection' object has no attribute 'path' +2025-12-12 10:20:18,194 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:18] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:18,225 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:18] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:22,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:22,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:27,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:32,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:32,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:37,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:42,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:42,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:43,051 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:20:43,444 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:20:43,445 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:20:45,490 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:20:45,500 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:20:45,614 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:20:45,615 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 10:20:45,640 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:20:45,646 - websockets.server - INFO - server listening on [::1]:8765 +2025-12-12 10:20:45,646 - websockets.server - INFO - server listening on 127.0.0.1:8765 +2025-12-12 10:20:47,293 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:20:47,304 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:20:47,333 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:48,813 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:48] "GET / HTTP/1.1" 200 - +2025-12-12 10:20:49,080 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 304 - +2025-12-12 10:20:49,086 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /static/js/app-new.js HTTP/1.1" 304 - +2025-12-12 10:20:49,091 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 304 - +2025-12-12 10:20:49,137 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /static/css/design-system.css HTTP/1.1" 304 - +2025-12-12 10:20:49,140 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /static/js/components/NotificationManager.js HTTP/1.1" 304 - +2025-12-12 10:20:49,143 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 304 - +2025-12-12 10:20:49,151 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /static/js/core/store.js HTTP/1.1" 304 - +2025-12-12 10:20:49,164 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /static/js/services/api.js HTTP/1.1" 304 - +2025-12-12 10:20:49,171 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /static/js/components/AlertManager.js HTTP/1.1" 304 - +2025-12-12 10:20:49,488 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:20:49,489 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:49,494 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-12 10:20:49,497 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-12 10:20:49,502 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:20:49,506 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-12 10:20:49,508 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:20:49,514 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:20:49,526 - websockets.server - INFO - connection open +2025-12-12 10:20:49,532 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:20:49,534 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:49,539 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:20:49,543 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:20:49,545 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:20:49,554 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:20:49,577 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-12 10:20:49,577 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-12 10:20:49,578 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-12 10:20:49,581 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-12 10:20:49,585 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-12 10:20:49,588 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-12 10:20:49,591 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-12 10:20:49,593 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-12 10:20:49,595 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-12 10:20:49,597 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-12 10:20:49,600 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-12 10:20:49,602 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-12 10:20:49,604 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-12 10:20:49,606 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-12 10:20:49,608 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-12 10:20:49,611 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-12 10:20:49,613 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-12 10:20:49,616 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-12 10:20:49,624 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-12 10:20:49,628 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:20:49,629 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-12 10:20:49,630 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-12 10:20:49,634 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-12 10:20:49,637 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-12 10:20:49,639 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-12 10:20:49,641 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-12 10:20:49,653 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:20:49,662 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:20:49,675 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:20:49,686 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:49] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:20:52,021 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:52] "GET /api/workorders?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 10:20:52,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:52,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:54,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:54] "GET /api/workorders/1 HTTP/1.1" 200 - +2025-12-12 10:20:54,528 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:54] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:54,537 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:54] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:20:54,546 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:54] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:20:54,575 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:54] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:20:54,634 - websockets.server - INFO - connection open +2025-12-12 10:20:54,637 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:20:55,141 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET / HTTP/1.1" 200 - +2025-12-12 10:20:55,401 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:20:55,462 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:20:55,465 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:20:55,468 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:20:55,470 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:20:55,472 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:20:55,712 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:20:55,774 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:20:55,775 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:55] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:20:56,227 - websockets.server - INFO - connection open +2025-12-12 10:20:56,228 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:20:56,474 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:20:56,479 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:56,483 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:20:56,493 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:20:56,505 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:56,785 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:20:56,792 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:20:56,794 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:20:56,801 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:20:56,815 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:20:56,820 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:56] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:20:57,107 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:57] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:20:57,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:57,435 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:57] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:20:57,460 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:57] "GET /favicon.ico HTTP/1.1" 404 - +2025-12-12 10:20:57,692 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:57] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:20:57,754 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:57] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:20:59,481 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:59] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:20:59,496 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:20:59] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:20:59,661 - websockets.server - INFO - connection open +2025-12-12 10:20:59,662 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:21:01,250 - websockets.server - INFO - connection open +2025-12-12 10:21:01,251 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:21:01,491 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:01] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:01,550 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:01] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:21:01,556 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:01] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:21:01,875 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:01] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:21:02,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:02,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:04,487 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:04] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:04,669 - websockets.server - INFO - connection open +2025-12-12 10:21:04,669 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:21:06,268 - websockets.server - INFO - connection open +2025-12-12 10:21:06,268 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:21:06,486 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:06] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:06,504 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:06] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:07,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:09,492 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:09] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:09,546 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:09] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:09,685 - websockets.server - INFO - connection open +2025-12-12 10:21:09,686 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + ^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: WebSocketServer.handle_client() missing 1 required positional argument: 'path' +2025-12-12 10:21:12,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:12,322 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:15,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:15] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:17,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:20,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:20] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:20,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:20] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:22,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:22,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:25,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:30,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:30] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:30,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:30] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:35,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:40,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:40] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:40,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:45,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:45] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:50,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:50,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:55,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:21:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:21:55,326 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:21:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:22:00,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:22:00,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:22:05,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:05] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:22:10,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:10] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:22:10,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:10] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:22:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:22:55,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:22:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:22:55,349 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:22:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:24,018 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:23:24,036 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:23:24,037 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:24,043 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:23:24,057 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:23:24,062 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:24,068 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:23:24,074 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:24,083 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:23:24,102 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:24,490 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:24] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:27,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:27,360 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:27] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 10:23:28,191 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:28] "GET /api/alerts?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 10:23:28,972 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:28] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 10:23:29,488 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:29] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:29,504 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:29] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:29,756 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:29] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:23:29,757 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:29] "GET /api/agent/tools/stats HTTP/1.1" 200 - +2025-12-12 10:23:30,188 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:23:30,493 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:23:30,495 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:23:32,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:32,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:32,372 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:23:32,382 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:23:32,489 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:23:32,490 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 10:23:32,515 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:23:33,519 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:33] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:23:33,520 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:33] "GET /api/agent/tools/stats HTTP/1.1" 200 - +2025-12-12 10:23:34,498 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:34] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:34,873 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:34] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 10:23:37,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:39,391 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:39] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 10:23:39,486 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:39] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:39,502 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:39] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:41,279 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:41] "GET /api/token-monitor/stats HTTP/1.1" 200 - +2025-12-12 10:23:41,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:41] "GET /api/token-monitor/records HTTP/1.1" 200 - +2025-12-12 10:23:41,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:41] "GET /api/token-monitor/chart HTTP/1.1" 200 - +2025-12-12 10:23:41,826 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:41] "GET /api/ai-monitor/stats HTTP/1.1" 200 - +2025-12-12 10:23:41,837 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:41] "GET /api/ai-monitor/model-comparison HTTP/1.1" 200 - +2025-12-12 10:23:41,839 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:41] "GET /api/ai-monitor/error-distribution HTTP/1.1" 200 - +2025-12-12 10:23:41,841 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:41] "GET /api/ai-monitor/error-log HTTP/1.1" 200 - +2025-12-12 10:23:42,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:42,351 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:43,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:43] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:23:43,366 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:43] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:23:43,405 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:43] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:23:43,753 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:43] "GET /api/system-optimizer/status HTTP/1.1" 200 - +2025-12-12 10:23:43,762 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:43] "GET /api/system-optimizer/security-settings HTTP/1.1" 200 - +2025-12-12 10:23:43,764 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:43] "GET /api/system-optimizer/traffic-settings HTTP/1.1" 200 - +2025-12-12 10:23:43,766 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:43] "GET /api/system-optimizer/cost-settings HTTP/1.1" 200 - +2025-12-12 10:23:44,487 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:47,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:50,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:50,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:52,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:23:52,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:23:57,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:23:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:00,288 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:00,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:02,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:02,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:05,293 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:24:05,293 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:24:05,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:05] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:07,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:10,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:10] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:10,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:10] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:21,790 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:24:22,087 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:24:22,089 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:24:23,943 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:24:23,953 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:24:24,058 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:24:24,059 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 10:24:24,082 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:24:24,088 - websockets.server - INFO - server listening on [::1]:8765 +2025-12-12 10:24:24,088 - websockets.server - INFO - server listening on 127.0.0.1:8765 +2025-12-12 10:24:24,377 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:24:24,379 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:24:24,399 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:24] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:25,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:30,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:30] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:30,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:30] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:35,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:37,895 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:37] "GET / HTTP/1.1" 200 - +2025-12-12 10:24:38,194 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:24:38,219 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:24:38,219 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:24:38,220 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:24:38,221 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:24:38,223 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:24:38,513 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:24:38,527 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:24:38,531 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:38] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:24:38,926 - websockets.server - INFO - connection open +2025-12-12 10:24:38,927 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 216, in handle_client + headers = websocket.request_headers + ^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'request_headers' +2025-12-12 10:24:39,177 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:24:39,178 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:39,186 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-12 10:24:39,187 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-12 10:24:39,189 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:24:39,193 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-12 10:24:39,195 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:24:39,202 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:39,485 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:24:39,495 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:24:39,503 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:24:39,508 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:24:39,509 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:24:39,519 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-12 10:24:39,521 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-12 10:24:39,521 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-12 10:24:39,523 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-12 10:24:39,524 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-12 10:24:39,525 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-12 10:24:39,526 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-12 10:24:39,527 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-12 10:24:39,529 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-12 10:24:39,531 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-12 10:24:39,532 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-12 10:24:39,533 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-12 10:24:39,535 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-12 10:24:39,536 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-12 10:24:39,537 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-12 10:24:39,538 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-12 10:24:39,539 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-12 10:24:39,540 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-12 10:24:39,541 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-12 10:24:39,542 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-12 10:24:39,543 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-12 10:24:39,544 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-12 10:24:39,547 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-12 10:24:39,548 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-12 10:24:39,549 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-12 10:24:39,555 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:24:39,824 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:39] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:24:40,152 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:40] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:24:40,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:40] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:40,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:40] "GET /favicon.ico HTTP/1.1" 404 - +2025-12-12 10:24:40,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:40,412 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:40] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:24:40,475 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:40] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:24:43,941 - websockets.server - INFO - connection open +2025-12-12 10:24:43,942 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 216, in handle_client + headers = websocket.request_headers + ^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'request_headers' +2025-12-12 10:24:44,198 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:44,242 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:44] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:24:44,247 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:44] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:24:44,563 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:44] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:24:45,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:45] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:48,952 - websockets.server - INFO - connection open +2025-12-12 10:24:48,953 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 216, in handle_client + headers = websocket.request_headers + ^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'request_headers' +2025-12-12 10:24:49,188 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:49] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:49,206 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:49] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:53,964 - websockets.server - INFO - connection open +2025-12-12 10:24:53,965 - websockets.server - ERROR - connection handler failed +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\websockets\asyncio\server.py", line 376, in conn_handler + await self.handler(connection) + File "D:\code\assist\src\web\websocket_server.py", line 216, in handle_client + headers = websocket.request_headers + ^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'ServerConnection' object has no attribute 'request_headers' +2025-12-12 10:24:54,187 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:54] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:55,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:55,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:24:55,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:24:55,330 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:24:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:25:55,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:25:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:25:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:25:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:25:55,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:25:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:25:55,338 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:25:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:26:38,737 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:26:39,032 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:26:39,034 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:26:40,853 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:26:40,862 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:26:40,967 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:26:40,967 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 10:26:40,989 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:26:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:26:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:26:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:26:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:26:55,329 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:26:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:26:55,355 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:26:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:31,394 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:27:31,409 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:27:31,424 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:27:31,436 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:27:31,450 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:27:31,453 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:27:31,463 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:27:31,468 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:31,501 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:27:31,526 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:32,265 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:27:32,283 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:35,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:37,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:40,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:40] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:27:40,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:42,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:27:42,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:45,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:45] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:47,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:49,389 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 10:27:49,691 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 10:27:49,693 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 10:27:50,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:27:50,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:51,544 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 10:27:51,553 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 10:27:51,667 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 10:27:51,667 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 10:27:51,693 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 10:27:52,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:27:52,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:55,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:27:57,295 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:27:57,302 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 10:27:57,326 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:27:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:00,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:00,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:02,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:02,346 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:02,606 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET / HTTP/1.1" 200 - +2025-12-12 10:28:02,905 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:28:02,925 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 10:28:02,928 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 10:28:02,932 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 10:28:02,933 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 10:28:02,935 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:02] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 10:28:03,218 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 10:28:03,231 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 10:28:03,236 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 10:28:03,890 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 10:28:03,894 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-12 10:28:03,895 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:03,898 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-12 10:28:03,902 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 10:28:03,905 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-12 10:28:03,908 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 10:28:03,914 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:03] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:04,217 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:28:04,224 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 10:28:04,229 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 10:28:04,232 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 10:28:04,238 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 10:28:04,243 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-12 10:28:04,244 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-12 10:28:04,244 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-12 10:28:04,246 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-12 10:28:04,247 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-12 10:28:04,248 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-12 10:28:04,250 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-12 10:28:04,251 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-12 10:28:04,252 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-12 10:28:04,253 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-12 10:28:04,254 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-12 10:28:04,255 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-12 10:28:04,256 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-12 10:28:04,257 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-12 10:28:04,259 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-12 10:28:04,260 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-12 10:28:04,263 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-12 10:28:04,264 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-12 10:28:04,265 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-12 10:28:04,266 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-12 10:28:04,267 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-12 10:28:04,268 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-12 10:28:04,269 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-12 10:28:04,271 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-12 10:28:04,272 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-12 10:28:04,278 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:28:04,558 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:28:04,784 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /favicon.ico HTTP/1.1" 404 - +2025-12-12 10:28:04,881 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:04] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:28:05,202 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:05] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:28:05,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:05] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:05,449 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:05] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:28:07,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:08,910 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:08] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:08,954 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:08] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:28:08,957 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:08] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:28:09,278 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:09] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:28:10,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:10] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:10,322 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:10] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:12,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:12,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:13,899 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:13] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:13,912 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:13] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:15,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:15] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:17,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:20,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:20] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:20,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:20] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:22,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:22,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:25,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:27,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:30,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:30] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:30,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:30] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:32,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:32,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:55,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:28:55,324 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:28:55,344 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:28:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:29:55,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:29:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:29:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:29:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:29:55,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:29:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:29:55,334 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:29:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:18,934 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:30:18,949 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:30:18,950 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:18,958 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:30:18,970 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:18,973 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:30:18,983 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:30:18,985 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:18] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:19,001 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:19] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:30:19,013 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:19] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:19,485 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:19] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:19,500 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:19] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:22,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:22,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:22,966 - src.integrations.feishu_client - INFO - 正在获取飞书tenant_access_token,应用ID: cli_a8b50ec0eed1500d +2025-12-12 10:30:23,141 - src.integrations.feishu_client - INFO - 飞书API响应: {'code': 0, 'expire': 6579, 'msg': 'ok', 'tenant_access_token': 't-g104ccakLJU4WR564CXVQVOIUJO6WHOAB33FQYJV'} +2025-12-12 10:30:23,141 - src.integrations.feishu_client - INFO - tenant_access_token获取成功: t-g104ccakLJU4WR564C... +2025-12-12 10:30:23,141 - src.integrations.feishu_client - INFO - 令牌有效期: 6579秒,过期时间: 2025-12-12 12:20:02 +2025-12-12 10:30:23,143 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records +2025-12-12 10:30:23,143 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104ccakLJU4WR564C... +2025-12-12 10:30:24,486 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:24] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:27,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:28,382 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 10:30:28,383 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'has_more': False, 'items': [{'fields': {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}, {'fields': {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}, {'fields': {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}, {'fields': {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}], 'total': 4}, 'msg': 'success'} +2025-12-12 10:30:28,386 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:28] "GET /api/feishu-sync/preview-feishu-data HTTP/1.1" 200 - +2025-12-12 10:30:29,480 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:29] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:29,494 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:29] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:31,183 - src.integrations.workorder_sync - INFO - 开始从飞书同步工单数据... +2025-12-12 10:30:31,184 - src.integrations.feishu_client - INFO - 发送飞书API请求: GET https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records +2025-12-12 10:30:31,184 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104ccakLJU4WR564C... +2025-12-12 10:30:32,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:32,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:32,953 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 10:30:32,954 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'has_more': False, 'items': [{'fields': {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}, {'fields': {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}, {'fields': {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}, {'fields': {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}], 'total': 4}, 'msg': 'success'} +2025-12-12 10:30:32,957 - src.integrations.workorder_sync - INFO - 从飞书获取 4 条记录 +2025-12-12 10:30:32,957 - src.integrations.workorder_sync - INFO - 开始生成AI建议... +2025-12-12 10:30:32,958 - src.integrations.workorder_sync - INFO - 第一条记录结构示例: record_id=rec253kqBfXae4, 有fields字段=True +2025-12-12 10:30:32,958 - src.integrations.workorder_sync - INFO - 第一条记录的fields示例: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source'] +2025-12-12 10:30:32,958 - src.integrations.workorder_sync - INFO - 第一条记录的AI建议字段内容: 1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正 +2025-12-12 10:30:32,958 - src.integrations.ai_suggestion_service - INFO - 记录 rec253kqBfXae4 - 现有AI建议长度: 190 +2025-12-12 10:30:32,959 - src.integrations.ai_suggestion_service - INFO - 记录 rec253kqBfXae4 - 现有AI建议前100字符: 1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下: +模拟LLM响应: +作为技术支持专家,请基于 +2025-12-12 10:30:32,960 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765506632 +2025-12-12 10:30:32,962 - src.knowledge_base.knowledge_manager - WARNING - 知识库中没有活跃条目 +2025-12-12 10:30:35,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:37,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:39,480 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:39] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:39,502 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:39] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:42,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:42,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:44,491 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:47,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:50,285 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:50,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:52,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:30:52,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:55,951 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:30:55,963 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:30:57,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:30:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:30:59,685 - src.core.llm_client - INFO - API请求成功 +2025-12-12 10:30:59,694 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 您好,感谢您对奇瑞汽车智能座舱体验的关注。针对“天气小部件(Weather Widget)无法工作”的问题,结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业、分阶段... +2025-12-12 10:30:59,694 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您对奇瑞汽车智能座舱体验的关注。针对“天气小部件(Weather Widget)无法工作”的问题,结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业、分阶段 +2025-12-12 10:30:59,694 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您对奇瑞汽车智能座舱体验的关注。针对“天气小部件(Weather Widget)无法工作”的问题,结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业、分阶段 +2025-12-12 10:30:59,695 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 您好,感谢您对奇瑞汽车智能座舱体验的关注。针对“天气小部件(Weather Widget)无法工作”的问题,结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业、分阶段... +2025-12-12 10:30:59,695 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1212, existing长度=190 +2025-12-12 10:30:59,696 - src.integrations.ai_suggestion_service - INFO - 为记录 rec253kqBfXae4 生成AI建议,新建议长度: 311 +2025-12-12 10:30:59,696 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLSh2a2S7 - 现有AI建议长度: 231 +2025-12-12 10:30:59,696 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLSh2a2S7 - 现有AI建议前100字符: 1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属 +2025-12-12 10:30:59,697 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765506659 +2025-12-12 10:30:59,699 - src.knowledge_base.knowledge_manager - WARNING - 知识库中没有活跃条目 +2025-12-12 10:31:00,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:00,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:02,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:02,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:05,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:05] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:07,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:10,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:10] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:10,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:10] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:12,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:12,323 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:15,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:15] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:17,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:20,287 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:20] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:20,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:20] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:22,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:22,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:25,033 - src.core.llm_client - INFO - API请求成功 +2025-12-12 10:31:25,041 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 该工单问题已明确定性为TBOX自2023年10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止上传、APP端数据滞留(最后更新为10月19日)、且无任何TBOX日志记录——这表... +2025-12-12 10:31:25,041 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 该工单问题已明确定性为TBOX自2023年10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止上传、APP端数据滞留(最后更新为10月19日)、且无任何TBOX日志记录——这表 +2025-12-12 10:31:25,042 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 该工单问题已明确定性为TBOX自2023年10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止上传、APP端数据滞留(最后更新为10月19日)、且无任何TBOX日志记录——这表 +2025-12-12 10:31:25,043 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 该工单问题已明确定性为TBOX自2023年10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止上传、APP端数据滞留(最后更新为10月19日)、且无任何TBOX日志记录——这表... +2025-12-12 10:31:25,043 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1212, existing长度=231 +2025-12-12 10:31:25,044 - src.integrations.ai_suggestion_service - INFO - 为记录 recv0NLSh2a2S7 生成AI建议,新建议长度: 378 +2025-12-12 10:31:25,044 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKLlRJ - 现有AI建议长度: 197 +2025-12-12 10:31:25,045 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKLlRJ - 现有AI建议前100字符: 1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。 +模拟LLM响应: +作为技术支 +2025-12-12 10:31:25,046 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765506685 +2025-12-12 10:31:25,047 - src.knowledge_base.knowledge_manager - WARNING - 知识库中没有活跃条目 +2025-12-12 10:31:25,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:27,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:30,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:30] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:30,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:30] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:32,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:32,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:35,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:37,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:40,289 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:40] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:40,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:42,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:42,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:45,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:45] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:47,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:48,976 - src.core.llm_client - INFO - API请求成功 +2025-12-12 10:31:48,984 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 经分析当前工单进展:用户无法通过手机号或二维码任一方式进入会员中心,且已提供DMC日志(含完整鉴权流程记录)及实操视频(1024时间戳),远程复现充分,可排除用户端输入错误、网络临时中断或操作流程误触... +2025-12-12 10:31:48,985 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 经分析当前工单进展:用户无法通过手机号或二维码任一方式进入会员中心,且已提供DMC日志(含完整鉴权流程记录)及实操视频(1024时间戳),远程复现充分,可排除用户端输入错误、网络临时中断或操作流程误触 +2025-12-12 10:31:48,986 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 经分析当前工单进展:用户无法通过手机号或二维码任一方式进入会员中心,且已提供DMC日志(含完整鉴权流程记录)及实操视频(1024时间戳),远程复现充分,可排除用户端输入错误、网络临时中断或操作流程误触 +2025-12-12 10:31:48,987 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 经分析当前工单进展:用户无法通过手机号或二维码任一方式进入会员中心,且已提供DMC日志(含完整鉴权流程记录)及实操视频(1024时间戳),远程复现充分,可排除用户端输入错误、网络临时中断或操作流程误触... +2025-12-12 10:31:48,987 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1212, existing长度=197 +2025-12-12 10:31:48,988 - src.integrations.ai_suggestion_service - INFO - 为记录 recv0NLZoKLlRJ 生成AI建议,新建议长度: 310 +2025-12-12 10:31:48,988 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKjKvx - 现有AI建议长度: 212 +2025-12-12 10:31:48,988 - src.integrations.ai_suggestion_service - INFO - 记录 recv0NLZoKjKvx - 现有AI建议前100字符: 1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下: + +2025-12-12 10:31:48,990 - src.dialogue.realtime_chat - INFO - 创建新会话: session_ai_suggestion_service_1765506708 +2025-12-12 10:31:48,992 - src.knowledge_base.knowledge_manager - WARNING - 知识库中没有活跃条目 +2025-12-12 10:31:50,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:50,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:52,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:31:52,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:31:55,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:31:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:32:17,690 - src.core.llm_client - INFO - API请求成功 +2025-12-12 10:32:17,697 - src.integrations.ai_suggestion_service - INFO - AI生成原始内容: 您好,感谢您对奇瑞汽车技术支持的信任。针对当前“Abnormal traffic consumption”(异常流量消耗)工单,结合已有处理进展与技术特征,现提供专业分析与闭环处理建议如下: + +一、问... +2025-12-12 10:32:17,698 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您对奇瑞汽车技术支持的信任。针对当前“Abnormal traffic consumption”(异常流量消耗)工单,结合已有处理进展与技术特征,现提供专业分析与闭环处理建议如下: + +一、问 +2025-12-12 10:32:17,698 - src.integrations.ai_suggestion_service - INFO - 未找到需要替换的内容: 您好,感谢您对奇瑞汽车技术支持的信任。针对当前“Abnormal traffic consumption”(异常流量消耗)工单,结合已有处理进展与技术特征,现提供专业分析与闭环处理建议如下: +2025-12-12 10:32:17,698 - src.integrations.ai_suggestion_service - INFO - AI建议清理后: 您好,感谢您对奇瑞汽车技术支持的信任。针对当前“Abnormal traffic consumption”(异常流量消耗)工单,结合已有处理进展与技术特征,现提供专业分析与闭环处理建议如下:... +2025-12-12 10:32:17,699 - src.integrations.ai_suggestion_service - INFO - _format_ai_suggestion_with_numbering 调用 - time_str=1212, existing长度=212 +2025-12-12 10:32:17,699 - src.integrations.ai_suggestion_service - INFO - 为记录 recv0NLZoKjKvx 生成AI建议,新建议长度: 313 +2025-12-12 10:32:17,699 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/rec253kqBfXae4 +2025-12-12 10:32:17,700 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104ccakLJU4WR564C... +2025-12-12 10:32:20,460 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 10:32:20,460 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': "1212:您好,感谢您对奇瑞汽车智能座舱体验的关注。针对“天气小部件(Weather Widget)无法工作”的问题,结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业、分阶段的技术分析与升级处理建议如下:\n1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题..."}, 'id': 'rec253kqBfXae4', 'record_id': 'rec253kqBfXae4'}}, 'msg': 'success'} +2025-12-12 10:32:20,462 - src.integrations.workorder_sync - INFO - 更新飞书记录 rec253kqBfXae4 的AI建议 +2025-12-12 10:32:20,462 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/recv0NLSh2a2S7 +2025-12-12 10:32:20,462 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104ccakLJU4WR564C... +2025-12-12 10:32:22,466 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 10:32:22,467 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': '1212:该工单问题已明确定性为TBOX自2023年10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止上传、APP端数据滞留(最后更新为10月19日)、且无任何TBOX日志记录——这表明TBOX未执行常规唤醒周期(如定时心跳、CAN总线活动触发唤醒或远程指令唤醒),\n1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...'}, 'id': 'recv0NLSh2a2S7', 'record_id': 'recv0NLSh2a2S7'}}, 'msg': 'success'} +2025-12-12 10:32:22,468 - src.integrations.workorder_sync - INFO - 更新飞书记录 recv0NLSh2a2S7 的AI建议 +2025-12-12 10:32:22,469 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/recv0NLZoKLlRJ +2025-12-12 10:32:22,469 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104ccakLJU4WR564C... +2025-12-12 10:32:24,719 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 10:32:24,720 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': '1212:经分析当前工单进展:用户无法通过手机号或二维码任一方式进入会员中心,且已提供DMC日志(含完整鉴权流程记录)及实操视频(1024时间戳),远程复现充分,可排除用户端输入错误、网络临时中断或操作流程误触等基础性问题。\n1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...'}, 'id': 'recv0NLZoKLlRJ', 'record_id': 'recv0NLZoKLlRJ'}}, 'msg': 'success'} +2025-12-12 10:32:24,722 - src.integrations.workorder_sync - INFO - 更新飞书记录 recv0NLZoKLlRJ 的AI建议 +2025-12-12 10:32:24,722 - src.integrations.feishu_client - INFO - 发送飞书API请求: PUT https://open.feishu.cn/open-apis/bitable/v1/apps/XXnEbiCmEaMblSs6FDJcFCqsnIg/tables/tblnl3vJPpgMTSiP/records/recv0NLZoKjKvx +2025-12-12 10:32:24,722 - src.integrations.feishu_client - INFO - 请求头: Authorization: Bearer t-g104ccakLJU4WR564C... +2025-12-12 10:32:26,647 - src.integrations.feishu_client - INFO - 飞书API响应状态码: 200 +2025-12-12 10:32:26,647 - src.integrations.feishu_client - INFO - 飞书API响应内容: {'code': 0, 'data': {'record': {'fields': {'AI建议': '1212:您好,感谢您对奇瑞汽车技术支持的信任。针对当前“Abnormal traffic consumption”(异常流量消耗)工单,结合已有处理进展与技术特征,现提供专业分析与闭环处理建议如下:\n1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...'}, 'id': 'recv0NLZoKjKvx', 'record_id': 'recv0NLZoKjKvx'}}, 'msg': 'success'} +2025-12-12 10:32:26,648 - src.integrations.workorder_sync - INFO - 更新飞书记录 recv0NLZoKjKvx 的AI建议 +2025-12-12 10:32:26,652 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': "1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:The widget weather doesn't work \n\n相关背景信息:\n无相关背景信息\n\n请提供:\n1. 问题...", 'Created by': 'Evgeniy', 'Date creation': 1745769600000, 'Module(模块)': 'local O&M', 'Source': 'Mail', 'TR Description': "The widget weather doesn't work ", 'TR Level': 'Low', 'TR Number': 'TR559', 'TR Status': 'Processing', 'TR tracking': '28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs.', 'Type of problem': 'HU troubles', 'VIN|sim': 'LVTDD24B8RG019153 ', 'Vehicle Type01': 'EXEED RX(T22)', 'Wilfulness(责任人)': 'Evgeniy', '处理过程': '0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志', '当前问题状态': '1027:天气小部件无法使用,已确认TBOX及IHU登录正常、流量绑定正常,建议已完成手机热点连接测试并尝试抓取IHU日志,若问题仍存在,建议进站进行系统诊断或软件版本升级排查。\n0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志'} +2025-12-12 10:32:26,653 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-12 10:32:26,654 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:您好,感谢您反馈天气小部件异常问题。结合当前处理进度(0428已确认TBOX/IHU登录正常、流量绑定正常),现提供专业分析与升级处理建议如下: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:The widget weather doesn't work + +相关背景信息: +无相关背景信息 + +请提供: +1. 问题... +2025-12-12 10:32:26,654 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Evgeniy +2025-12-12 10:32:26,655 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1745769600000 +2025-12-12 10:32:26,655 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: local O&M +2025-12-12 10:32:26,655 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-12 10:32:26,656 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: The widget weather doesn't work +2025-12-12 10:32:26,656 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-12 10:32:26,656 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR559 +2025-12-12 10:32:26,657 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-12 10:32:26,657 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 28/04:Local feedback weather widget does not work, query TBOX and IHU login record is normal, traffic binding is normal, we suggest users to use mobile phone hotspot to connect to the car, observe whether the widget is restored, if not, try to capture the IHU logs. +2025-12-12 10:32:26,658 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: HU troubles +2025-12-12 10:32:26,658 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LVTDD24B8RG019153 +2025-12-12 10:32:26,658 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: EXEED RX(T22) +2025-12-12 10:32:26,658 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: Evgeniy +2025-12-12 10:32:26,658 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 0428:属地反馈天气小部件不起作用,查询TBOX及IHU登录记录正常,流量绑定正常,建议用户使用手机热点连接车机,观察小部件是否恢复,如不恢复,尝试抓取IHU日志 +2025-12-12 10:32:26,663 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-12 10:32:26,663 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-12 10:32:26,664 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-12 10:32:26,664 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-12 10:32:26,664 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-12 10:32:26,666 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Vehicle data is not updated in the app => dated from October,...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': 'TBOX', 'Source': 'Mail', 'TR Description': 'Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19.\n', 'TR Level': 'Low', 'TR Number': 'TR863', 'TR Status': 'Processing', 'TR tracking': '24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi', 'Type of problem': 'Remote control ', 'VIN|sim': 'LNNBDDEZ8SD345645 ', 'Vehicle Type01': 'JAECOO J7(T1EJ)', 'Wilfulness(责任人)': '刘娇龙', '处理过程': '1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志', '当前问题状态': '1027:车辆自10月19日进入深度睡眠,TBOX无远程连接,建议客户尽快进站提取TBOX及DMC日志,进行本地诊断分析,排查电源管理或通信模块异常原因,确认硬件状态及软件配置是否正常。\n1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志'} +2025-12-12 10:32:26,666 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-12 10:32:26,666 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:该工单问题已明确为TBOX自10月19日起持续处于深度睡眠(Deep Sleep)状态,导致车辆数据停止更新、APP端数据滞留、且无任何TBOX日志上传——这已超出远程唤醒与诊断能力范围,属典型TBOX通信链路或电源管理异常。 +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Vehicle data is not updated in the app => dated from October,... +2025-12-12 10:32:26,667 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-12 10:32:26,667 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761148800000 +2025-12-12 10:32:26,667 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: TBOX +2025-12-12 10:32:26,667 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-12 10:32:26,667 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: Vehicle data is not updated in the app => dated from October, 19 - thus, they are old one. No TBOX log in since October, 19. TBOX is in deep sleep since October, 19. + +2025-12-12 10:32:26,668 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-12 10:32:26,668 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR863 +2025-12-12 10:32:26,668 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-12 10:32:26,668 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 24/10:The vehicle is in deep sleep, and T-box logs cannot be remotely obtained. The problem is a bit complex and difficult to locate, so the customer needs to visit the station to retrieve T-box logs and DMC logs. @Vsevolod Tsoi +2025-12-12 10:32:26,669 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Remote control +2025-12-12 10:32:26,669 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LNNBDDEZ8SD345645 +2025-12-12 10:32:26,669 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: JAECOO J7(T1EJ) +2025-12-12 10:32:26,669 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: 刘娇龙 +2025-12-12 10:32:26,669 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024:车辆处于深度睡眠中,远程无法获取T-box日志,问题有点复杂不好定位,需要客户进站取T-box日志和DMC日志 +2025-12-12 10:32:26,671 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-12 10:32:26,672 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-12 10:32:26,672 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-12 10:32:26,672 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-12 10:32:26,672 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-12 10:32:26,673 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:User not able to enter into member center neither mobile phon...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761148800000, 'Module(模块)': '生态/ecologically', 'Source': 'Mail', 'TR Description': 'User not able to enter into member center neither mobile phone nor QR code.', 'TR Level': 'Low', 'TR Number': 'TR864', 'TR Status': 'Processing', 'TR tracking': '23/10: DMC logs attached as well as vieos of the issue.', 'Type of problem': 'Problem with auth in member center', 'VIN|sim': 'LNNBDDEZXSD449358', 'Vehicle Type01': 'EXEED VX FL(M36T)', 'Wilfulness(责任人)': '袁清', '处理过程': '1024: DMC logs attached as well as vieos of the issue.', '当前问题状态': '1027:确认手机网络及APP版本正常,尝试清除APP缓存并重新登录,检查QR码扫描权限是否开启,重启手机和车机,若仍无法进入会员中心,建议联系售后进行远程诊断或进站排查系统故障。\n1024: DMC logs attached as well as vieos of the issue.'} +2025-12-12 10:32:26,674 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-12 10:32:26,674 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:经分析当前工单进展:用户无法通过手机号或二维码登录会员中心,且已上传DMC日志及问题视频(时间戳1024),说明远程行为已完整复现,初步排除用户操作误触可能。 +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:User not able to enter into member center neither mobile phon... +2025-12-12 10:32:26,675 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-12 10:32:26,675 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761148800000 +2025-12-12 10:32:26,675 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: 生态/ecologically +2025-12-12 10:32:26,676 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-12 10:32:26,676 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: User not able to enter into member center neither mobile phone nor QR code. +2025-12-12 10:32:26,676 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-12 10:32:26,676 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR864 +2025-12-12 10:32:26,676 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Processing +2025-12-12 10:32:26,677 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 23/10: DMC logs attached as well as vieos of the issue. +2025-12-12 10:32:26,677 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Problem with auth in member center +2025-12-12 10:32:26,677 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: LNNBDDEZXSD449358 +2025-12-12 10:32:26,678 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: EXEED VX FL(M36T) +2025-12-12 10:32:26,678 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: 袁清 +2025-12-12 10:32:26,678 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024: DMC logs attached as well as vieos of the issue. +2025-12-12 10:32:26,680 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-12 10:32:26,680 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-12 10:32:26,680 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-12 10:32:26,681 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-12 10:32:26,681 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-12 10:32:26,682 - src.integrations.workorder_sync - INFO - 开始转换飞书字段: {'AI建议': '1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下:\n模拟LLM响应: \n作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议:\n\n问题描述:Abnormal traffic consumption\n\n相关背景信息:\n相关知识库信息:\n- TR866 - Traf...', 'Created by': 'Vsevolod Tsoi', 'Date creation': 1761235200000, 'Module(模块)': 'DMC', 'Source': 'Mail', 'TR Description': 'Abnormal traffic consumption', 'TR Level': 'Low', 'TR Number': 'TR866', 'TR Status': 'Analysising', 'TR tracking': '24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi \n24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached', 'Type of problem': 'Traffic is over', 'VIN|sim': 'XEYDD14B3SA012164', 'Vehicle Type01': 'TEST', 'Wilfulness(责任人)': 'Vsevolod Tsoi', '处理过程': '1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf', '当前问题状态': '1027:流量异常可能与导航应用后台持续联网有关,建议关闭Navi自动更新地图功能并限制后台数据使用,检查车机系统是否存在异常进程,如问题依旧,建议进站检测DMC模块日志及SIM卡通信状态,必要时升级系统或更换模块。\n1024:建议用户抓去DMC日志回传分析\n1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf'} +2025-12-12 10:32:26,683 - src.integrations.flexible_field_mapper - INFO - 开始转换字段: ['AI建议', 'Created by', 'Date creation', 'Module(模块)', 'Source', 'TR Description', 'TR Level', 'TR Number', 'TR Status', 'TR tracking', 'Type of problem', 'VIN|sim', 'Vehicle Type01', 'Wilfulness(责任人)', '处理过程', '当前问题状态'] +2025-12-12 10:32:26,683 - src.integrations.flexible_field_mapper - INFO - 映射字段 AI建议 -> ai_suggestion: 1208:您好,感谢您反馈异常流量消耗问题。结合当前工单进展(已建议抓取DMC日志、用户确认仅使用导航且3天消耗3.12GB,症状与E0X车型TR866案例高度一致),现提供专业分析与处理建议如下: +模拟LLM响应: +作为技术支持专家,请基于以下问题描述为工单提供专业的处理建议: + +问题描述:Abnormal traffic consumption + +相关背景信息: +相关知识库信息: +- TR866 - Traf... +2025-12-12 10:32:26,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 Created by -> created_by: Vsevolod Tsoi +2025-12-12 10:32:26,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 Date creation -> created_at: 1761235200000 +2025-12-12 10:32:26,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 Module(模块) -> module: DMC +2025-12-12 10:32:26,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 Source -> source: Mail +2025-12-12 10:32:26,684 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Description -> description: Abnormal traffic consumption +2025-12-12 10:32:26,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Level -> priority: Low +2025-12-12 10:32:26,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Number -> order_id: TR866 +2025-12-12 10:32:26,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR Status -> status: Analysising +2025-12-12 10:32:26,685 - src.integrations.flexible_field_mapper - INFO - 映射字段 TR tracking -> resolution: 24/10: It is recommended that users grab the DMC log back for analysis.@Vsevolod Tsoi +24/10: user states he use Navi only and no other apps. Consumption volume - 3.12 Gb for 3 days. Same symptom as E0X - traffic package size is plus mines the same - see pdf from MNO attached +2025-12-12 10:32:26,686 - src.integrations.flexible_field_mapper - INFO - 映射字段 Type of problem -> category: Traffic is over +2025-12-12 10:32:26,686 - src.integrations.flexible_field_mapper - INFO - 映射字段 VIN|sim -> vin_sim: XEYDD14B3SA012164 +2025-12-12 10:32:26,686 - src.integrations.flexible_field_mapper - INFO - 映射字段 Vehicle Type01 -> vehicle_type: TEST +2025-12-12 10:32:26,687 - src.integrations.flexible_field_mapper - INFO - 映射字段 Wilfulness(责任人) -> wilfulness: Vsevolod Tsoi +2025-12-12 10:32:26,687 - src.integrations.flexible_field_mapper - INFO - 映射字段 处理过程 -> resolution: 1024:建议用户抓去DMC日志回传分析 +1024:用户表示他只使用Navi,不使用其他应用程序。 消耗量-3.12 Gb,3天。 与E0X相同的症状-流量包大小加上地雷相同-见所附MNO的pdf +2025-12-12 10:32:26,689 - src.integrations.flexible_field_mapper - INFO - 飞书字段 当前问题状态 不存在于数据中 +2025-12-12 10:32:26,690 - src.integrations.flexible_field_mapper - INFO - 字段转换完成: 已映射 15, 未映射 1 +2025-12-12 10:32:26,690 - src.integrations.workorder_sync - INFO - 字段转换统计: 总字段 16, 已映射 15, 未映射 1 +2025-12-12 10:32:26,690 - src.integrations.workorder_sync - WARNING - 未映射字段: ['当前问题状态'] +2025-12-12 10:32:26,691 - src.integrations.workorder_sync - INFO - 字段 '当前问题状态' 的建议映射: {'local_field': 'status', 'similarity': 0.7, 'matched_pattern': '.*状态.*', 'confidence': 'medium', 'reason': "匹配模式 '.*状态.*'"} +2025-12-12 10:32:26,714 - src.integrations.workorder_sync - INFO - 飞书同步完成: {'success': True, 'total_records': 4, 'synced_count': 4, 'created_count': 3, 'updated_count': 1, 'ai_suggestions_generated': True, 'errors': []} +2025-12-12 10:32:26,714 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:32:26] "POST /api/feishu-sync/sync-from-feishu HTTP/1.1" 200 - +2025-12-12 10:32:26,727 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:32:26] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 10:32:55,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:32:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:32:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:32:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:32:55,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:32:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:32:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:32:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:33:55,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:33:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:33:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:33:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:33:55,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:33:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:33:55,327 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:33:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:34:55,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:34:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:34:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:34:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:34:55,319 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:34:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:34:55,335 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:34:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:35:55,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:35:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:35:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:35:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:35:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:35:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:35:55,332 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:35:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:36:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:36:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:36:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:36:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:36:55,324 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:36:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:36:55,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:36:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:37:55,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:37:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:37:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:37:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:37:55,335 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:37:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:37:55,356 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:37:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:38:55,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:38:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:38:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:38:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:38:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:38:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:38:55,333 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:38:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:39:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:39:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:39:55,327 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:39:55,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:39:59,648 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:59] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:39:59,664 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:59] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:39:59,671 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:59] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:39:59,684 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:39:59] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:40:02,287 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:40:02,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:07,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:12,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:40:12,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:17,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:22,287 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:40:22,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:27,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:32,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:40:32,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:37,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:42,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:40:42,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:47,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:52,289 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:40:52,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:55,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:40:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:40:57,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:40:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:41:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:41:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:41:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:41:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:41:55,323 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:41:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:41:55,339 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:41:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:05,149 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:05] "GET / HTTP/1.1" 200 - +2025-12-12 10:42:05,992 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:05] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 10:42:06,009 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:06] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 10:42:06,020 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:06] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:42:06,031 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:06] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:42:11,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:11] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:16,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:16] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:42:16,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:16] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:21,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:21] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:26,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:26] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:42:26,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:26] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:31,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:36,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:36] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:42:36,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:36] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:41,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:41] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:46,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:46] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:42:46,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:46] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:51,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:51] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:42:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:55,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:42:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:42:56,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:56] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:42:56,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:42:56] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:43:01,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:01] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:43:06,287 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:06] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:43:06,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:06] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:43:55,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:43:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:43:55,326 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:43:55,327 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:43:55,343 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:43:55,360 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:43:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:44:55,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:44:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:44:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:44:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:44:55,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:44:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:44:55,327 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:44:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:44:55,343 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:44:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:44:55,359 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:44:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:45:55,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:45:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:45:55,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:45:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:45:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:45:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:45:55,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:45:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:45:55,336 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:45:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:45:55,352 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:45:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:46:55,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:46:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:46:55,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:46:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:46:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:46:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:46:55,335 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:46:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:46:55,350 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:46:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:46:55,360 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:46:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:47:47,574 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:47] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 10:47:47,585 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:47] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:47:47,596 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:47:47,601 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:47] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 10:47:47,613 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:47] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 10:47:52,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:47:52,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:47:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:47:55,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:47:55,326 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:47:55,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:47:57,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:47:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:02,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:02,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:07,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:12,285 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:12,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:17,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:22,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:22,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:27,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:32,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:32,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:37,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:42,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:42,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:47,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:55,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:55,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:48:55,325 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:55,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:48:55,358 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:48:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:49:55,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:49:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:49:55,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:49:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:49:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:49:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:49:55,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:49:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:49:55,332 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:49:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:49:55,348 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:49:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:50:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:50:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:50:55,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:50:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:50:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:50:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:50:55,329 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:50:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:50:55,349 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:50:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:50:55,367 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:50:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:51:55,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:51:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:51:55,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:51:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:51:55,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:51:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:51:55,319 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:51:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:51:55,334 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:51:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:51:55,351 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:51:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:52:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:52:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:52:55,319 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:52:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:52:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:52:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:52:55,332 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:52:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:52:55,350 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:52:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:52:55,361 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:52:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:53:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:53:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:53:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:53:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:53:55,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:53:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:53:55,326 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:53:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:53:55,340 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:53:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:53:55,355 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:53:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:54:55,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:54:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:54:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:54:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:54:55,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:54:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:54:55,324 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:54:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:54:55,339 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:54:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:54:55,356 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:54:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:55:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:55:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:55:55,325 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:55:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:55:55,337 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:55:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:55:55,347 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:55:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:55:55,370 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:55:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:55:55,386 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:55:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:56:55,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:56:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:56:55,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:56:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:56:55,323 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:56:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:56:55,330 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:56:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:56:55,346 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:56:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:56:55,361 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:56:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:57:55,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:57:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:57:55,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:57:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:57:55,320 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:57:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:57:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:57:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:57:55,343 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:57:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:57:55,356 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:57:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:58:55,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:58:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:58:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:58:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:58:55,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:58:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:58:55,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:58:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:58:55,330 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:58:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:58:55,346 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:58:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:59:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:59:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:59:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:59:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:59:55,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:59:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 10:59:55,326 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:59:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:59:55,342 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:59:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 10:59:55,357 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 10:59:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:00:55,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:00:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:00:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:00:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:00:55,322 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:00:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:00:55,329 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:00:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:00:55,347 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:00:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:00:55,369 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:00:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:01:55,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:01:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:01:55,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:01:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:01:55,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:01:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:01:55,323 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:01:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:01:55,339 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:01:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:01:55,352 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:01:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:02:55,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:02:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:02:55,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:02:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:02:55,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:02:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:02:55,319 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:02:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:02:55,333 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:02:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:02:55,347 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:02:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:03:55,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:03:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:03:55,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:03:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:03:55,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:03:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:03:55,323 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:03:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:03:55,338 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:03:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:03:55,353 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:03:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:04:55,289 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:04:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:04:55,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:04:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:04:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:04:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:04:55,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:04:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:04:55,327 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:04:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:04:55,343 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:04:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:25,742 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:25] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:05:25,759 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:25] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:05:25,771 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:25] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:05:25,771 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:25,789 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:25] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:05:27,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:32,289 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:05:32,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:37,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:42,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:05:42,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:47,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:52,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:05:52,339 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:55,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:05:55,328 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:05:55,341 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:55,360 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:05:57,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:05:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:02,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:02,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:07,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:12,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:12,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:17,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:22,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:22,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:40,866 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:40] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:06:40,881 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:40] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:40,896 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:40,900 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:40] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:06:40,918 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:40] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:06:42,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:42,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:47,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:52,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:52,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:55,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:55,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:06:55,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:55,339 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:06:57,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:06:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:02,289 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:02,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:07,305 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:12,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:12,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:17,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:19,874 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:19] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:07:22,288 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:22] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:22,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:22] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:27,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:27] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:32,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:32] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:32,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:32] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:37,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:37] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:39,927 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:39] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:07:39,937 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:39] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:39,939 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:39] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:07:39,957 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:39] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:39,960 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:39] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:07:41,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:41] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:42,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:42,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:46,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:46] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:46,317 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:46] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:47,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:51,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:51] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:52,287 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:52,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:55,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:55,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:56,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:56] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:07:56,309 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:56] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:07:57,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:07:57] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:01,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:01] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:02,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:02] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:02,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:02] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:06,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:06] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:06,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:06] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:07,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:07] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:11,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:11] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:12,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:12] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:12,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:12] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:16,318 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:16] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:16,338 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:16] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:17,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:17] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:21,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:21] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:26,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:26] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:26,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:26] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:31,307 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:36,285 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:36] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:36,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:36] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:39,193 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:39] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:08:39,207 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:39] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:39,223 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:39] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:08:39,225 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:39] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:39,242 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:39] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:08:42,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:42] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:42,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:42] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:47,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:47] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:52,269 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:52] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:52,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:52] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:55,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:55,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:08:55,321 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:08:55,336 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:08:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:00,360 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:00] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:09:00,370 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:00,380 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:00] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:09:00,393 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:00,402 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:00] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:09:00,898 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:01,242 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:01] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:09:01,254 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:01] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:01,260 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:01] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:09:01,275 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:01] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:01,284 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:01] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:09:05,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:05] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:06,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:06] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:06,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:06] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:10,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:10] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:10,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:10] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:11,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:11] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:15,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:15] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:16,287 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:16] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:16,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:16] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:20,286 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:20] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:20,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:20] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:21,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:21] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:25,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:26,296 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:26] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:26,311 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:26] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:30,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:30] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:30,316 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:30] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:31,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:31] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:35,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:36,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:36] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:36,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:36] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:40,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:40] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:40,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:41,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:41] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:45,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:45] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:46,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:46] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:46,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:46] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:50,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:50,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:51,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:51] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:55,313 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:09:56,290 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:56] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:09:56,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:09:56] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:00,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:10:00,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:14,404 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 11:10:14,719 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 11:10:14,720 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 11:10:16,639 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 11:10:16,648 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 11:10:16,755 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 11:10:16,756 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 11:10:16,780 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 11:10:16,787 - websockets.server - INFO - server listening on [::1]:8765 +2025-12-12 11:10:16,787 - websockets.server - INFO - server listening on 127.0.0.1:8765 +2025-12-12 11:10:22,708 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "GET / HTTP/1.1" 200 - +2025-12-12 11:10:22,795 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 304 - +2025-12-12 11:10:22,799 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 304 - +2025-12-12 11:10:22,801 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "GET /static/js/core/store.js HTTP/1.1" 304 - +2025-12-12 11:10:22,803 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "GET /static/js/services/api.js HTTP/1.1" 304 - +2025-12-12 11:10:22,806 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "GET /static/js/components/NotificationManager.js HTTP/1.1" 304 - +2025-12-12 11:10:22,810 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "GET /static/js/components/AlertManager.js HTTP/1.1" 304 - +2025-12-12 11:10:22,814 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "GET /static/js/app-new.js HTTP/1.1" 304 - +2025-12-12 11:10:22,816 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 11:10:22,831 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:22] "GET /static/css/design-system.css HTTP/1.1" 304 - +2025-12-12 11:10:23,625 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 11:10:23,626 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:10:23,632 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 11:10:23,639 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 11:10:23,654 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:10:23,657 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:23,659 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 11:10:23,665 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 11:10:23,665 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 11:10:23,667 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 11:10:23,675 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 11:10:23,745 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 11:10:23,767 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 11:10:23,776 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:10:23,789 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:23] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:10:26,751 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:26] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 11:10:26,752 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:26] "GET /api/agent/tools/stats HTTP/1.1" 200 - +2025-12-12 11:10:27,501 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:27] "GET /api/alerts?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 11:10:28,637 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:28] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:28,660 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:28] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 11:10:28,671 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:28] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 11:10:28,681 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:28] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 11:10:29,053 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:29] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 11:10:30,928 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:30] "GET /api/workorders?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 11:10:33,628 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:33] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:10:33,641 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:33] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:36,081 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:36] "GET /api/workorders/4 HTTP/1.1" 200 - +2025-12-12 11:10:37,804 - src.knowledge_base.knowledge_manager - WARNING - 知识库中没有活跃条目 +2025-12-12 11:10:38,639 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:38] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:40,980 - src.core.llm_client - INFO - API请求成功 +2025-12-12 11:10:40,989 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:40] "POST /api/workorders/4/ai-suggestion HTTP/1.1" 200 - +2025-12-12 11:10:43,624 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:43] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:10:43,639 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:43] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:49,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:49] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:54,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:54] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:10:54,308 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 11:10:54,313 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 11:10:54,345 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:10:54,348 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:10:54,350 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:54] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:54,365 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:10:59,289 - src.core.database - ERROR - 数据库操作失败: returned NULL without setting an exception +2025-12-12 11:10:59,290 - src.web.error_handlers - ERROR - 未处理错误 in get_health: returned NULL without setting an exception +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2358, in _handle_dbapi_exception + raise exc_info[1].with_traceback(exc_info[2]) + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +SystemError: returned NULL without setting an exception +2025-12-12 11:10:59,295 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:10:59] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:10:59,297 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: returned NULL without setting an exception - None +2025-12-12 11:11:04,297 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:04] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:11:04,306 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:04,309 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:04,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:04] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:04,318 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:11,602 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 11:11:11,965 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 11:11:11,966 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 11:11:13,992 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 11:11:14,002 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 11:11:14,115 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 11:11:14,115 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 11:11:14,138 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 11:11:14,144 - websockets.server - INFO - server listening on [::1]:8765 +2025-12-12 11:11:14,145 - websockets.server - INFO - server listening on 127.0.0.1:8765 +2025-12-12 11:11:14,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:14] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:11:14,307 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 11:11:14,312 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 11:11:14,329 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:14] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:14,339 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:14,341 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:14,354 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:19,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:19] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:19,304 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:19,306 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:19,313 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:24,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:24] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:11:24,306 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:24] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:24,307 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:24,309 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:24,316 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:29,292 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:29] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:29,301 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:29,302 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:29,308 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:34,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:34] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:11:34,311 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:34,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:34] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:34,312 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:34,318 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:39,301 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:39,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:39] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:39,303 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:39,311 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:44,299 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:44] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:11:44,313 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:44,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:44,315 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:44,322 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 11:11:55,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 11:11:55,313 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:55,314 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 11:11:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 11:11:55,314 - src.web.error_handlers - ERROR - 未处理错误 in get_health: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +Traceback (most recent call last): + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlite3.OperationalError: no such column: work_orders.assigned_module + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "D:\code\assist\src\web\error_handlers.py", line 20, in wrapper + return func(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\code\assist\src\web\blueprints\core.py", line 32, in get_health + open_wos = session.query(WorkOrder).filter(WorkOrder.status == 'open').count() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 3112, in count + self._legacy_from_self(col).enable_eagerloads(False).scalar() + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2805, in scalar + ret = self.one() + ^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2778, in one + return self._iter().one() # type: ignore + ^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter + result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( + ^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute + return self._execute_internal( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\session.py", line 2247, in _execute_internal + result: Result[Any] = compile_state_cls.orm_execute_statement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement + result = conn.execute( + ^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute + return meth( + ^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection + return connection._execute_clauseelement( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement + ret = self._execute_context( + ^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context + return self._exec_single_context( + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context + self._handle_dbapi_exception( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception + raise sqlalchemy_exception.with_traceback(exc_info[2]) from e + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context + self.dialect.do_execute( + File "D:\Programs\Python\Python311\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute + cursor.execute(statement, parameters) +sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 11:11:55,321 - src.web.error_handlers - ERROR - 错误响应: 服务器内部错误: (sqlite3.OperationalError) no such column: work_orders.assigned_module +[SQL: SELECT count(*) AS count_1 +FROM (SELECT work_orders.id AS work_orders_id, work_orders.order_id AS work_orders_order_id, work_orders.title AS work_orders_title, work_orders.description AS work_orders_description, work_orders.category AS work_orders_category, work_orders.priority AS work_orders_priority, work_orders.status AS work_orders_status, work_orders.created_at AS work_orders_created_at, work_orders.updated_at AS work_orders_updated_at, work_orders.resolution AS work_orders_resolution, work_orders.satisfaction_score AS work_orders_satisfaction_score, work_orders.feishu_record_id AS work_orders_feishu_record_id, work_orders.assignee AS work_orders_assignee, work_orders.solution AS work_orders_solution, work_orders.ai_suggestion AS work_orders_ai_suggestion, work_orders.source AS work_orders_source, work_orders.module AS work_orders_module, work_orders.created_by AS work_orders_created_by, work_orders.wilfulness AS work_orders_wilfulness, work_orders.date_of_close AS work_orders_date_of_close, work_orders.vehicle_type AS work_orders_vehicle_type, work_orders.vin_sim AS work_orders_vin_sim, work_orders.app_remote_control_version AS work_orders_app_remote_control_version, work_orders.hmi_sw AS work_orders_hmi_sw, work_orders.parent_record AS work_orders_parent_record, work_orders.has_updated_same_day AS work_orders_has_updated_same_day, work_orders.operating_time AS work_orders_operating_time, work_orders.assigned_module AS work_orders_assigned_module, work_orders.module_owner AS work_orders_module_owner, work_orders.dispatcher AS work_orders_dispatcher, work_orders.dispatch_time AS work_orders_dispatch_time, work_orders.region AS work_orders_region +FROM work_orders +WHERE work_orders.status = ?) AS anon_1] +[parameters: ('open',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) - None +2025-12-12 13:31:39,178 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 13:31:39,482 - src.core.database - INFO - 数据库初始化成功 +2025-12-12 13:31:39,483 - __main__ - INFO - 跳过系统检查,直接启动服务... +2025-12-12 13:31:41,339 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db +2025-12-12 13:31:41,350 - src.integrations.config_manager - INFO - 配置加载成功 +2025-12-12 13:31:41,453 - werkzeug - INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.105.212.207:5000 +2025-12-12 13:31:41,454 - werkzeug - INFO - Press CTRL+C to quit +2025-12-12 13:31:41,478 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:41,479 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 +2025-12-12 13:31:41,485 - websockets.server - INFO - server listening on 127.0.0.1:8765 +2025-12-12 13:31:41,486 - websockets.server - INFO - server listening on [::1]:8765 +2025-12-12 13:31:43,576 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "GET / HTTP/1.1" 200 - +2025-12-12 13:31:43,860 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 304 - +2025-12-12 13:31:43,865 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "GET /static/js/app-new.js HTTP/1.1" 304 - +2025-12-12 13:31:43,870 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 304 - +2025-12-12 13:31:43,872 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 304 - +2025-12-12 13:31:43,881 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "GET /static/css/design-system.css HTTP/1.1" 304 - +2025-12-12 13:31:43,916 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "GET /static/js/core/store.js HTTP/1.1" 304 - +2025-12-12 13:31:43,934 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "GET /static/js/components/AlertManager.js HTTP/1.1" 304 - +2025-12-12 13:31:43,963 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "GET /static/js/services/api.js HTTP/1.1" 304 - +2025-12-12 13:31:43,971 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:43] "GET /static/js/components/NotificationManager.js HTTP/1.1" 304 - +2025-12-12 13:31:44,397 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:31:44,400 - src.agent_assistant - INFO - TSP Agent助手初始化完成 +2025-12-12 13:31:44,401 - src.web.service_manager - INFO - 服务 agent_assistant 已初始化 +2025-12-12 13:31:44,405 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 13:31:44,415 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 13:31:44,422 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,426 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 13:31:44,429 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,437 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,440 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,443 - src.web.service_manager - INFO - 服务 chat_manager 已初始化 +2025-12-12 13:31:44,445 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 13:31:44,446 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,447 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 13:31:44,451 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,453 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 13:31:44,457 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 13:31:44,458 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 13:31:44,459 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 13:31:44,460 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,475 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,483 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 13:31:44,496 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,500 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:31:44,502 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功,包含 10 个条目 +2025-12-12 13:31:44,507 - src.web.service_manager - INFO - 服务 assistant 已初始化 +2025-12-12 13:31:44,527 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 13:31:44,529 - src.config.unified_config - WARNING - 无法加载默认LLM配置,使用内置默认值: No module named 'config.llm_config' +2025-12-12 13:31:44,530 - src.config.unified_config - INFO - 配置文件加载成功 +2025-12-12 13:31:44,530 - src.integrations.ai_suggestion_service - INFO - 使用LLM配置: qwen - qwen-plus-latest +2025-12-12 13:31:44,533 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Number -> order_id +2025-12-12 13:31:44,538 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Description -> description +2025-12-12 13:31:44,539 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 13:31:44,541 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Type of problem -> category +2025-12-12 13:31:44,543 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Level -> priority +2025-12-12 13:31:44,545 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR Status -> status +2025-12-12 13:31:44,546 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Source -> source +2025-12-12 13:31:44,547 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date creation -> created_at +2025-12-12 13:31:44,549 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 处理过程 -> resolution +2025-12-12 13:31:44,550 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: TR tracking -> resolution +2025-12-12 13:31:44,552 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Created by -> created_by +2025-12-12 13:31:44,560 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 13:31:44,560 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Module(模块) -> module +2025-12-12 13:31:44,561 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Wilfulness(责任人) -> wilfulness +2025-12-12 13:31:44,562 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Date of close TR -> date_of_close +2025-12-12 13:31:44,565 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Vehicle Type01 -> vehicle_type +2025-12-12 13:31:44,567 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: VIN|sim -> vin_sim +2025-12-12 13:31:44,568 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 13:31:44,569 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: App remote control version -> app_remote_control_version +2025-12-12 13:31:44,571 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: HMI SW -> hmi_sw +2025-12-12 13:31:44,575 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: 父记录 -> parent_record +2025-12-12 13:31:44,578 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Has it been updated on the same day -> has_updated_same_day +2025-12-12 13:31:44,579 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Operating time -> operating_time +2025-12-12 13:31:44,581 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: AI建议 -> ai_suggestion +2025-12-12 13:31:44,583 - src.integrations.flexible_field_mapper - INFO - 添加字段映射: Issue Start Time -> updated_at +2025-12-12 13:31:44,584 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 13:31:44,593 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:44] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 13:31:46,065 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:46] "GET /api/alerts?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 13:31:48,331 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:48] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 13:31:49,420 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:31:49,434 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 13:31:49,441 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 13:31:49,452 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 13:31:49,506 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET / HTTP/1.1" 200 - +2025-12-12 13:31:49,755 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 13:31:49,831 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 200 - +2025-12-12 13:31:49,832 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /static/js/core/store.js HTTP/1.1" 200 - +2025-12-12 13:31:49,834 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /static/js/services/api.js HTTP/1.1" 200 - +2025-12-12 13:31:49,836 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /static/js/components/NotificationManager.js HTTP/1.1" 200 - +2025-12-12 13:31:49,837 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:49] "GET /static/js/components/AlertManager.js HTTP/1.1" 200 - +2025-12-12 13:31:50,073 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /static/css/design-system.css HTTP/1.1" 200 - +2025-12-12 13:31:50,149 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /static/js/app-new.js HTTP/1.1" 200 - +2025-12-12 13:31:50,149 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 200 - +2025-12-12 13:31:50,788 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /api/rules HTTP/1.1" 200 - +2025-12-12 13:31:50,789 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:31:50,793 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /api/agent/status HTTP/1.1" 200 - +2025-12-12 13:31:50,804 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /api/chat/sessions HTTP/1.1" 200 - +2025-12-12 13:31:50,812 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:31:51,096 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 13:31:51,101 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/workorders HTTP/1.1" 200 - +2025-12-12 13:31:51,110 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/system/info HTTP/1.1" 200 - +2025-12-12 13:31:51,111 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/knowledge/stats HTTP/1.1" 200 - +2025-12-12 13:31:51,117 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/feishu-sync/config HTTP/1.1" 200 - +2025-12-12 13:31:51,122 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/feishu-sync/status HTTP/1.1" 200 - +2025-12-12 13:31:51,431 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - +2025-12-12 13:31:51,682 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /favicon.ico HTTP/1.1" 404 - +2025-12-12 13:31:51,765 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:51] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 13:31:52,084 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:52] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 13:31:52,346 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:52] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 13:31:52,530 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:52] "GET /api/workorders?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 13:31:54,394 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:54] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:31:54,413 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:54] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:31:54,831 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:54] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - +2025-12-12 13:31:55,410 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/token-monitor/stats HTTP/1.1" 200 - +2025-12-12 13:31:55,431 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/token-monitor/records HTTP/1.1" 200 - +2025-12-12 13:31:55,434 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/token-monitor/chart HTTP/1.1" 200 - +2025-12-12 13:31:55,791 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:31:55,850 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - +2025-12-12 13:31:55,857 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 13:31:55,958 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/ai-monitor/stats HTTP/1.1" 200 - +2025-12-12 13:31:55,967 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/ai-monitor/model-comparison HTTP/1.1" 200 - +2025-12-12 13:31:55,971 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/ai-monitor/error-distribution HTTP/1.1" 200 - +2025-12-12 13:31:55,975 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:55] "GET /api/ai-monitor/error-log HTTP/1.1" 200 - +2025-12-12 13:31:56,174 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:56] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 13:31:57,938 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:57] "GET /api/token-monitor/stats HTTP/1.1" 200 - +2025-12-12 13:31:57,952 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:57] "GET /api/token-monitor/records HTTP/1.1" 200 - +2025-12-12 13:31:57,957 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:57] "GET /api/token-monitor/chart HTTP/1.1" 200 - +2025-12-12 13:31:59,408 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:59] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:31:59,479 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:31:59] "GET /api/settings HTTP/1.1" 200 - +2025-12-12 13:32:00,082 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/system-optimizer/status HTTP/1.1" 200 - +2025-12-12 13:32:00,090 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/analytics HTTP/1.1" 200 - +2025-12-12 13:32:00,141 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/system-optimizer/security-settings HTTP/1.1" 200 - +2025-12-12 13:32:00,143 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/system-optimizer/traffic-settings HTTP/1.1" 200 - +2025-12-12 13:32:00,144 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/system-optimizer/cost-settings HTTP/1.1" 200 - +2025-12-12 13:32:00,150 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 13:32:00,194 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - +2025-12-12 13:32:00,789 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:32:00,811 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:05,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:05] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:32:05,324 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:05] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:10,303 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:10] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:15,293 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:15] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:32:15,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:15] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:20,304 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:20] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:25,300 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:25] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:32:25,312 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:25] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:30,310 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:30] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:35,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:35] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:32:35,315 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:35] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:40,298 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:40] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:45,291 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:45] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:32:45,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:45] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:50,302 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:50] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:32:55,294 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:55] "GET /api/alerts HTTP/1.1" 200 - +2025-12-12 13:32:55,308 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:32:55] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:33:00,301 - werkzeug - INFO - 127.0.0.1 - - [12/Dec/2025 13:33:00] "GET /api/monitor/status HTTP/1.1" 200 - +2025-12-12 13:34:25,979 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 13:34:47,469 - src.core.database - ERROR - 数据库初始化失败: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'jeason.online' ([WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)") +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 13:34:47,470 - __main__ - ERROR - 数据库连接失败,退出启动 +2025-12-12 13:35:02,972 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 13:35:24,389 - src.core.database - ERROR - 数据库初始化失败: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'jeason.online' ([WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)") +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 13:35:24,391 - __main__ - ERROR - 数据库连接失败,退出启动 +2025-12-12 13:37:51,892 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... +2025-12-12 13:38:13,315 - src.core.database - ERROR - 数据库初始化失败: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on '43.134.68.207' ([WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)") +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-12 13:38:13,317 - __main__ - ERROR - 数据库连接失败,退出启动 diff --git a/logs/tsp_assistant.log b/logs/tsp_assistant.log new file mode 100644 index 0000000..4879734 --- /dev/null +++ b/logs/tsp_assistant.log @@ -0,0 +1,9 @@ +2025-12-12 13:30:49,040 - src.core.database - ERROR - 数据库操作失败: 'search_frequency' is an invalid keyword argument for KnowledgeEntry +2025-12-12 13:31:25,399 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V001 - location +2025-12-12 13:31:25,404 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V001 - status +2025-12-12 13:31:25,409 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V001 - battery +2025-12-12 13:31:25,414 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V001 - engine +2025-12-12 13:31:25,419 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V002 - location +2025-12-12 13:31:25,424 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V002 - status +2025-12-12 13:31:25,429 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V002 - fault +2025-12-12 13:31:25,429 - src.vehicle.vehicle_data_manager - INFO - 示例车辆数据添加成功 diff --git a/src/__pycache__/__init__.cpython-310.pyc b/src/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..bd00c5c Binary files /dev/null and b/src/__pycache__/__init__.cpython-310.pyc differ diff --git a/src/__pycache__/__init__.cpython-311.pyc b/src/__pycache__/__init__.cpython-311.pyc index 74e1682..ae33ed9 100644 Binary files a/src/__pycache__/__init__.cpython-311.pyc and b/src/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/__pycache__/agent_assistant.cpython-310.pyc b/src/__pycache__/agent_assistant.cpython-310.pyc new file mode 100644 index 0000000..4942031 Binary files /dev/null and b/src/__pycache__/agent_assistant.cpython-310.pyc differ diff --git a/src/__pycache__/agent_assistant.cpython-311.pyc b/src/__pycache__/agent_assistant.cpython-311.pyc index 19251cc..ca8aeff 100644 Binary files a/src/__pycache__/agent_assistant.cpython-311.pyc and b/src/__pycache__/agent_assistant.cpython-311.pyc differ diff --git a/src/__pycache__/main.cpython-310.pyc b/src/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000..d9e1cc0 Binary files /dev/null and b/src/__pycache__/main.cpython-310.pyc differ diff --git a/src/__pycache__/main.cpython-311.pyc b/src/__pycache__/main.cpython-311.pyc index 62c38b4..b054b91 100644 Binary files a/src/__pycache__/main.cpython-311.pyc and b/src/__pycache__/main.cpython-311.pyc differ diff --git a/src/analytics/__pycache__/__init__.cpython-310.pyc b/src/analytics/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..0c5d486 Binary files /dev/null and b/src/analytics/__pycache__/__init__.cpython-310.pyc differ diff --git a/src/analytics/__pycache__/__init__.cpython-311.pyc b/src/analytics/__pycache__/__init__.cpython-311.pyc index cecf113..9816887 100644 Binary files a/src/analytics/__pycache__/__init__.cpython-311.pyc and b/src/analytics/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/analytics/__pycache__/ai_success_monitor.cpython-310.pyc b/src/analytics/__pycache__/ai_success_monitor.cpython-310.pyc new file mode 100644 index 0000000..d6d5286 Binary files /dev/null and b/src/analytics/__pycache__/ai_success_monitor.cpython-310.pyc differ diff --git a/src/analytics/__pycache__/ai_success_monitor.cpython-311.pyc b/src/analytics/__pycache__/ai_success_monitor.cpython-311.pyc index 8a64f0c..c8e476e 100644 Binary files a/src/analytics/__pycache__/ai_success_monitor.cpython-311.pyc and b/src/analytics/__pycache__/ai_success_monitor.cpython-311.pyc differ diff --git a/src/analytics/__pycache__/alert_system.cpython-310.pyc b/src/analytics/__pycache__/alert_system.cpython-310.pyc new file mode 100644 index 0000000..cb675d3 Binary files /dev/null and b/src/analytics/__pycache__/alert_system.cpython-310.pyc differ diff --git a/src/analytics/__pycache__/alert_system.cpython-311.pyc b/src/analytics/__pycache__/alert_system.cpython-311.pyc index 970afe5..80ad64b 100644 Binary files a/src/analytics/__pycache__/alert_system.cpython-311.pyc and b/src/analytics/__pycache__/alert_system.cpython-311.pyc differ diff --git a/src/analytics/__pycache__/analytics_manager.cpython-310.pyc b/src/analytics/__pycache__/analytics_manager.cpython-310.pyc new file mode 100644 index 0000000..36cea15 Binary files /dev/null and b/src/analytics/__pycache__/analytics_manager.cpython-310.pyc differ diff --git a/src/analytics/__pycache__/analytics_manager.cpython-311.pyc b/src/analytics/__pycache__/analytics_manager.cpython-311.pyc index bec5df9..6edcd0f 100644 Binary files a/src/analytics/__pycache__/analytics_manager.cpython-311.pyc and b/src/analytics/__pycache__/analytics_manager.cpython-311.pyc differ diff --git a/src/analytics/__pycache__/monitor_service.cpython-310.pyc b/src/analytics/__pycache__/monitor_service.cpython-310.pyc new file mode 100644 index 0000000..f004caf Binary files /dev/null and b/src/analytics/__pycache__/monitor_service.cpython-310.pyc differ diff --git a/src/analytics/__pycache__/monitor_service.cpython-311.pyc b/src/analytics/__pycache__/monitor_service.cpython-311.pyc index 1ce6572..8d88997 100644 Binary files a/src/analytics/__pycache__/monitor_service.cpython-311.pyc and b/src/analytics/__pycache__/monitor_service.cpython-311.pyc differ diff --git a/src/analytics/__pycache__/token_monitor.cpython-310.pyc b/src/analytics/__pycache__/token_monitor.cpython-310.pyc new file mode 100644 index 0000000..9399b03 Binary files /dev/null and b/src/analytics/__pycache__/token_monitor.cpython-310.pyc differ diff --git a/src/analytics/__pycache__/token_monitor.cpython-311.pyc b/src/analytics/__pycache__/token_monitor.cpython-311.pyc index 5af7074..3fad127 100644 Binary files a/src/analytics/__pycache__/token_monitor.cpython-311.pyc and b/src/analytics/__pycache__/token_monitor.cpython-311.pyc differ diff --git a/src/config/__pycache__/__init__.cpython-310.pyc b/src/config/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..7551f13 Binary files /dev/null and b/src/config/__pycache__/__init__.cpython-310.pyc differ diff --git a/src/config/__pycache__/__init__.cpython-311.pyc b/src/config/__pycache__/__init__.cpython-311.pyc index 20e2ade..661e194 100644 Binary files a/src/config/__pycache__/__init__.cpython-311.pyc and b/src/config/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/config/__pycache__/config.cpython-310.pyc b/src/config/__pycache__/config.cpython-310.pyc new file mode 100644 index 0000000..389baae Binary files /dev/null and b/src/config/__pycache__/config.cpython-310.pyc differ diff --git a/src/config/__pycache__/config.cpython-311.pyc b/src/config/__pycache__/config.cpython-311.pyc index dab0542..5571d7d 100644 Binary files a/src/config/__pycache__/config.cpython-311.pyc and b/src/config/__pycache__/config.cpython-311.pyc differ diff --git a/src/config/__pycache__/unified_config.cpython-310.pyc b/src/config/__pycache__/unified_config.cpython-310.pyc new file mode 100644 index 0000000..12514a0 Binary files /dev/null and b/src/config/__pycache__/unified_config.cpython-310.pyc differ diff --git a/src/config/__pycache__/unified_config.cpython-311.pyc b/src/config/__pycache__/unified_config.cpython-311.pyc index 0ce4eb2..94c5a92 100644 Binary files a/src/config/__pycache__/unified_config.cpython-311.pyc and b/src/config/__pycache__/unified_config.cpython-311.pyc differ diff --git a/src/config/config.py b/src/config/config.py index 56fbe78..379a650 100644 --- a/src/config/config.py +++ b/src/config/config.py @@ -10,8 +10,8 @@ class Config: ALIBABA_MODEL_NAME = "qwen-plus-latest" # 数据库配置 - DATABASE_URL = "mysql+pymysql://tsp_assistant:123456@jeason.online/tsp_assistant?charset=utf8mb4" - # DATABASE_URL = "sqlite:///local_test.db" # 本地测试数据库 + DATABASE_URL = "mysql+pymysql://tsp_assistant:123456@43.134.68.207/tsp_assistant?charset=utf8mb4" + # DATABASE_URL = "sqlite:///tsp_assistant.db" # 本地测试数据库 # 知识库配置 KNOWLEDGE_BASE_PATH = "data/knowledge_base" diff --git a/src/core/__pycache__/__init__.cpython-310.pyc b/src/core/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..5697a90 Binary files /dev/null and b/src/core/__pycache__/__init__.cpython-310.pyc differ diff --git a/src/core/__pycache__/__init__.cpython-311.pyc b/src/core/__pycache__/__init__.cpython-311.pyc index 85f6415..8d5f830 100644 Binary files a/src/core/__pycache__/__init__.cpython-311.pyc and b/src/core/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/core/__pycache__/auth_manager.cpython-310.pyc b/src/core/__pycache__/auth_manager.cpython-310.pyc new file mode 100644 index 0000000..72a3412 Binary files /dev/null and b/src/core/__pycache__/auth_manager.cpython-310.pyc differ diff --git a/src/core/__pycache__/auth_manager.cpython-311.pyc b/src/core/__pycache__/auth_manager.cpython-311.pyc index 1ab3b73..a844a59 100644 Binary files a/src/core/__pycache__/auth_manager.cpython-311.pyc and b/src/core/__pycache__/auth_manager.cpython-311.pyc differ diff --git a/src/core/__pycache__/backup_manager.cpython-310.pyc b/src/core/__pycache__/backup_manager.cpython-310.pyc new file mode 100644 index 0000000..6f3e648 Binary files /dev/null and b/src/core/__pycache__/backup_manager.cpython-310.pyc differ diff --git a/src/core/__pycache__/backup_manager.cpython-311.pyc b/src/core/__pycache__/backup_manager.cpython-311.pyc index df40c33..c14927a 100644 Binary files a/src/core/__pycache__/backup_manager.cpython-311.pyc and b/src/core/__pycache__/backup_manager.cpython-311.pyc differ diff --git a/src/core/__pycache__/cache_manager.cpython-310.pyc b/src/core/__pycache__/cache_manager.cpython-310.pyc new file mode 100644 index 0000000..0cd9279 Binary files /dev/null and b/src/core/__pycache__/cache_manager.cpython-310.pyc differ diff --git a/src/core/__pycache__/cache_manager.cpython-311.pyc b/src/core/__pycache__/cache_manager.cpython-311.pyc index 3d71020..264eafb 100644 Binary files a/src/core/__pycache__/cache_manager.cpython-311.pyc and b/src/core/__pycache__/cache_manager.cpython-311.pyc differ diff --git a/src/core/__pycache__/database.cpython-310.pyc b/src/core/__pycache__/database.cpython-310.pyc new file mode 100644 index 0000000..42ca1a9 Binary files /dev/null and b/src/core/__pycache__/database.cpython-310.pyc differ diff --git a/src/core/__pycache__/database.cpython-311.pyc b/src/core/__pycache__/database.cpython-311.pyc index 465f911..654f651 100644 Binary files a/src/core/__pycache__/database.cpython-311.pyc and b/src/core/__pycache__/database.cpython-311.pyc differ diff --git a/src/core/__pycache__/llm_client.cpython-310.pyc b/src/core/__pycache__/llm_client.cpython-310.pyc new file mode 100644 index 0000000..24ab70e Binary files /dev/null and b/src/core/__pycache__/llm_client.cpython-310.pyc differ diff --git a/src/core/__pycache__/llm_client.cpython-311.pyc b/src/core/__pycache__/llm_client.cpython-311.pyc index e4f49a6..1596081 100644 Binary files a/src/core/__pycache__/llm_client.cpython-311.pyc and b/src/core/__pycache__/llm_client.cpython-311.pyc differ diff --git a/src/core/__pycache__/models.cpython-310.pyc b/src/core/__pycache__/models.cpython-310.pyc new file mode 100644 index 0000000..f351780 Binary files /dev/null and b/src/core/__pycache__/models.cpython-310.pyc differ diff --git a/src/core/__pycache__/models.cpython-311.pyc b/src/core/__pycache__/models.cpython-311.pyc index 530e97a..5f4d95b 100644 Binary files a/src/core/__pycache__/models.cpython-311.pyc and b/src/core/__pycache__/models.cpython-311.pyc differ diff --git a/src/core/__pycache__/query_optimizer.cpython-310.pyc b/src/core/__pycache__/query_optimizer.cpython-310.pyc new file mode 100644 index 0000000..db686e2 Binary files /dev/null and b/src/core/__pycache__/query_optimizer.cpython-310.pyc differ diff --git a/src/core/__pycache__/query_optimizer.cpython-311.pyc b/src/core/__pycache__/query_optimizer.cpython-311.pyc index 11c0fc3..a213716 100644 Binary files a/src/core/__pycache__/query_optimizer.cpython-311.pyc and b/src/core/__pycache__/query_optimizer.cpython-311.pyc differ diff --git a/src/core/__pycache__/redis_manager.cpython-310.pyc b/src/core/__pycache__/redis_manager.cpython-310.pyc new file mode 100644 index 0000000..6f5f899 Binary files /dev/null and b/src/core/__pycache__/redis_manager.cpython-310.pyc differ diff --git a/src/core/__pycache__/redis_manager.cpython-311.pyc b/src/core/__pycache__/redis_manager.cpython-311.pyc index d0ee168..fda44f7 100644 Binary files a/src/core/__pycache__/redis_manager.cpython-311.pyc and b/src/core/__pycache__/redis_manager.cpython-311.pyc differ diff --git a/src/core/__pycache__/system_optimizer.cpython-310.pyc b/src/core/__pycache__/system_optimizer.cpython-310.pyc new file mode 100644 index 0000000..e6926b2 Binary files /dev/null and b/src/core/__pycache__/system_optimizer.cpython-310.pyc differ diff --git a/src/core/__pycache__/system_optimizer.cpython-311.pyc b/src/core/__pycache__/system_optimizer.cpython-311.pyc index d4c67f6..d3cd263 100644 Binary files a/src/core/__pycache__/system_optimizer.cpython-311.pyc and b/src/core/__pycache__/system_optimizer.cpython-311.pyc differ diff --git a/src/core/models.py b/src/core/models.py index a6f2342..b4f782a 100644 --- a/src/core/models.py +++ b/src/core/models.py @@ -86,6 +86,9 @@ class KnowledgeEntry(Base): verified_by = Column(String(100)) # 验证人 verified_at = Column(DateTime) # 验证时间 vector_embedding = Column(Text) # 向量嵌入的JSON字符串 + search_frequency = Column(Integer, default=0) # 搜索频率 + last_accessed = Column(DateTime) # 最后访问时间 + relevance_score = Column(Float, default=0.0) # 相关性评分 class VehicleData(Base): """车辆实时数据模型""" diff --git a/src/dialogue/__pycache__/__init__.cpython-310.pyc b/src/dialogue/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..fa2f7b5 Binary files /dev/null and b/src/dialogue/__pycache__/__init__.cpython-310.pyc differ diff --git a/src/dialogue/__pycache__/__init__.cpython-311.pyc b/src/dialogue/__pycache__/__init__.cpython-311.pyc index 77ea641..6dfa14e 100644 Binary files a/src/dialogue/__pycache__/__init__.cpython-311.pyc and b/src/dialogue/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/dialogue/__pycache__/conversation_history.cpython-310.pyc b/src/dialogue/__pycache__/conversation_history.cpython-310.pyc new file mode 100644 index 0000000..24b8516 Binary files /dev/null and b/src/dialogue/__pycache__/conversation_history.cpython-310.pyc differ diff --git a/src/dialogue/__pycache__/conversation_history.cpython-311.pyc b/src/dialogue/__pycache__/conversation_history.cpython-311.pyc index 509d311..5d1e8e4 100644 Binary files a/src/dialogue/__pycache__/conversation_history.cpython-311.pyc and b/src/dialogue/__pycache__/conversation_history.cpython-311.pyc differ diff --git a/src/dialogue/__pycache__/dialogue_manager.cpython-310.pyc b/src/dialogue/__pycache__/dialogue_manager.cpython-310.pyc new file mode 100644 index 0000000..14c9b21 Binary files /dev/null and b/src/dialogue/__pycache__/dialogue_manager.cpython-310.pyc differ diff --git a/src/dialogue/__pycache__/dialogue_manager.cpython-311.pyc b/src/dialogue/__pycache__/dialogue_manager.cpython-311.pyc index 1be43a3..93b6a1e 100644 Binary files a/src/dialogue/__pycache__/dialogue_manager.cpython-311.pyc and b/src/dialogue/__pycache__/dialogue_manager.cpython-311.pyc differ diff --git a/src/dialogue/__pycache__/realtime_chat.cpython-310.pyc b/src/dialogue/__pycache__/realtime_chat.cpython-310.pyc new file mode 100644 index 0000000..d9328bf Binary files /dev/null and b/src/dialogue/__pycache__/realtime_chat.cpython-310.pyc differ diff --git a/src/dialogue/__pycache__/realtime_chat.cpython-311.pyc b/src/dialogue/__pycache__/realtime_chat.cpython-311.pyc index 564fc60..05af031 100644 Binary files a/src/dialogue/__pycache__/realtime_chat.cpython-311.pyc and b/src/dialogue/__pycache__/realtime_chat.cpython-311.pyc differ diff --git a/src/integrations/__pycache__/__init__.cpython-310.pyc b/src/integrations/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..201f7c0 Binary files /dev/null and b/src/integrations/__pycache__/__init__.cpython-310.pyc differ diff --git a/src/integrations/__pycache__/__init__.cpython-311.pyc b/src/integrations/__pycache__/__init__.cpython-311.pyc index 642d61e..faabf7e 100644 Binary files a/src/integrations/__pycache__/__init__.cpython-311.pyc and b/src/integrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/integrations/__pycache__/ai_suggestion_service.cpython-310.pyc b/src/integrations/__pycache__/ai_suggestion_service.cpython-310.pyc new file mode 100644 index 0000000..efc2ad5 Binary files /dev/null and b/src/integrations/__pycache__/ai_suggestion_service.cpython-310.pyc differ diff --git a/src/integrations/__pycache__/ai_suggestion_service.cpython-311.pyc b/src/integrations/__pycache__/ai_suggestion_service.cpython-311.pyc index 47e4b27..8cef759 100644 Binary files a/src/integrations/__pycache__/ai_suggestion_service.cpython-311.pyc and b/src/integrations/__pycache__/ai_suggestion_service.cpython-311.pyc differ diff --git a/src/integrations/__pycache__/config_manager.cpython-310.pyc b/src/integrations/__pycache__/config_manager.cpython-310.pyc new file mode 100644 index 0000000..ddd7af4 Binary files /dev/null and b/src/integrations/__pycache__/config_manager.cpython-310.pyc differ diff --git a/src/integrations/__pycache__/config_manager.cpython-311.pyc b/src/integrations/__pycache__/config_manager.cpython-311.pyc index 6f2b9e2..c9f6f18 100644 Binary files a/src/integrations/__pycache__/config_manager.cpython-311.pyc and b/src/integrations/__pycache__/config_manager.cpython-311.pyc differ diff --git a/src/integrations/__pycache__/feishu_client.cpython-310.pyc b/src/integrations/__pycache__/feishu_client.cpython-310.pyc new file mode 100644 index 0000000..fbd006e Binary files /dev/null and b/src/integrations/__pycache__/feishu_client.cpython-310.pyc differ diff --git a/src/integrations/__pycache__/feishu_client.cpython-311.pyc b/src/integrations/__pycache__/feishu_client.cpython-311.pyc index a28d01b..4ebf9aa 100644 Binary files a/src/integrations/__pycache__/feishu_client.cpython-311.pyc and b/src/integrations/__pycache__/feishu_client.cpython-311.pyc differ diff --git a/src/integrations/__pycache__/feishu_permission_checker.cpython-310.pyc b/src/integrations/__pycache__/feishu_permission_checker.cpython-310.pyc new file mode 100644 index 0000000..6b3a103 Binary files /dev/null and b/src/integrations/__pycache__/feishu_permission_checker.cpython-310.pyc differ diff --git a/src/integrations/__pycache__/feishu_permission_checker.cpython-311.pyc b/src/integrations/__pycache__/feishu_permission_checker.cpython-311.pyc index 39240f9..de8c000 100644 Binary files a/src/integrations/__pycache__/feishu_permission_checker.cpython-311.pyc and b/src/integrations/__pycache__/feishu_permission_checker.cpython-311.pyc differ diff --git a/src/integrations/__pycache__/flexible_field_mapper.cpython-310.pyc b/src/integrations/__pycache__/flexible_field_mapper.cpython-310.pyc new file mode 100644 index 0000000..77b8a25 Binary files /dev/null and b/src/integrations/__pycache__/flexible_field_mapper.cpython-310.pyc differ diff --git a/src/integrations/__pycache__/flexible_field_mapper.cpython-311.pyc b/src/integrations/__pycache__/flexible_field_mapper.cpython-311.pyc index 6911695..c1fceab 100644 Binary files a/src/integrations/__pycache__/flexible_field_mapper.cpython-311.pyc and b/src/integrations/__pycache__/flexible_field_mapper.cpython-311.pyc differ diff --git a/src/integrations/__pycache__/workorder_sync.cpython-310.pyc b/src/integrations/__pycache__/workorder_sync.cpython-310.pyc new file mode 100644 index 0000000..1e735f3 Binary files /dev/null and b/src/integrations/__pycache__/workorder_sync.cpython-310.pyc differ diff --git a/src/integrations/__pycache__/workorder_sync.cpython-311.pyc b/src/integrations/__pycache__/workorder_sync.cpython-311.pyc index 6b1714b..d878711 100644 Binary files a/src/integrations/__pycache__/workorder_sync.cpython-311.pyc and b/src/integrations/__pycache__/workorder_sync.cpython-311.pyc differ diff --git a/src/knowledge_base/__pycache__/__init__.cpython-310.pyc b/src/knowledge_base/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..cba8299 Binary files /dev/null and b/src/knowledge_base/__pycache__/__init__.cpython-310.pyc differ diff --git a/src/knowledge_base/__pycache__/__init__.cpython-311.pyc b/src/knowledge_base/__pycache__/__init__.cpython-311.pyc index 912cf7a..a852699 100644 Binary files a/src/knowledge_base/__pycache__/__init__.cpython-311.pyc and b/src/knowledge_base/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/knowledge_base/__pycache__/knowledge_manager.cpython-310.pyc b/src/knowledge_base/__pycache__/knowledge_manager.cpython-310.pyc new file mode 100644 index 0000000..81e4833 Binary files /dev/null and b/src/knowledge_base/__pycache__/knowledge_manager.cpython-310.pyc differ diff --git a/src/knowledge_base/__pycache__/knowledge_manager.cpython-311.pyc b/src/knowledge_base/__pycache__/knowledge_manager.cpython-311.pyc index f52c75c..8d9e821 100644 Binary files a/src/knowledge_base/__pycache__/knowledge_manager.cpython-311.pyc and b/src/knowledge_base/__pycache__/knowledge_manager.cpython-311.pyc differ diff --git a/src/utils/__pycache__/__init__.cpython-310.pyc b/src/utils/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..7046a2b Binary files /dev/null and b/src/utils/__pycache__/__init__.cpython-310.pyc differ diff --git a/src/utils/__pycache__/__init__.cpython-311.pyc b/src/utils/__pycache__/__init__.cpython-311.pyc index 512823c..fe71f95 100644 Binary files a/src/utils/__pycache__/__init__.cpython-311.pyc and b/src/utils/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/utils/__pycache__/helpers.cpython-310.pyc b/src/utils/__pycache__/helpers.cpython-310.pyc new file mode 100644 index 0000000..315f331 Binary files /dev/null and b/src/utils/__pycache__/helpers.cpython-310.pyc differ diff --git a/src/utils/__pycache__/helpers.cpython-311.pyc b/src/utils/__pycache__/helpers.cpython-311.pyc index f55b2a2..db6edb9 100644 Binary files a/src/utils/__pycache__/helpers.cpython-311.pyc and b/src/utils/__pycache__/helpers.cpython-311.pyc differ diff --git a/src/vehicle/__pycache__/__init__.cpython-310.pyc b/src/vehicle/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..4b44d73 Binary files /dev/null and b/src/vehicle/__pycache__/__init__.cpython-310.pyc differ diff --git a/src/vehicle/__pycache__/__init__.cpython-311.pyc b/src/vehicle/__pycache__/__init__.cpython-311.pyc index e533729..c284ace 100644 Binary files a/src/vehicle/__pycache__/__init__.cpython-311.pyc and b/src/vehicle/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/vehicle/__pycache__/vehicle_data_manager.cpython-310.pyc b/src/vehicle/__pycache__/vehicle_data_manager.cpython-310.pyc new file mode 100644 index 0000000..f6b8067 Binary files /dev/null and b/src/vehicle/__pycache__/vehicle_data_manager.cpython-310.pyc differ diff --git a/src/vehicle/__pycache__/vehicle_data_manager.cpython-311.pyc b/src/vehicle/__pycache__/vehicle_data_manager.cpython-311.pyc index 256e94c..fdf0f50 100644 Binary files a/src/vehicle/__pycache__/vehicle_data_manager.cpython-311.pyc and b/src/vehicle/__pycache__/vehicle_data_manager.cpython-311.pyc differ diff --git a/src/web/__pycache__/app.cpython-310.pyc b/src/web/__pycache__/app.cpython-310.pyc index 79054f0..1f2d3b4 100644 Binary files a/src/web/__pycache__/app.cpython-310.pyc and b/src/web/__pycache__/app.cpython-310.pyc differ diff --git a/src/web/__pycache__/app.cpython-311.pyc b/src/web/__pycache__/app.cpython-311.pyc index aad9318..b6285e8 100644 Binary files a/src/web/__pycache__/app.cpython-311.pyc and b/src/web/__pycache__/app.cpython-311.pyc differ diff --git a/src/web/__pycache__/error_handlers.cpython-310.pyc b/src/web/__pycache__/error_handlers.cpython-310.pyc index 03eb5bf..c4401cc 100644 Binary files a/src/web/__pycache__/error_handlers.cpython-310.pyc and b/src/web/__pycache__/error_handlers.cpython-310.pyc differ diff --git a/src/web/__pycache__/error_handlers.cpython-311.pyc b/src/web/__pycache__/error_handlers.cpython-311.pyc index 5a9aeec..8e3b876 100644 Binary files a/src/web/__pycache__/error_handlers.cpython-311.pyc and b/src/web/__pycache__/error_handlers.cpython-311.pyc differ diff --git a/src/web/__pycache__/service_manager.cpython-310.pyc b/src/web/__pycache__/service_manager.cpython-310.pyc index c4a49f9..806da92 100644 Binary files a/src/web/__pycache__/service_manager.cpython-310.pyc and b/src/web/__pycache__/service_manager.cpython-310.pyc differ diff --git a/src/web/__pycache__/service_manager.cpython-311.pyc b/src/web/__pycache__/service_manager.cpython-311.pyc index 0ecaca8..666d126 100644 Binary files a/src/web/__pycache__/service_manager.cpython-311.pyc and b/src/web/__pycache__/service_manager.cpython-311.pyc differ diff --git a/src/web/__pycache__/websocket_server.cpython-310.pyc b/src/web/__pycache__/websocket_server.cpython-310.pyc index 0637bcf..2db4020 100644 Binary files a/src/web/__pycache__/websocket_server.cpython-310.pyc and b/src/web/__pycache__/websocket_server.cpython-310.pyc differ diff --git a/src/web/__pycache__/websocket_server.cpython-311.pyc b/src/web/__pycache__/websocket_server.cpython-311.pyc index 5ee3132..8c5830a 100644 Binary files a/src/web/__pycache__/websocket_server.cpython-311.pyc and b/src/web/__pycache__/websocket_server.cpython-311.pyc differ diff --git a/src/web/blueprints/__pycache__/__init__.cpython-310.pyc b/src/web/blueprints/__pycache__/__init__.cpython-310.pyc index 6177792..7a0de6e 100644 Binary files a/src/web/blueprints/__pycache__/__init__.cpython-310.pyc and b/src/web/blueprints/__pycache__/__init__.cpython-310.pyc differ diff --git a/src/web/blueprints/__pycache__/__init__.cpython-311.pyc b/src/web/blueprints/__pycache__/__init__.cpython-311.pyc index 1ef659d..47fc2d1 100644 Binary files a/src/web/blueprints/__pycache__/__init__.cpython-311.pyc and b/src/web/blueprints/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/web/blueprints/__pycache__/agent.cpython-310.pyc b/src/web/blueprints/__pycache__/agent.cpython-310.pyc new file mode 100644 index 0000000..e358a54 Binary files /dev/null and b/src/web/blueprints/__pycache__/agent.cpython-310.pyc differ diff --git a/src/web/blueprints/__pycache__/agent.cpython-311.pyc b/src/web/blueprints/__pycache__/agent.cpython-311.pyc index cd33b86..74ca9c3 100644 Binary files a/src/web/blueprints/__pycache__/agent.cpython-311.pyc and b/src/web/blueprints/__pycache__/agent.cpython-311.pyc differ diff --git a/src/web/blueprints/__pycache__/alerts.cpython-310.pyc b/src/web/blueprints/__pycache__/alerts.cpython-310.pyc index e1b9c7c..0963fc5 100644 Binary files a/src/web/blueprints/__pycache__/alerts.cpython-310.pyc and b/src/web/blueprints/__pycache__/alerts.cpython-310.pyc differ diff --git a/src/web/blueprints/__pycache__/alerts.cpython-311.pyc b/src/web/blueprints/__pycache__/alerts.cpython-311.pyc index 0221f3c..51ef408 100644 Binary files a/src/web/blueprints/__pycache__/alerts.cpython-311.pyc and b/src/web/blueprints/__pycache__/alerts.cpython-311.pyc differ diff --git a/src/web/blueprints/__pycache__/analytics.cpython-310.pyc b/src/web/blueprints/__pycache__/analytics.cpython-310.pyc new file mode 100644 index 0000000..6242141 Binary files /dev/null and b/src/web/blueprints/__pycache__/analytics.cpython-310.pyc differ diff --git a/src/web/blueprints/__pycache__/analytics.cpython-311.pyc b/src/web/blueprints/__pycache__/analytics.cpython-311.pyc index 26b2a9f..642ef89 100644 Binary files a/src/web/blueprints/__pycache__/analytics.cpython-311.pyc and b/src/web/blueprints/__pycache__/analytics.cpython-311.pyc differ diff --git a/src/web/blueprints/__pycache__/auth.cpython-310.pyc b/src/web/blueprints/__pycache__/auth.cpython-310.pyc new file mode 100644 index 0000000..534152a Binary files /dev/null and b/src/web/blueprints/__pycache__/auth.cpython-310.pyc differ diff --git a/src/web/blueprints/__pycache__/auth.cpython-311.pyc b/src/web/blueprints/__pycache__/auth.cpython-311.pyc index 82f538a..424d0f7 100644 Binary files a/src/web/blueprints/__pycache__/auth.cpython-311.pyc and b/src/web/blueprints/__pycache__/auth.cpython-311.pyc differ diff --git a/src/web/blueprints/__pycache__/conversations.cpython-310.pyc b/src/web/blueprints/__pycache__/conversations.cpython-310.pyc index 0da6427..8df31d2 100644 Binary files a/src/web/blueprints/__pycache__/conversations.cpython-310.pyc and b/src/web/blueprints/__pycache__/conversations.cpython-310.pyc differ diff --git a/src/web/blueprints/__pycache__/conversations.cpython-311.pyc b/src/web/blueprints/__pycache__/conversations.cpython-311.pyc index c2c0958..d9bf417 100644 Binary files a/src/web/blueprints/__pycache__/conversations.cpython-311.pyc and b/src/web/blueprints/__pycache__/conversations.cpython-311.pyc differ diff --git a/src/web/blueprints/__pycache__/core.cpython-310.pyc b/src/web/blueprints/__pycache__/core.cpython-310.pyc index 6d9c12d..37a48c3 100644 Binary files a/src/web/blueprints/__pycache__/core.cpython-310.pyc and b/src/web/blueprints/__pycache__/core.cpython-310.pyc differ diff --git a/src/web/blueprints/__pycache__/core.cpython-311.pyc b/src/web/blueprints/__pycache__/core.cpython-311.pyc index 425a3f4..5a18d8c 100644 Binary files a/src/web/blueprints/__pycache__/core.cpython-311.pyc and b/src/web/blueprints/__pycache__/core.cpython-311.pyc differ diff --git a/src/web/blueprints/__pycache__/feishu_sync.cpython-310.pyc b/src/web/blueprints/__pycache__/feishu_sync.cpython-310.pyc index 63b3e94..45fed5b 100644 Binary files a/src/web/blueprints/__pycache__/feishu_sync.cpython-310.pyc and b/src/web/blueprints/__pycache__/feishu_sync.cpython-310.pyc differ diff --git a/src/web/blueprints/__pycache__/feishu_sync.cpython-311.pyc b/src/web/blueprints/__pycache__/feishu_sync.cpython-311.pyc index 474f194..7f8d08a 100644 Binary files a/src/web/blueprints/__pycache__/feishu_sync.cpython-311.pyc and b/src/web/blueprints/__pycache__/feishu_sync.cpython-311.pyc differ diff --git a/src/web/blueprints/__pycache__/knowledge.cpython-310.pyc b/src/web/blueprints/__pycache__/knowledge.cpython-310.pyc index 75ec708..f124744 100644 Binary files a/src/web/blueprints/__pycache__/knowledge.cpython-310.pyc and b/src/web/blueprints/__pycache__/knowledge.cpython-310.pyc differ diff --git a/src/web/blueprints/__pycache__/knowledge.cpython-311.pyc b/src/web/blueprints/__pycache__/knowledge.cpython-311.pyc index ba694ac..bf58bc2 100644 Binary files a/src/web/blueprints/__pycache__/knowledge.cpython-311.pyc and b/src/web/blueprints/__pycache__/knowledge.cpython-311.pyc differ diff --git a/src/web/blueprints/__pycache__/monitoring.cpython-310.pyc b/src/web/blueprints/__pycache__/monitoring.cpython-310.pyc index 8ecf963..1251502 100644 Binary files a/src/web/blueprints/__pycache__/monitoring.cpython-310.pyc and b/src/web/blueprints/__pycache__/monitoring.cpython-310.pyc differ diff --git a/src/web/blueprints/__pycache__/monitoring.cpython-311.pyc b/src/web/blueprints/__pycache__/monitoring.cpython-311.pyc index c065ad5..1461149 100644 Binary files a/src/web/blueprints/__pycache__/monitoring.cpython-311.pyc and b/src/web/blueprints/__pycache__/monitoring.cpython-311.pyc differ diff --git a/src/web/blueprints/__pycache__/system.cpython-310.pyc b/src/web/blueprints/__pycache__/system.cpython-310.pyc index 438b599..1ea3543 100644 Binary files a/src/web/blueprints/__pycache__/system.cpython-310.pyc and b/src/web/blueprints/__pycache__/system.cpython-310.pyc differ diff --git a/src/web/blueprints/__pycache__/system.cpython-311.pyc b/src/web/blueprints/__pycache__/system.cpython-311.pyc index a9db02a..e1514a2 100644 Binary files a/src/web/blueprints/__pycache__/system.cpython-311.pyc and b/src/web/blueprints/__pycache__/system.cpython-311.pyc differ diff --git a/src/web/blueprints/__pycache__/test.cpython-310.pyc b/src/web/blueprints/__pycache__/test.cpython-310.pyc new file mode 100644 index 0000000..da4c516 Binary files /dev/null and b/src/web/blueprints/__pycache__/test.cpython-310.pyc differ diff --git a/src/web/blueprints/__pycache__/test.cpython-311.pyc b/src/web/blueprints/__pycache__/test.cpython-311.pyc index 4aff382..d235a53 100644 Binary files a/src/web/blueprints/__pycache__/test.cpython-311.pyc and b/src/web/blueprints/__pycache__/test.cpython-311.pyc differ diff --git a/src/web/blueprints/__pycache__/vehicle.cpython-310.pyc b/src/web/blueprints/__pycache__/vehicle.cpython-310.pyc new file mode 100644 index 0000000..db083d6 Binary files /dev/null and b/src/web/blueprints/__pycache__/vehicle.cpython-310.pyc differ diff --git a/src/web/blueprints/__pycache__/vehicle.cpython-311.pyc b/src/web/blueprints/__pycache__/vehicle.cpython-311.pyc index 448d250..d46b504 100644 Binary files a/src/web/blueprints/__pycache__/vehicle.cpython-311.pyc and b/src/web/blueprints/__pycache__/vehicle.cpython-311.pyc differ diff --git a/src/web/blueprints/__pycache__/workorders.cpython-310.pyc b/src/web/blueprints/__pycache__/workorders.cpython-310.pyc index ee79512..5c1a99f 100644 Binary files a/src/web/blueprints/__pycache__/workorders.cpython-310.pyc and b/src/web/blueprints/__pycache__/workorders.cpython-310.pyc differ diff --git a/src/web/blueprints/__pycache__/workorders.cpython-311.pyc b/src/web/blueprints/__pycache__/workorders.cpython-311.pyc index 758f803..f4f6daf 100644 Binary files a/src/web/blueprints/__pycache__/workorders.cpython-311.pyc and b/src/web/blueprints/__pycache__/workorders.cpython-311.pyc differ diff --git a/src/web/blueprints/knowledge.py b/src/web/blueprints/knowledge.py index 5f64775..5d313a7 100644 --- a/src/web/blueprints/knowledge.py +++ b/src/web/blueprints/knowledge.py @@ -8,6 +8,7 @@ import os import tempfile import uuid from flask import Blueprint, request, jsonify +from src.agent_assistant import TSPAgentAssistant from src.web.service_manager import service_manager from src.web.error_handlers import handle_api_errors, create_error_response, create_success_response diff --git a/src/web/error_handlers.py b/src/web/error_handlers.py index def6221..e8f08e6 100644 --- a/src/web/error_handlers.py +++ b/src/web/error_handlers.py @@ -15,21 +15,21 @@ logger = logging.getLogger(__name__) def handle_api_errors(func: Callable) -> Callable: """API错误处理装饰器""" @wraps(func) - def wrapper(*args, **kwargs) -> Dict[str, Any]: + def wrapper(*args, **kwargs): try: return func(*args, **kwargs) except ValueError as e: - logger.warning(f"参数错误 {func.__name__}: {e}") - return jsonify({"error": f"参数错误: {str(e)}"}), 400 + logger.warning(f"参数错误 in {func.__name__}: {e}") + return create_error_response(f"参数错误: {str(e)}", 400) except PermissionError as e: - logger.warning(f"权限错误 {func.__name__}: {e}") - return jsonify({"error": f"权限不足: {str(e)}"}), 403 + logger.warning(f"权限错误 in {func.__name__}: {e}") + return create_error_response(f"权限不足: {str(e)}", 403) except FileNotFoundError as e: - logger.warning(f"文件未找到 {func.__name__}: {e}") - return jsonify({"error": f"文件未找到: {str(e)}"}), 404 + logger.warning(f"文件未找到 in {func.__name__}: {e}") + return create_error_response(f"文件未找到: {str(e)}", 404) except Exception as e: - logger.error(f"未处理错误 {func.__name__}: {e}") - return jsonify({"error": f"服务器内部错误: {str(e)}"}), 500 + logger.error(f"未处理错误 in {func.__name__}: {e}", exc_info=True) + return create_error_response(f"服务器内部错误: {str(e)}", 500) return wrapper diff --git a/src/web/static/js/chat.js b/src/web/static/js/chat.js index e1d1fe8..3dfe5e7 100644 --- a/src/web/static/js/chat.js +++ b/src/web/static/js/chat.js @@ -192,7 +192,7 @@ class ChatClient { connectWebSocket() { return new Promise((resolve, reject) => { try { - this.websocket = new WebSocket('ws://localhost:8765'); + this.websocket = new WebSocket('ws://localhost:8766'); // 设置连接超时 const timeout = setTimeout(() => { diff --git a/src/web/static/js/dashboard.js b/src/web/static/js/dashboard.js index 49a7b57..65e2be3 100644 --- a/src/web/static/js/dashboard.js +++ b/src/web/static/js/dashboard.js @@ -777,7 +777,7 @@ class TSPDashboard { // 初始化WebSocket连接 initWebSocketConnection() { try { - const wsUrl = `ws://localhost:8765/dashboard`; + const wsUrl = `ws://localhost:8766/dashboard`; this.websocket = new WebSocket(wsUrl); this.websocket.onopen = () => { diff --git a/src/web/websocket_server.py b/src/web/websocket_server.py index 6314f22..533f927 100644 --- a/src/web/websocket_server.py +++ b/src/web/websocket_server.py @@ -19,7 +19,7 @@ logger = logging.getLogger(__name__) class WebSocketServer: """WebSocket服务器""" - def __init__(self, host: str = "localhost", port: int = 8765): + def __init__(self, host: str = "localhost", port: int = 8766): self.host = host self.port = port self.chat_manager = RealtimeChatManager() @@ -210,10 +210,10 @@ class WebSocketServer: await websocket.send(json.dumps(response, ensure_ascii=False)) - async def handle_client(self, websocket: WebSocketServerProtocol, path: str): + async def handle_client(self, websocket: WebSocketServerProtocol): """处理客户端连接""" # 检查连接头 - headers = websocket.request_headers + headers = websocket.request.headers connection = headers.get("Connection", "").lower() # 处理不同的连接头格式 @@ -241,18 +241,8 @@ class WebSocketServer: """启动WebSocket服务器""" logger.info(f"启动WebSocket服务器: ws://{self.host}:{self.port}") - # 添加CORS支持 - async def handle_client_with_cors(websocket: WebSocketServerProtocol): - # 获取path,websockets在提供process_request时,不会将path传递给handler - path = websocket.path - # 设置CORS头 - if websocket.request_headers.get("Origin"): - # 允许跨域连接 - pass - await self.handle_client(websocket, path) - async with websockets.serve( - handle_client_with_cors, + self.handle_client, self.host, self.port, # 添加额外的服务器选项 @@ -262,15 +252,12 @@ class WebSocketServer: def _process_request(self, path, request_headers): """处理HTTP请求,支持CORS""" - # 检查是否是WebSocket升级请求 - # request_headers 可能是 Headers 对象或 Request 对象 - if hasattr(request_headers, 'get'): - upgrade_header = request_headers.get("Upgrade", "").lower() - elif hasattr(request_headers, 'headers'): - upgrade_header = request_headers.headers.get("Upgrade", "").lower() - else: - upgrade_header = "" + # websockets v10+ passes the request object instead of headers dict. + headers = request_headers + if not hasattr(headers, 'get'): + headers = headers.headers + upgrade_header = headers.get("Upgrade", "").lower() if upgrade_header == "websocket": return None # 允许WebSocket连接 @@ -287,7 +274,7 @@ class WebSocketServer:

WebSocket Server is running

This is a WebSocket server. Please use a WebSocket client to connect.

-

WebSocket URL: ws://localhost:8765

+

WebSocket URL: ws://localhost:8766

""" diff --git a/test.py b/test.py new file mode 100644 index 0000000..4ff2229 --- /dev/null +++ b/test.py @@ -0,0 +1,19 @@ +import google.generativeai as genai +from google.api_core import client_options + +# 配置代理地址 +# 注意:这里不需要加 /v1beta 或 /v1,只填主机和端口 +proxy_url = "https://generativelanguage.googleapis.com/v1beta/openai/" + +genai.configure( + api_key="AIzaSyCK8Ykg2UGzDV9ZmPAbbqOFgK3_9ghxZl4", + transport="rest", + client_options=client_options.ClientOptions( + api_endpoint=proxy_url + ), +) + +model = genai.GenerativeModel('gemini-2.5-pro') +response = model.generate_content("介绍一下你自己,用50字中文回答。") + +print(response.text) diff --git a/tsp_assistant.db b/tsp_assistant.db index 5d14bcb..57ef90c 100644 Binary files a/tsp_assistant.db and b/tsp_assistant.db differ