From 5e93473294c5c762bdb04e37f373824922f91e66 Mon Sep 17 00:00:00 2001 From: zhaojie Date: Wed, 11 Feb 2026 14:41:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=BA=E5=99=A8=E4=BA=BA=E8=B5=8B=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/settings.local.json | 6 +- .env | 28 + data/tsp_assistant.db | Bin 65536 -> 81920 bytes docs/text.txt | 51 ++ logs/2026-02-10_23-22-54/dashboard.log | 380 ------------ logs/2026-02-10_23-48-47/dashboard.log | 545 ------------------ logs/2026-02-10_23-51-10/dashboard.log | 298 ---------- logs/2026-02-10_23-55-42/dashboard.log | 237 -------- logs/tsp_assistant.log | 9 + src/agent/__pycache__/planner.cpython-310.pyc | Bin 10980 -> 10980 bytes .../unified_config.cpython-310.pyc | Bin 6731 -> 7814 bytes .../__pycache__/cache_manager.cpython-310.pyc | Bin 7139 -> 7139 bytes src/core/__pycache__/database.cpython-310.pyc | Bin 4850 -> 4850 bytes src/core/__pycache__/models.cpython-310.pyc | Bin 7103 -> 7435 bytes .../system_optimizer.cpython-310.pyc | Bin 12410 -> 12410 bytes .../ai_suggestion_service.cpython-310.pyc | Bin 15294 -> 15294 bytes .../config_manager.cpython-310.pyc | Bin 4618 -> 6285 bytes .../workorder_sync.cpython-310.pyc | Bin 14904 -> 15169 bytes src/utils/__pycache__/helpers.cpython-310.pyc | Bin 6257 -> 6257 bytes .../semantic_similarity.cpython-310.pyc | Bin 11087 -> 0 bytes src/web/__pycache__/app.cpython-310.pyc | Bin 6786 -> 8300 bytes 21 files changed, 93 insertions(+), 1461 deletions(-) create mode 100644 docs/text.txt delete mode 100644 logs/2026-02-10_23-22-54/dashboard.log delete mode 100644 logs/2026-02-10_23-48-47/dashboard.log delete mode 100644 logs/2026-02-10_23-51-10/dashboard.log delete mode 100644 logs/2026-02-10_23-55-42/dashboard.log delete mode 100644 src/utils/__pycache__/semantic_similarity.cpython-310.pyc diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 497982e..0990f79 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -11,7 +11,11 @@ "Bash(pip show:*)", "Bash(find:*)", "Bash(chmod:*)", - "Bash(open:*)" + "Bash(open:*)", + "Bash(ls:*)", + "Bash(.gitignore:*)", + "Bash(git reset:*)", + "Bash(lsof:*)" ], "deny": [], "ask": [] diff --git a/.env b/.env index 743a699..858e4b5 100644 --- a/.env +++ b/.env @@ -75,6 +75,9 @@ FEISHU_VERIFICATION_TOKEN= # The Encrypt Key for decrypting event data (if configured). FEISHU_ENCRYPT_KEY= +# The App Token of the Feishu multi-dimensional table document. +FEISHU_APP_TOKEN=XXnEbiCmEaMblSs6FDJcFCqsnIg + # The ID of the Feishu multi-dimensional table for data synchronization. FEISHU_TABLE_ID=tblnl3vJPpgMTSiP @@ -96,3 +99,28 @@ AI_SUGGESTION_CONFIDENCE=0.95 # The confidence score assigned when a human resolution is used. AI_HUMAN_RESOLUTION_CONFIDENCE=0.90 + + +# ============================================================================ +# REDIS CACHE CONFIGURATION +# ============================================================================ +# Redis server host (use localhost for local development) +REDIS_HOST=localhost + +# Redis server port +REDIS_PORT=6379 + +# Redis database number (0-15) +REDIS_DB=0 + +# Redis password (leave empty if no password) +REDIS_PASSWORD= + +# Redis connection pool size +REDIS_POOL_SIZE=10 + +# Redis cache default TTL in seconds (3600 = 1 hour) +REDIS_DEFAULT_TTL=3600 + +# Enable Redis cache (set to False to disable caching) +REDIS_ENABLED=True diff --git a/data/tsp_assistant.db b/data/tsp_assistant.db index 2adbb02edb216697157a7c12b9fb711421dfb8ae..8b7c6201b8b59adbdc73a56bd1d05b563c8db72d 100644 GIT binary patch literal 81920 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

Z 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 CuKT= ?) AS anon_1] -[parameters: ('2026-02-10 22:48:56.033067',)] -(Background on this error at: https://sqlalche.me/e/20/4xp6) -2026-02-10 23:48:56,067 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.DatabaseError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:48:56.033067',)] -(Background on this error at: https://sqlalche.me/e/20/4xp6) -2026-02-10 23:48:56,071 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:56] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:48:56,086 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:56] "GET /api/settings HTTP/1.1" 200 - -2026-02-10 23:48:56,110 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:56,111 - src.core.query_optimizer - ERROR - 优化分析查询失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:56,114 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:56] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:48:56,154 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:56,155 - src.core.query_optimizer - ERROR - 优化分析查询失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:56,157 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:56] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:48:56,359 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:56] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:48:56,400 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:56] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:48:56,427 - src.core.database - ERROR - 数据库操作失败: returned NULL without setting an exception -2026-02-10 23:48:56,433 - src.core.query_optimizer - ERROR - 优化分析查询失败: returned NULL without setting an exception -2026-02-10 23:48:56,435 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:56] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:48:56,479 - src.core.database - ERROR - 数据库操作失败: returned NULL without setting an exception -2026-02-10 23:48:56,483 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:48:56.480246',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:56,484 - src.core.query_optimizer - ERROR - 优化分析查询失败: returned NULL without setting an exception -2026-02-10 23:48:56,491 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:48:56.480246',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:56,498 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:56] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:48:56,517 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:56] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:48:56,542 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:48:56.537599',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:56,547 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:48:56.537599',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:57,683 - src.agent_assistant - INFO - TSP Agent助手初始化完成 -2026-02-10 23:48:57,684 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:57] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:48:58,402 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET / HTTP/1.1" 200 - -2026-02-10 23:48:58,437 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:48:58,440 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:48:58,441 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /static/js/services/api.js HTTP/1.1" 304 - -2026-02-10 23:48:58,447 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /static/js/core/store.js HTTP/1.1" 304 - -2026-02-10 23:48:58,449 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /static/js/components/AlertManager.js HTTP/1.1" 304 - -2026-02-10 23:48:58,455 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 304 - -2026-02-10 23:48:58,457 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /static/js/components/NotificationManager.js HTTP/1.1" 304 - -2026-02-10 23:48:58,460 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /static/js/app-new.js HTTP/1.1" 304 - -2026-02-10 23:48:58,462 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /static/css/design-system.css HTTP/1.1" 304 - -2026-02-10 23:48:58,843 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /api/rules HTTP/1.1" 200 - -2026-02-10 23:48:58,845 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:48:58,855 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:48:58,861 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /api/chat/sessions HTTP/1.1" 200 - -2026-02-10 23:48:58,886 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:48:58,892 - 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 ORDER BY work_orders.created_at DESC) AS anon_1] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:58,896 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /api/workorders HTTP/1.1" 500 - -2026-02-10 23:48:58,907 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /api/system/info HTTP/1.1" 200 - -2026-02-10 23:48:58,922 - src.core.database - ERROR - 数据库操作失败: (sqlite3.DatabaseError) another row available -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations) AS anon_1] -(Background on this error at: https://sqlalche.me/e/20/4xp6) -2026-02-10 23:48:58,925 - src.core.query_optimizer - ERROR - 分页查询对话失败: (sqlite3.DatabaseError) another row available -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations) AS anon_1] -(Background on this error at: https://sqlalche.me/e/20/4xp6) -2026-02-10 23:48:58,929 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:48:58,931 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /api/knowledge/stats HTTP/1.1" 200 - -2026-02-10 23:48:58,932 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /api/feishu-sync/config HTTP/1.1" 200 - -2026-02-10 23:48:58,933 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:48:58,939 - src.web.blueprints.feishu_sync - ERROR - 获取同步状态失败: 飞书配置不完整,请先配置飞书应用信息 -2026-02-10 23:48:58,942 - websockets.server - INFO - connection open -2026-02-10 23:48:58,948 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:48:58.945590',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:58,950 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /api/feishu-sync/status HTTP/1.1" 500 - -2026-02-10 23:48:58,951 - src.web.websocket_server - INFO - 客户端连接: ('::1', 63842, 0, 0) -2026-02-10 23:48:58,951 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:48:58.945590',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:58,966 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:58,966 - src.core.query_optimizer - ERROR - 优化分析查询失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:58,967 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - -2026-02-10 23:48:58,997 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:58] "GET /api/settings HTTP/1.1" 200 - -2026-02-10 23:48:59,008 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:59,009 - src.core.query_optimizer - ERROR - 优化分析查询失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:59,010 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:59] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:48:59,020 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:59,021 - src.core.query_optimizer - ERROR - 优化分析查询失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:48:59,022 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:48:59] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:49:00,644 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:00.643444',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:00,645 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:00.643444',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:00,650 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:00] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:49:00,698 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:00] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:49:00,698 - src.core.database - ERROR - 数据库操作失败: returned NULL without setting an exception -2026-02-10 23:49:00,701 - src.core.query_optimizer - ERROR - 优化分析查询失败: returned NULL without setting an exception -2026-02-10 23:49:00,703 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:00] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:49:00,710 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:00,712 - src.core.query_optimizer - ERROR - 优化分析查询失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:00,714 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:00] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:49:00,725 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:00.721862',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:00,725 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:00.721862',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:03,858 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:03.857297',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:03,860 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:03.857297',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:03,863 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:03] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:49:03,927 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:03] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:49:03,932 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:03,933 - src.core.query_optimizer - ERROR - 优化分析查询失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:03,936 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:03] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:49:03,948 - src.core.database - ERROR - 数据库操作失败: (sqlite3.DatabaseError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/4xp6) -2026-02-10 23:49:03,951 - src.core.query_optimizer - ERROR - 优化分析查询失败: (sqlite3.DatabaseError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/4xp6) -2026-02-10 23:49:03,954 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:03] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:49:03,955 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:03.952792',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:03,957 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:03.952792',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:04,970 - src.web.websocket_server - INFO - 客户端断开: ('::1', 63842, 0, 0) -2026-02-10 23:49:04,975 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:04] "GET / HTTP/1.1" 200 - -2026-02-10 23:49:05,012 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:49:05,014 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:49:05,019 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /static/js/core/store.js HTTP/1.1" 304 - -2026-02-10 23:49:05,025 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /static/js/services/api.js HTTP/1.1" 304 - -2026-02-10 23:49:05,026 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /static/js/components/NotificationManager.js HTTP/1.1" 304 - -2026-02-10 23:49:05,034 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /static/js/components/AlertManager.js HTTP/1.1" 304 - -2026-02-10 23:49:05,036 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 304 - -2026-02-10 23:49:05,038 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /static/css/design-system.css HTTP/1.1" 304 - -2026-02-10 23:49:05,042 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /static/js/app-new.js HTTP/1.1" 304 - -2026-02-10 23:49:05,162 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:49:05,168 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:49:05,184 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/chat/sessions HTTP/1.1" 200 - -2026-02-10 23:49:05,193 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/rules HTTP/1.1" 200 - -2026-02-10 23:49:05,217 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:49:05,227 - src.core.database - ERROR - 数据库操作失败: (sqlite3.DatabaseError) 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 ORDER BY work_orders.created_at DESC) AS anon_1] -(Background on this error at: https://sqlalche.me/e/20/4xp6) -2026-02-10 23:49:05,230 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/workorders HTTP/1.1" 500 - -2026-02-10 23:49:05,244 - websockets.server - INFO - connection open -2026-02-10 23:49:05,254 - src.web.websocket_server - INFO - 客户端连接: ('::1', 63889, 0, 0) -2026-02-10 23:49:05,257 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/system/info HTTP/1.1" 200 - -2026-02-10 23:49:05,259 - src.core.database - ERROR - 数据库操作失败: returned NULL without setting an exception -2026-02-10 23:49:05,265 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/knowledge/stats HTTP/1.1" 200 - -2026-02-10 23:49:05,266 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:49:05,275 - src.web.error_handlers - ERROR - 未处理错误 get_health: returned NULL without setting an exception -2026-02-10 23:49:05,279 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/feishu-sync/config HTTP/1.1" 200 - -2026-02-10 23:49:05,281 - src.web.blueprints.feishu_sync - ERROR - 获取同步状态失败: 飞书配置不完整,请先配置飞书应用信息 -2026-02-10 23:49:05,283 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:49:05,293 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/feishu-sync/status HTTP/1.1" 500 - -2026-02-10 23:49:05,293 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:05,295 - src.core.query_optimizer - ERROR - 优化分析查询失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:05,298 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - -2026-02-10 23:49:05,320 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/settings HTTP/1.1" 200 - -2026-02-10 23:49:05,327 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:05,328 - src.core.query_optimizer - ERROR - 优化分析查询失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:05,330 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:49:05,337 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:05,337 - src.core.query_optimizer - ERROR - 优化分析查询失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:05,339 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:49:05,632 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:49:05,661 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:05.657713',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:05,664 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:05.657713',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:05,671 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:05] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:49:10,174 - src.core.database - ERROR - 数据库操作失败: returned NULL without setting an exception -2026-02-10 23:49:10,176 - src.web.error_handlers - ERROR - 未处理错误 get_health: returned NULL without setting an exception -2026-02-10 23:49:10,178 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:10] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:49:10,649 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:10.648202',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:10,650 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:10.648202',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:10,655 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:10] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:49:15,437 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:15] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:49:15,469 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:15.467371',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:15,471 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:15.467371',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:15,477 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:15] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:49:15,633 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:15] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:49:15,654 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:15] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:49:15,672 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:15.671190',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:15,672 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:15.671190',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:20,653 - src.core.database - ERROR - 数据库操作失败: returned NULL without setting an exception -2026-02-10 23:49:20,654 - src.web.error_handlers - ERROR - 未处理错误 get_health: returned NULL without setting an exception -2026-02-10 23:49:20,658 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:20] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:49:21,941 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:21.940713',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:21,942 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:21.940713',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:21,947 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:21] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:49:25,489 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:25] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:49:25,773 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:25] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:49:25,801 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:25] "GET /api/chat/sessions HTTP/1.1" 200 - -2026-02-10 23:49:25,814 - src.core.database - ERROR - 数据库操作失败: returned NULL without setting an exception -2026-02-10 23:49:25,819 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:25] "GET /api/workorders HTTP/1.1" 500 - -2026-02-10 23:49:25,820 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:25] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:49:25,838 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:25] "GET /api/knowledge/stats HTTP/1.1" 200 - -2026-02-10 23:49:25,838 - src.core.database - ERROR - 数据库操作失败: returned NULL without setting an exception -2026-02-10 23:49:25,839 - src.web.error_handlers - ERROR - 未处理错误 get_health: returned NULL without setting an exception -2026-02-10 23:49:25,843 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:25] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:49:25,862 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:25.860290',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:25,863 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:25.860290',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:25,864 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:25,866 - src.core.query_optimizer - ERROR - 优化分析查询失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:25,867 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:25] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - -2026-02-10 23:49:25,879 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:25] "GET /api/settings HTTP/1.1" 200 - -2026-02-10 23:49:25,886 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:25,886 - src.core.query_optimizer - ERROR - 优化分析查询失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:25,887 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:25] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:49:25,897 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:25,898 - src.core.query_optimizer - ERROR - 优化分析查询失败: (sqlite3.OperationalError) no such column: work_orders.assigned_module -[SQL: 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] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:25,900 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:25] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:49:27,790 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:27] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:49:27,800 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:27.799327',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:27,800 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:27.799327',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:30,641 - src.core.database - ERROR - 数据库操作失败: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:30.640792',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:30,642 - src.web.error_handlers - ERROR - 未处理错误 get_health: (sqlite3.OperationalError) no such column: conversations.ip_address -[SQL: SELECT count(*) AS count_1 -FROM (SELECT conversations.id AS conversations_id, conversations.work_order_id AS conversations_work_order_id, conversations.user_message AS conversations_user_message, conversations.assistant_response AS conversations_assistant_response, conversations.timestamp AS conversations_timestamp, conversations.confidence_score AS conversations_confidence_score, conversations.knowledge_used AS conversations_knowledge_used, conversations.response_time AS conversations_response_time, conversations.ip_address AS conversations_ip_address, conversations.invocation_method AS conversations_invocation_method -FROM conversations -WHERE conversations.timestamp >= ?) AS anon_1] -[parameters: ('2026-02-10 22:49:30.640792',)] -(Background on this error at: https://sqlalche.me/e/20/e3q8) -2026-02-10 23:49:30,642 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:30] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:49:30,693 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:49:30] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - diff --git a/logs/2026-02-10_23-51-10/dashboard.log b/logs/2026-02-10_23-51-10/dashboard.log deleted file mode 100644 index 8e13b30..0000000 --- a/logs/2026-02-10_23-51-10/dashboard.log +++ /dev/null @@ -1,298 +0,0 @@ -2026-02-10 23:51:10,759 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... -2026-02-10 23:51:11,024 - src.config.unified_config - INFO - Initializing unified configuration from environment variables... -2026-02-10 23:51:11,024 - src.config.unified_config - INFO - Database config loaded. -2026-02-10 23:51:11,024 - src.config.unified_config - INFO - LLM config loaded. -2026-02-10 23:51:11,024 - src.config.unified_config - INFO - Server config loaded. -2026-02-10 23:51:11,024 - src.config.unified_config - INFO - Feishu config loaded. -2026-02-10 23:51:11,025 - src.config.unified_config - INFO - AI Accuracy config loaded. -2026-02-10 23:51:11,025 - src.config.unified_config - INFO - Configuration validation passed (warnings may exist). -2026-02-10 23:51:11,038 - src.core.database - INFO - 数据库初始化成功 -2026-02-10 23:51:11,040 - __main__ - INFO - 跳过系统检查,直接启动服务... -2026-02-10 23:51:12,376 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db -2026-02-10 23:51:12,381 - src.integrations.config_manager - INFO - 配置加载成功 -2026-02-10 23:51:12,536 - 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:5001 - * Running on http://192.168.31.45:5001 -2026-02-10 23:51:12,536 - werkzeug - INFO - Press CTRL+C to quit -2026-02-10 23:51:12,541 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:51:12,573 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:51:12,574 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 -2026-02-10 23:51:12,578 - websockets.server - INFO - server listening on 127.0.0.1:8765 -2026-02-10 23:51:12,579 - websockets.server - INFO - server listening on [::1]:8765 -2026-02-10 23:51:12,966 - websockets.server - INFO - connection open -2026-02-10 23:51:12,966 - src.web.websocket_server - INFO - 客户端连接: ('::1', 64226, 0, 0) -2026-02-10 23:51:14,450 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:51:14,451 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:51:14,453 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:51:14,457 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:14] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:51:14,457 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:51:14,458 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:51:14,462 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:51:14,464 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:14] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:51:14,465 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:14] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:51:14,468 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:51:14,469 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:51:14,473 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:51:14,473 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:51:14,474 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:51:14,487 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:51:14,493 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:14] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:51:14,538 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:14] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:15,629 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:15] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:51:15,659 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:15] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:15,692 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:15] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:51:16,549 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET / HTTP/1.1" 200 - -2026-02-10 23:51:16,581 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:51:16,583 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /static/js/core/store.js HTTP/1.1" 304 - -2026-02-10 23:51:16,585 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:51:16,586 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /static/js/components/AlertManager.js HTTP/1.1" 304 - -2026-02-10 23:51:16,587 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /static/js/services/api.js HTTP/1.1" 304 - -2026-02-10 23:51:16,589 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /static/js/components/NotificationManager.js HTTP/1.1" 304 - -2026-02-10 23:51:16,591 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /static/js/app-new.js HTTP/1.1" 304 - -2026-02-10 23:51:16,593 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 304 - -2026-02-10 23:51:16,594 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /static/css/design-system.css HTTP/1.1" 304 - -2026-02-10 23:51:16,660 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:51:16,661 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /api/rules HTTP/1.1" 200 - -2026-02-10 23:51:16,678 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:51:16,684 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:51:16,694 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /api/chat/sessions HTTP/1.1" 200 - -2026-02-10 23:51:16,704 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /api/workorders HTTP/1.1" 200 - -2026-02-10 23:51:16,706 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:51:16,715 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:16,727 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /api/system/info HTTP/1.1" 200 - -2026-02-10 23:51:16,739 - websockets.server - INFO - connection open -2026-02-10 23:51:16,748 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /api/feishu-sync/config HTTP/1.1" 200 - -2026-02-10 23:51:16,751 - src.web.websocket_server - INFO - 客户端连接: ('::1', 64265, 0, 0) -2026-02-10 23:51:16,754 - src.web.blueprints.feishu_sync - ERROR - 获取同步状态失败: 飞书配置不完整,请先配置飞书应用信息 -2026-02-10 23:51:16,756 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /api/feishu-sync/status HTTP/1.1" 500 - -2026-02-10 23:51:16,758 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /api/knowledge/stats HTTP/1.1" 200 - -2026-02-10 23:51:16,766 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:51:16,776 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - -2026-02-10 23:51:16,799 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /api/settings HTTP/1.1" 200 - -2026-02-10 23:51:16,824 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:51:16,831 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:16] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:51:17,552 - src.agent_assistant - INFO - TSP Agent助手初始化完成 -2026-02-10 23:51:17,553 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:17] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:51:19,884 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:19] "GET /api/workorders?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:51:20,641 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:20] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:21,177 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:21] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:51:21,625 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:21] "GET /api/alerts?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:51:21,682 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:21] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:21,710 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:21] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:51:21,711 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:21] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:51:21,728 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:21] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:51:22,136 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:22] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:51:22,137 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:22] "GET /api/agent/tools/stats HTTP/1.1" 200 - -2026-02-10 23:51:24,059 - src.dialogue.realtime_chat - INFO - 创建新会话: session_user_001_1770738684 -2026-02-10 23:51:24,060 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:24] "POST /api/chat/session HTTP/1.1" 200 - -2026-02-10 23:51:25,249 - src.knowledge_base.knowledge_manager - WARNING - 知识库中没有活跃条目 -2026-02-10 23:51:25,635 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:25] "GET /api/chat/sessions HTTP/1.1" 200 - -2026-02-10 23:51:25,637 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:25] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:51:25,649 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:25] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:51:25,688 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:25] "GET /api/workorders HTTP/1.1" 200 - -2026-02-10 23:51:25,699 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:25] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:25,700 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:25] "GET /api/knowledge/stats HTTP/1.1" 200 - -2026-02-10 23:51:25,715 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:25] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - -2026-02-10 23:51:25,731 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:25] "GET /api/settings HTTP/1.1" 200 - -2026-02-10 23:51:25,742 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:25] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:51:25,763 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:25] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:51:26,661 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:26] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:51:26,697 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:26] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:28,485 - src.core.llm_client - INFO - API请求成功 -2026-02-10 23:51:28,490 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:28] "POST /api/chat/message HTTP/1.1" 200 - -2026-02-10 23:51:30,251 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:30] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:51:30,645 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:30] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:31,677 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:31] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:33,186 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:33] "POST /api/conversations/migrate-merge HTTP/1.1" 200 - -2026-02-10 23:51:33,189 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:33] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:51:35,639 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:35] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:51:35,664 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:35] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:36,253 - src.web.websocket_server - INFO - 客户端断开: ('::1', 64265, 0, 0) -2026-02-10 23:51:36,257 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET / HTTP/1.1" 200 - -2026-02-10 23:51:36,280 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:51:36,281 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:51:36,288 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /static/js/core/store.js HTTP/1.1" 304 - -2026-02-10 23:51:36,289 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /static/js/services/api.js HTTP/1.1" 304 - -2026-02-10 23:51:36,291 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /static/js/app-new.js HTTP/1.1" 304 - -2026-02-10 23:51:36,292 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /static/js/components/AlertManager.js HTTP/1.1" 304 - -2026-02-10 23:51:36,293 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /static/js/components/NotificationManager.js HTTP/1.1" 304 - -2026-02-10 23:51:36,294 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 304 - -2026-02-10 23:51:36,297 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /static/css/design-system.css HTTP/1.1" 304 - -2026-02-10 23:51:36,360 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:51:36,362 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/rules HTTP/1.1" 200 - -2026-02-10 23:51:36,364 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:51:36,372 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/chat/sessions HTTP/1.1" 200 - -2026-02-10 23:51:36,383 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:51:36,394 - websockets.server - INFO - connection open -2026-02-10 23:51:36,397 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/system/info HTTP/1.1" 200 - -2026-02-10 23:51:36,402 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:51:36,403 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/workorders HTTP/1.1" 200 - -2026-02-10 23:51:36,404 - src.web.websocket_server - INFO - 客户端连接: ('::1', 64376, 0, 0) -2026-02-10 23:51:36,412 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:36,414 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/knowledge/stats HTTP/1.1" 200 - -2026-02-10 23:51:36,416 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/feishu-sync/config HTTP/1.1" 200 - -2026-02-10 23:51:36,423 - src.web.blueprints.feishu_sync - ERROR - 获取同步状态失败: 飞书配置不完整,请先配置飞书应用信息 -2026-02-10 23:51:36,433 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/feishu-sync/status HTTP/1.1" 500 - -2026-02-10 23:51:36,441 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - -2026-02-10 23:51:36,458 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/settings HTTP/1.1" 200 - -2026-02-10 23:51:36,466 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:51:36,475 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:36] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:51:38,509 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:38] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:51:40,466 - src.web.websocket_server - INFO - 客户端断开: ('::1', 64376, 0, 0) -2026-02-10 23:51:40,469 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET / HTTP/1.1" 200 - -2026-02-10 23:51:40,495 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:51:40,498 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:51:40,503 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /static/js/core/store.js HTTP/1.1" 304 - -2026-02-10 23:51:40,509 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /static/js/components/NotificationManager.js HTTP/1.1" 304 - -2026-02-10 23:51:40,512 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /static/js/services/api.js HTTP/1.1" 304 - -2026-02-10 23:51:40,515 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 304 - -2026-02-10 23:51:40,516 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /static/js/app-new.js HTTP/1.1" 304 - -2026-02-10 23:51:40,519 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /static/js/components/AlertManager.js HTTP/1.1" 304 - -2026-02-10 23:51:40,520 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /static/css/design-system.css HTTP/1.1" 304 - -2026-02-10 23:51:40,641 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:40,675 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:51:40,676 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/rules HTTP/1.1" 200 - -2026-02-10 23:51:40,677 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:51:40,692 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/chat/sessions HTTP/1.1" 200 - -2026-02-10 23:51:40,701 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:51:40,711 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:40,716 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/workorders HTTP/1.1" 200 - -2026-02-10 23:51:40,725 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/system/info HTTP/1.1" 200 - -2026-02-10 23:51:40,725 - websockets.server - INFO - connection open -2026-02-10 23:51:40,730 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:51:40,731 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/knowledge/stats HTTP/1.1" 200 - -2026-02-10 23:51:40,732 - src.web.websocket_server - INFO - 客户端连接: ('::1', 64413, 0, 0) -2026-02-10 23:51:40,739 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/feishu-sync/config HTTP/1.1" 200 - -2026-02-10 23:51:40,743 - src.web.blueprints.feishu_sync - ERROR - 获取同步状态失败: 飞书配置不完整,请先配置飞书应用信息 -2026-02-10 23:51:40,744 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/feishu-sync/status HTTP/1.1" 500 - -2026-02-10 23:51:40,752 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - -2026-02-10 23:51:40,766 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/settings HTTP/1.1" 200 - -2026-02-10 23:51:40,772 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:51:40,780 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:40] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:51:42,303 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:42] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:51:42,303 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:42] "GET /api/agent/tools/stats HTTP/1.1" 200 - -2026-02-10 23:51:44,893 - src.dialogue.realtime_chat - INFO - 创建新会话: session_user_001_1770738704 -2026-02-10 23:51:44,895 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:44] "POST /api/chat/session HTTP/1.1" 200 - -2026-02-10 23:51:45,629 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:45] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:51:45,658 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:45] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:45,692 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:45] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:45,709 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:45] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:51:45,713 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:45] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:51:45,723 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:45] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:51:46,347 - src.knowledge_base.knowledge_manager - WARNING - 知识库中没有活跃条目 -2026-02-10 23:51:49,951 - src.core.llm_client - INFO - API请求成功 -2026-02-10 23:51:49,961 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:49] "POST /api/chat/message HTTP/1.1" 200 - -2026-02-10 23:51:50,642 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:50] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:50,679 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:50] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:51:50,703 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:50] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:51,250 - src.dialogue.realtime_chat - INFO - 结束会话: session_user_001_1770738704 -2026-02-10 23:51:51,251 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:51] "DELETE /api/chat/session/session_user_001_1770738704 HTTP/1.1" 200 - -2026-02-10 23:51:52,872 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:52] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:51:55,386 - src.web.websocket_server - INFO - 客户端断开: ('::1', 64413, 0, 0) -2026-02-10 23:51:55,389 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET / HTTP/1.1" 200 - -2026-02-10 23:51:55,411 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:51:55,412 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:51:55,418 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /static/js/core/store.js HTTP/1.1" 304 - -2026-02-10 23:51:55,422 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /static/js/components/AlertManager.js HTTP/1.1" 304 - -2026-02-10 23:51:55,424 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /static/js/services/api.js HTTP/1.1" 304 - -2026-02-10 23:51:55,425 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /static/js/components/NotificationManager.js HTTP/1.1" 304 - -2026-02-10 23:51:55,426 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /static/js/app-new.js HTTP/1.1" 304 - -2026-02-10 23:51:55,427 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 304 - -2026-02-10 23:51:55,430 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /static/css/design-system.css HTTP/1.1" 304 - -2026-02-10 23:51:55,489 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/rules HTTP/1.1" 200 - -2026-02-10 23:51:55,491 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:51:55,495 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/chat/sessions HTTP/1.1" 200 - -2026-02-10 23:51:55,496 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:51:55,511 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:51:55,518 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/workorders HTTP/1.1" 200 - -2026-02-10 23:51:55,520 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/system/info HTTP/1.1" 200 - -2026-02-10 23:51:55,521 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:51:55,522 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/knowledge/stats HTTP/1.1" 200 - -2026-02-10 23:51:55,530 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/feishu-sync/config HTTP/1.1" 200 - -2026-02-10 23:51:55,530 - websockets.server - INFO - connection open -2026-02-10 23:51:55,539 - src.web.websocket_server - INFO - 客户端连接: ('::1', 64475, 0, 0) -2026-02-10 23:51:55,542 - src.web.blueprints.feishu_sync - ERROR - 获取同步状态失败: 飞书配置不完整,请先配置飞书应用信息 -2026-02-10 23:51:55,544 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/feishu-sync/status HTTP/1.1" 500 - -2026-02-10 23:51:55,545 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:55,555 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - -2026-02-10 23:51:55,574 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/settings HTTP/1.1" 200 - -2026-02-10 23:51:55,583 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:51:55,591 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:51:55,632 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:51:55,638 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/chat/sessions HTTP/1.1" 200 - -2026-02-10 23:51:55,647 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:51:55,653 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/workorders HTTP/1.1" 200 - -2026-02-10 23:51:55,661 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/knowledge/stats HTTP/1.1" 200 - -2026-02-10 23:51:55,675 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:55,676 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - -2026-02-10 23:51:55,690 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/settings HTTP/1.1" 200 - -2026-02-10 23:51:55,699 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:51:55,708 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:51:55,718 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:55] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:51:56,132 - src.web.websocket_server - INFO - 客户端断开: ('::1', 64475, 0, 0) -2026-02-10 23:51:56,135 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET / HTTP/1.1" 200 - -2026-02-10 23:51:56,158 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:51:56,159 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:51:56,168 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/js/core/store.js HTTP/1.1" 304 - -2026-02-10 23:51:56,169 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/js/components/AlertManager.js HTTP/1.1" 304 - -2026-02-10 23:51:56,170 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/js/components/NotificationManager.js HTTP/1.1" 304 - -2026-02-10 23:51:56,172 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/js/services/api.js HTTP/1.1" 304 - -2026-02-10 23:51:56,173 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/js/app-new.js HTTP/1.1" 304 - -2026-02-10 23:51:56,174 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 304 - -2026-02-10 23:51:56,176 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/css/design-system.css HTTP/1.1" 304 - -2026-02-10 23:51:56,236 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/rules HTTP/1.1" 200 - -2026-02-10 23:51:56,239 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:51:56,241 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:51:56,249 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/chat/sessions HTTP/1.1" 200 - -2026-02-10 23:51:56,260 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:51:56,265 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/workorders HTTP/1.1" 200 - -2026-02-10 23:51:56,269 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/system/info HTTP/1.1" 200 - -2026-02-10 23:51:56,276 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:56,277 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:51:56,280 - websockets.server - INFO - connection open -2026-02-10 23:51:56,283 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/feishu-sync/config HTTP/1.1" 200 - -2026-02-10 23:51:56,288 - src.web.blueprints.feishu_sync - ERROR - 获取同步状态失败: 飞书配置不完整,请先配置飞书应用信息 -2026-02-10 23:51:56,291 - src.web.websocket_server - INFO - 客户端连接: ('::1', 64530, 0, 0) -2026-02-10 23:51:56,299 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/feishu-sync/status HTTP/1.1" 500 - -2026-02-10 23:51:56,301 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/knowledge/stats HTTP/1.1" 200 - -2026-02-10 23:51:56,314 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - -2026-02-10 23:51:56,334 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/settings HTTP/1.1" 200 - -2026-02-10 23:51:56,344 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:51:56,355 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:51:56,693 - src.web.websocket_server - INFO - 客户端断开: ('::1', 64530, 0, 0) -2026-02-10 23:51:56,697 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET / HTTP/1.1" 200 - -2026-02-10 23:51:56,719 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:51:56,720 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:51:56,723 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/js/core/store.js HTTP/1.1" 304 - -2026-02-10 23:51:56,727 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/js/components/AlertManager.js HTTP/1.1" 304 - -2026-02-10 23:51:56,727 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/js/components/NotificationManager.js HTTP/1.1" 304 - -2026-02-10 23:51:56,728 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/js/services/api.js HTTP/1.1" 304 - -2026-02-10 23:51:56,731 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/js/app-new.js HTTP/1.1" 304 - -2026-02-10 23:51:56,733 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 304 - -2026-02-10 23:51:56,736 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /static/css/design-system.css HTTP/1.1" 304 - -2026-02-10 23:51:56,828 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/rules HTTP/1.1" 200 - -2026-02-10 23:51:56,829 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:51:56,840 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:51:56,846 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/chat/sessions HTTP/1.1" 200 - -2026-02-10 23:51:56,867 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:51:56,877 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/workorders HTTP/1.1" 200 - -2026-02-10 23:51:56,879 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/system/info HTTP/1.1" 200 - -2026-02-10 23:51:56,881 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:51:56,892 - websockets.server - INFO - connection open -2026-02-10 23:51:56,897 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:51:56,904 - src.web.websocket_server - INFO - 客户端连接: ('::1', 64557, 0, 0) -2026-02-10 23:51:56,906 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/knowledge/stats HTTP/1.1" 200 - -2026-02-10 23:51:56,908 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/feishu-sync/config HTTP/1.1" 200 - -2026-02-10 23:51:56,910 - src.web.blueprints.feishu_sync - ERROR - 获取同步状态失败: 飞书配置不完整,请先配置飞书应用信息 -2026-02-10 23:51:56,918 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/feishu-sync/status HTTP/1.1" 500 - -2026-02-10 23:51:56,935 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - -2026-02-10 23:51:56,956 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/settings HTTP/1.1" 200 - -2026-02-10 23:51:56,968 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:51:56,977 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:51:56] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:52:00,641 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:52:00] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:52:01,926 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:52:01] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:52:05,630 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:52:05] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:52:05,659 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:52:05] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:52:08,742 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:52:08] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:52:08,759 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:52:08] "GET /api/monitor/status HTTP/1.1" 200 - diff --git a/logs/2026-02-10_23-55-42/dashboard.log b/logs/2026-02-10_23-55-42/dashboard.log deleted file mode 100644 index 01791a3..0000000 --- a/logs/2026-02-10_23-55-42/dashboard.log +++ /dev/null @@ -1,237 +0,0 @@ -2026-02-10 23:55:42,753 - __main__ - INFO - 正在启动TSP智能助手综合管理平台... -2026-02-10 23:55:42,982 - src.config.unified_config - INFO - Initializing unified configuration from environment variables... -2026-02-10 23:55:42,982 - src.config.unified_config - INFO - Database config loaded. -2026-02-10 23:55:42,982 - src.config.unified_config - INFO - LLM config loaded. -2026-02-10 23:55:42,982 - src.config.unified_config - INFO - Server config loaded. -2026-02-10 23:55:42,982 - src.config.unified_config - INFO - Feishu config loaded. -2026-02-10 23:55:42,982 - src.config.unified_config - INFO - AI Accuracy config loaded. -2026-02-10 23:55:42,982 - src.config.unified_config - INFO - Configuration validation passed (warnings may exist). -2026-02-10 23:55:42,994 - src.core.database - INFO - 数据库初始化成功 -2026-02-10 23:55:42,996 - __main__ - INFO - 跳过系统检查,直接启动服务... -2026-02-10 23:55:44,509 - src.core.backup_manager - INFO - 备份数据库初始化成功: tsp_assistant.db -2026-02-10 23:55:44,513 - src.integrations.config_manager - INFO - 配置加载成功 -2026-02-10 23:55:44,684 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:55:44,685 - 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:5001 - * Running on http://192.168.31.45:5001 -2026-02-10 23:55:44,695 - werkzeug - INFO - Press CTRL+C to quit -2026-02-10 23:55:44,717 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:55:44,718 - src.web.websocket_server - INFO - 启动WebSocket服务器: ws://localhost:8765 -2026-02-10 23:55:44,722 - websockets.server - INFO - server listening on 127.0.0.1:8765 -2026-02-10 23:55:44,723 - websockets.server - INFO - server listening on [::1]:8765 -2026-02-10 23:55:47,331 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:55:47,332 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:55:47,346 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:55:47,355 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:55:47,358 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:55:47,361 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:47] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:55:47,362 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:55:47,362 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:47] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:55:47,374 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:55:47,374 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:55:47,375 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:55:47,383 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:47] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:55:47,385 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:55:47,388 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:55:47,394 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:55:47,427 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:47] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:55:47,443 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:47] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:55:49,849 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:49] "GET / HTTP/1.1" 200 - -2026-02-10 23:55:49,883 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:49] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:55:49,884 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:49] "GET /static/js/components/NotificationManager.js HTTP/1.1" 304 - -2026-02-10 23:55:49,884 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:49] "GET /static/js/components/AlertManager.js HTTP/1.1" 304 - -2026-02-10 23:55:49,885 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:49] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:55:49,893 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:49] "GET /static/js/services/api.js HTTP/1.1" 304 - -2026-02-10 23:55:49,895 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:49] "GET /static/js/app-new.js HTTP/1.1" 304 - -2026-02-10 23:55:49,897 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:49] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 304 - -2026-02-10 23:55:49,897 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:49] "GET /static/js/core/store.js HTTP/1.1" 304 - -2026-02-10 23:55:49,898 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:49] "GET /static/css/design-system.css HTTP/1.1" 304 - -2026-02-10 23:55:50,144 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:50] "GET /api/rules HTTP/1.1" 200 - -2026-02-10 23:55:50,149 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:50] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:55:50,151 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:55:50,159 - src.knowledge_base.knowledge_manager - WARNING - 知识库尚无活跃条目,向量化器将保持空状态 -2026-02-10 23:55:50,161 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:50] "GET /api/chat/sessions HTTP/1.1" 200 - -2026-02-10 23:55:50,162 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:50] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:55:50,186 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:50] "GET /api/system/info HTTP/1.1" 200 - -2026-02-10 23:55:50,191 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:50] "GET /api/workorders HTTP/1.1" 200 - -2026-02-10 23:55:50,201 - websockets.server - INFO - connection open -2026-02-10 23:55:50,205 - src.web.websocket_server - INFO - 客户端连接: ('::1', 65043, 0, 0) -2026-02-10 23:55:50,220 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:50] "GET /api/feishu-sync/config HTTP/1.1" 200 - -2026-02-10 23:55:50,222 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:50] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:55:50,230 - src.web.blueprints.feishu_sync - ERROR - 获取同步状态失败: 飞书配置不完整,请先配置飞书应用信息 -2026-02-10 23:55:50,235 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:50] "GET /api/feishu-sync/status HTTP/1.1" 500 - -2026-02-10 23:55:50,241 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:50] "GET /api/knowledge/stats HTTP/1.1" 200 - -2026-02-10 23:55:50,262 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:50] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - -2026-02-10 23:55:50,262 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:50] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:55:50,298 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:50] "GET /api/settings HTTP/1.1" 200 - -2026-02-10 23:55:50,320 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:50] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:55:50,342 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:50] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:55:51,214 - src.agent_assistant - INFO - TSP Agent助手初始化完成 -2026-02-10 23:55:51,214 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:51] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:55:54,013 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:54] "GET /api/conversations/3 HTTP/1.1" 200 - -2026-02-10 23:55:55,158 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:55] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:55:55,189 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:55] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:55:55,190 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:55] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:55:55,199 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:55] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:55:57,948 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:57] "GET /api/token-monitor/stats HTTP/1.1" 200 - -2026-02-10 23:55:57,966 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:57] "GET /api/token-monitor/records HTTP/1.1" 200 - -2026-02-10 23:55:57,975 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:55:57] "GET /api/token-monitor/chart HTTP/1.1" 200 - -2026-02-10 23:56:00,145 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:00] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:56:00,162 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:00] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:56:00,232 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:00] "GET /api/workorders?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:56:00,935 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:00] "GET /api/alerts?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:56:02,767 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:02] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:56:05,157 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:05] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:56:08,454 - src.knowledge_base.knowledge_manager - INFO - 正在初始化知识库向量化器... -2026-02-10 23:56:08,457 - src.knowledge_base.knowledge_manager - INFO - 向量化器加载成功: 共处理 1 个知识条目 -2026-02-10 23:56:08,457 - src.knowledge_base.knowledge_manager - INFO - 添加知识库条目成功: 123... -2026-02-10 23:56:08,458 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:08] "POST /api/knowledge HTTP/1.1" 200 - -2026-02-10 23:56:08,471 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:08] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:56:10,143 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:10] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:56:10,170 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:10] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:56:10,377 - src.knowledge_base.knowledge_manager - INFO - 知识库条目验证成功: 1 -2026-02-10 23:56:10,378 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:10] "POST /api/knowledge/verify/1 HTTP/1.1" 200 - -2026-02-10 23:56:10,383 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:10] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:56:12,315 - src.dialogue.realtime_chat - INFO - 创建新会话: session_user_001_1770738972 -2026-02-10 23:56:12,316 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:12] "POST /api/chat/session HTTP/1.1" 200 - -2026-02-10 23:56:14,758 - src.knowledge_base.knowledge_manager - INFO - 搜索查询 '123' 返回 1 个结果 -2026-02-10 23:56:15,156 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:15] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:56:16,283 - src.core.llm_client - INFO - API请求成功 -2026-02-10 23:56:16,289 - src.knowledge_base.knowledge_manager - INFO - 成功更新 1 个知识库条目的使用次数 -2026-02-10 23:56:16,290 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:16] "POST /api/chat/message HTTP/1.1" 200 - -2026-02-10 23:56:20,148 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:20] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:56:20,182 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:20] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:56:20,229 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:20] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:56:20,230 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:20] "GET /api/agent/tools/stats HTTP/1.1" 200 - -2026-02-10 23:56:21,681 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:21] "GET /api/knowledge?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:56:23,895 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:23] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:56:23,895 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:23] "GET /api/agent/tools/stats HTTP/1.1" 200 - -2026-02-10 23:56:25,157 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:25] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:56:25,188 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:25] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:56:26,989 - src.dialogue.realtime_chat - INFO - 结束会话: session_user_001_1770738972 -2026-02-10 23:56:26,990 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:26] "DELETE /api/chat/session/session_user_001_1770738972 HTTP/1.1" 200 - -2026-02-10 23:56:28,275 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:28] "GET /api/token-monitor/stats HTTP/1.1" 200 - -2026-02-10 23:56:28,284 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:28] "GET /api/token-monitor/records HTTP/1.1" 200 - -2026-02-10 23:56:28,293 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:28] "GET /api/token-monitor/chart HTTP/1.1" 200 - -2026-02-10 23:56:28,859 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:28] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:56:30,147 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:30] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:56:30,165 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:30] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:56:31,366 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:31] "POST /api/conversations/migrate-merge HTTP/1.1" 200 - -2026-02-10 23:56:31,369 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:31] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:56:33,616 - src.web.websocket_server - INFO - 客户端断开: ('::1', 65043, 0, 0) -2026-02-10 23:56:33,619 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET / HTTP/1.1" 200 - -2026-02-10 23:56:33,642 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /static/css/design-system.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:56:33,643 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /static/css/style.css?v=1.0.0 HTTP/1.1" 304 - -2026-02-10 23:56:33,648 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /static/js/core/store.js HTTP/1.1" 304 - -2026-02-10 23:56:33,649 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /static/js/services/api.js HTTP/1.1" 304 - -2026-02-10 23:56:33,654 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /static/js/components/NotificationManager.js HTTP/1.1" 304 - -2026-02-10 23:56:33,656 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /static/js/components/AlertManager.js HTTP/1.1" 304 - -2026-02-10 23:56:33,658 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /static/js/app-new.js HTTP/1.1" 304 - -2026-02-10 23:56:33,660 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /static/js/dashboard.js?v=1.0.9 HTTP/1.1" 304 - -2026-02-10 23:56:33,661 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /static/css/design-system.css HTTP/1.1" 304 - -2026-02-10 23:56:33,715 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:56:33,717 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/chat/sessions HTTP/1.1" 200 - -2026-02-10 23:56:33,721 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/rules HTTP/1.1" 200 - -2026-02-10 23:56:33,723 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:56:33,731 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:56:33,746 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/system/info HTTP/1.1" 200 - -2026-02-10 23:56:33,748 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/workorders HTTP/1.1" 200 - -2026-02-10 23:56:33,760 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:56:33,768 - websockets.server - INFO - connection open -2026-02-10 23:56:33,770 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/feishu-sync/config HTTP/1.1" 200 - -2026-02-10 23:56:33,770 - src.web.websocket_server - INFO - 客户端连接: ('::1', 65161, 0, 0) -2026-02-10 23:56:33,774 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/knowledge/stats HTTP/1.1" 200 - -2026-02-10 23:56:33,776 - src.web.blueprints.feishu_sync - ERROR - 获取同步状态失败: 飞书配置不完整,请先配置飞书应用信息 -2026-02-10 23:56:33,780 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/feishu-sync/status HTTP/1.1" 500 - -2026-02-10 23:56:33,787 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:56:33,799 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - -2026-02-10 23:56:33,814 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/settings HTTP/1.1" 200 - -2026-02-10 23:56:33,829 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:56:33,841 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:33] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:56:38,725 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:38] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:56:38,747 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:38] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:56:38,751 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:38] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:56:38,763 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:38] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:56:42,962 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:42] "DELETE /api/conversations/2 HTTP/1.1" 200 - -2026-02-10 23:56:42,970 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:42] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:56:45,054 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:45] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:56:45,071 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:45] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:56:50,703 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:50] "DELETE /api/conversations/5 HTTP/1.1" 200 - -2026-02-10 23:56:50,710 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:50] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:56:51,423 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:51] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:56:56,407 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:56] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:56:56,422 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:56:56] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:57:11,410 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:11] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:57:11,422 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:11] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:57:16,416 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:16] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:57:21,403 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:21] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:57:31,615 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:31] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:57:33,383 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:33] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:57:35,756 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:35] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:57:36,898 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:36] "GET /api/token-monitor/stats HTTP/1.1" 200 - -2026-02-10 23:57:36,907 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:36] "GET /api/token-monitor/records HTTP/1.1" 200 - -2026-02-10 23:57:36,915 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:36] "GET /api/token-monitor/chart HTTP/1.1" 200 - -2026-02-10 23:57:37,876 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:37] "GET /api/ai-monitor/stats HTTP/1.1" 200 - -2026-02-10 23:57:37,888 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:37] "GET /api/ai-monitor/model-comparison HTTP/1.1" 200 - -2026-02-10 23:57:37,893 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:37] "GET /api/ai-monitor/error-distribution HTTP/1.1" 200 - -2026-02-10 23:57:37,896 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:37] "GET /api/ai-monitor/error-log HTTP/1.1" 200 - -2026-02-10 23:57:38,386 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:38] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:57:39,551 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:39] "GET /api/system-optimizer/status HTTP/1.1" 200 - -2026-02-10 23:57:39,556 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:39] "GET /api/system-optimizer/security-settings HTTP/1.1" 200 - -2026-02-10 23:57:39,557 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:39] "GET /api/system-optimizer/traffic-settings HTTP/1.1" 200 - -2026-02-10 23:57:39,558 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:39] "GET /api/system-optimizer/cost-settings HTTP/1.1" 200 - -2026-02-10 23:57:40,097 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:40] "POST /api/system-optimizer/optimize-all HTTP/1.1" 200 - -2026-02-10 23:57:41,103 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:41] "GET /api/system-optimizer/status HTTP/1.1" 200 - -2026-02-10 23:57:41,110 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:41] "GET /api/system-optimizer/cost-settings HTTP/1.1" 200 - -2026-02-10 23:57:41,111 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:41] "GET /api/system-optimizer/security-settings HTTP/1.1" 200 - -2026-02-10 23:57:41,111 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:41] "GET /api/system-optimizer/traffic-settings HTTP/1.1" 200 - -2026-02-10 23:57:41,278 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:41] "POST /api/system-optimizer/clear-cache HTTP/1.1" 200 - -2026-02-10 23:57:41,614 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:41] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:57:42,286 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:42] "GET /api/system-optimizer/status HTTP/1.1" 200 - -2026-02-10 23:57:42,295 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:42] "GET /api/system-optimizer/security-settings HTTP/1.1" 200 - -2026-02-10 23:57:42,296 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:42] "GET /api/system-optimizer/traffic-settings HTTP/1.1" 200 - -2026-02-10 23:57:42,297 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:42] "GET /api/system-optimizer/cost-settings HTTP/1.1" 200 - -2026-02-10 23:57:43,379 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:43] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:57:43,397 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:43] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:57:43,409 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:43] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:57:46,560 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:46] "GET /api/ai-monitor/stats HTTP/1.1" 200 - -2026-02-10 23:57:46,570 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:46] "GET /api/ai-monitor/error-log HTTP/1.1" 200 - -2026-02-10 23:57:46,571 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:46] "GET /api/ai-monitor/model-comparison HTTP/1.1" 200 - -2026-02-10 23:57:46,572 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:46] "GET /api/ai-monitor/error-distribution HTTP/1.1" 200 - -2026-02-10 23:57:48,026 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:48] "GET /api/agent/status HTTP/1.1" 200 - -2026-02-10 23:57:48,027 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:48] "GET /api/agent/tools/stats HTTP/1.1" 200 - -2026-02-10 23:57:48,385 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:48] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:57:50,785 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:50] "GET /api/chat/sessions HTTP/1.1" 200 - -2026-02-10 23:57:50,792 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:50] "GET /api/workorders HTTP/1.1" 200 - -2026-02-10 23:57:50,793 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:50] "GET /api/alerts?per_page=1000 HTTP/1.1" 200 - -2026-02-10 23:57:50,799 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:50] "GET /api/knowledge/stats HTTP/1.1" 200 - -2026-02-10 23:57:50,806 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:50] "GET /api/analytics?days=7&dimension=performance HTTP/1.1" 200 - -2026-02-10 23:57:50,822 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:50] "GET /api/settings HTTP/1.1" 200 - -2026-02-10 23:57:50,830 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:50] "GET /api/analytics HTTP/1.1" 200 - -2026-02-10 23:57:50,840 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:50] "GET /api/analytics?timeRange=30&dimension=workorders HTTP/1.1" 200 - -2026-02-10 23:57:51,613 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:51] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:57:53,389 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:53] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:57:53,422 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:53] "GET /api/conversations?page=1&per_page=10 HTTP/1.1" 200 - -2026-02-10 23:57:55,324 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:55] "GET /api/token-monitor/stats HTTP/1.1" 200 - -2026-02-10 23:57:55,337 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:55] "GET /api/token-monitor/records HTTP/1.1" 200 - -2026-02-10 23:57:55,342 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:55] "GET /api/token-monitor/chart HTTP/1.1" 200 - -2026-02-10 23:57:56,246 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:56] "GET /api/ai-monitor/stats HTTP/1.1" 200 - -2026-02-10 23:57:56,253 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:56] "GET /api/ai-monitor/error-distribution HTTP/1.1" 200 - -2026-02-10 23:57:56,255 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:56] "GET /api/ai-monitor/model-comparison HTTP/1.1" 200 - -2026-02-10 23:57:56,256 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:56] "GET /api/ai-monitor/error-log HTTP/1.1" 200 - -2026-02-10 23:57:58,382 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:57:58] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:58:01,614 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:58:01] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:58:03,388 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:58:03] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:58:08,481 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:58:08] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:58:11,998 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:58:11] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:58:14,480 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:58:14] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:58:23,303 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:58:23] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:58:26,634 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:58:26] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:58:31,960 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:58:31] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:58:48,331 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:58:48] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:58:48,348 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:58:48] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-10 23:59:15,050 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:59:15] "GET /api/alerts HTTP/1.1" 200 - -2026-02-10 23:59:15,062 - werkzeug - INFO - 127.0.0.1 - - [10/Feb/2026 23:59:15] "GET /api/monitor/status HTTP/1.1" 200 - -2026-02-11 00:00:08,355 - werkzeug - INFO - 127.0.0.1 - - [11/Feb/2026 00:00:08] "GET /api/alerts HTTP/1.1" 200 - -2026-02-11 00:00:08,367 - werkzeug - INFO - 127.0.0.1 - - [11/Feb/2026 00:00:08] "GET /api/monitor/status HTTP/1.1" 200 - diff --git a/logs/tsp_assistant.log b/logs/tsp_assistant.log index e69de29..91a5ad2 100644 --- a/logs/tsp_assistant.log +++ b/logs/tsp_assistant.log @@ -0,0 +1,9 @@ +2026-02-11 09:14:37,303 - src.core.database - ERROR - 数据库操作失败: 'search_frequency' is an invalid keyword argument for KnowledgeEntry +2026-02-11 09:23:37,045 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V001 - location +2026-02-11 09:23:37,047 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V001 - status +2026-02-11 09:23:37,049 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V001 - battery +2026-02-11 09:23:37,051 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V001 - engine +2026-02-11 09:23:37,053 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V002 - location +2026-02-11 09:23:37,055 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V002 - status +2026-02-11 09:23:37,057 - src.vehicle.vehicle_data_manager - INFO - 添加车辆数据成功: V002 - fault +2026-02-11 09:23:37,057 - src.vehicle.vehicle_data_manager - INFO - 示例车辆数据添加成功 diff --git a/src/agent/__pycache__/planner.cpython-310.pyc b/src/agent/__pycache__/planner.cpython-310.pyc index 08025a966b45d7c688b597a8108bb90c03783ea3..4053025816e20ef34a0901a4e0daf7018f733450 100644 GIT binary patch delta 81 zcmaD7`XqEisRHAz&1DKaEG$(F3=ESKc|;j2HqTMH!o*lJxlmn#yBa83qy-{sH&0RL eVdAa;u|q&aP8rdz;s2v@XX^ggBP^|cp7N-f&5>(Df$+m^nWW9?p{)s!m zPpStZmd|$CD(rVt4fdmthhJBB=$>M=TBujvw#)p1x{>&KM{AUKx!03j{JqvVKk4@9 zCSPWO<>IN5O`D!lWptoeI$f#N**frj^m`nVOJarupefT+ z!%eMPtkup|7-iTh=0!i#0IQeUW5vl*y-=^0k|x%vyB9rPKoFI{Gg%ZtoY{&}3ZWlC zLBQkKek{@29uN<}TMGeTeSO4vO!#jShW62`!34R?cX&>0RqOz?JU~roGF%lJx*%CW zs@NerY)8iAgapuqfna|zv;O`vbXHKql!gH+3-LgJkZXLsd1PSuAS_|iRjQn| zS<^LHt=fz|$>SQNfZI1Q|wyT|u)yHJIB!Qs~KK3i}gloHVpA1!ghom2s;sW@%zEf75P3% zj!mHXsjRZFb_L#A1VAR*ibs8{Yy7?$=f^`|ke9d`UPoTxo5LMs4^M~pMg`^mL$uGs zox8d*jv(W5)t;S29(H`h{|X)f=R`hDu8oFZHeP^HT#g8kloK@m=#OHD{hwKR9gpv#GwpTp=~w z(>s*vYbtp*X)_8rS-NA{pU&kOX8P|!CY{Z*K3vcokG@_(W6N;VOiwO%B%STE0!w;2 zJyggIS}8$nE0~=T5&Kg8JtIT;LOwsl2H>=$n+aMAG7BCrQ`liIIGu}#In&`>=nkZk zO*g|gWz=5-9_K`0=k5s-HdWr`@}5SDMVpz|?Yd+Mehg|)BvgJ{3*21(qHoqStt zgRd@4OA{*ek$kH1Vr)ad%0yTZ>=2$LLX4nv1OQ5+qWnxJc8uSNb+&#Bjy0IHlGd_J z4fQeqJJvyBIByTXfk)x^VK{bJ8v;%bwiW?N&$c2U(U@QcUUsJ`SYd|W#qioYW4Z;U z5>DgYgCL?+G(eLSqPYy+a2r9xYxoSW=5O;c^l6#}r|E_9a;;u0kJ{`_{!{B6^$eah z$Q$uB!Mk`4ezvBnL?NsUKY#I~qKe4;xmJ* z=+CO$=fRp*&HkrlcowxBSErRyuC<44*VzpGVdg;?CpBENVBI(XuGz=pP_YB3nA_p0 z=BN5G`~mzo9fYlDYU@X{&bkkwCVB}O!V$tz!VuvYJl1l_0Thpsx`!|TznVV0v7_ud z{9|9*n&j@9QcZF#bi-8W&8m3?lTL9D(@gU;rsTs~>=qjXH$Dut_&7_z&+#X4EzuvX zphKAuJWIUwz9IL=2^ONHiqr7iDd^v#Qf>X^wAt=6^m3X&d)wyKhFF|moD&_iB&*1h zL_SIpG=J^(=)xa5r6!=wdH4%q;wy?k;a; zv03&d^7~1w?{Mt~Meq?`I$Z4N8`OmiCxeWU2kCkorII1Y=(F#|B=mQsd!4y(rPf$js9j!K zoSmP$k0#AH!is!oqwx;RLJ#xls*F#OOPZ*lY&H%RogVQOK@Od6k)V+X*-Gk;phAR7 z2nZ2EjV{jCGK#dN=_4#fW0vkj9n(oUF(+olI^v=X>xB%f$Sd`(@RZe|JK6~^JL9Qe z$c~D%41;M*G-ywr;eu=xeNH%QC@buyf@e&Ho?_9S#5+^R7r6PcmWAbFvhWPmriRcW z1`{(Vl=6bo5oh3D@xneiH(9g1L$Xp?q^z$@8|wu5b!d<@L%!X%HF#x-uP%f`lu~mC ROn3FhqAqh{ZrxEm`#nBC?1}&Y diff --git a/src/core/__pycache__/cache_manager.cpython-310.pyc b/src/core/__pycache__/cache_manager.cpython-310.pyc index 17798d465bcaf6c7c519a03b65a5926f792a199d..e849ca69556a51fef45ff94dab973df5ba6efacb 100644 GIT binary patch delta 19 ZcmaEC{@9!=pO=@50SInf+sJiO8UQ_&1}^{r delta 19 ZcmaEC{@9!=pO=@50SNZ+Z{)fu4FEX`1xx?{ diff --git a/src/core/__pycache__/database.cpython-310.pyc b/src/core/__pycache__/database.cpython-310.pyc index 4a4c748da20593468fd279f030ffbe130b85aacd..ed847bea8e604defa3057655f70a517c3b7065ec 100644 GIT binary patch delta 228 zcmeyQ`bl+zD;wjj&2DUIOpMx_*K!mwG8#-);L>2zXJB9`(w_W~S9o(GR|+E|m^t|- z_iIM|$wzrYd3AyEnoLE)AZ7X>Ws|LV!x#-GPvli#G@87LSCh>cBxM4W(qJ^3%*8jE z(Pr~Jz7$3_2aq_#IB9{~Y?eT7mHgy|JR*|?1Vd~LfZSUwN%{FXMW!Hy<{-iXL|B0c tYY@Q$ByKSmmlPG*gSbv0!Wl?R-Y6t8d5hq7##@tfgtQr5CeILx0s!{>Il=${ delta 228 zcmeyQ`bl+zD;s0fW;eDpCPuBzYdMM-8TBVCaA~mVF)%O`X-$5}E4(?8D}|8}%$$6a z`!%E9o zXuWwJUkW3eJ>2BU(gL^HEP&i9`N<1;L?#OehS=x>xwlx7^7C_wOh5|FK!iDnumllS sAc6--++r>+DJrr9aUDT~6Ofp^QAlL+7QyX|QIm6ov>BZz&k%|N0C$EsrvLx| diff --git a/src/core/__pycache__/models.cpython-310.pyc b/src/core/__pycache__/models.cpython-310.pyc index 62ed52fd2e304d968628c256d41f4311739bce6a..c2627432c4874a46e78864be4f7e1ab4729e982c 100644 GIT binary patch delta 680 zcmYk2O=uHA7>4_8l4i5nzckHn6G`JwEz)XBQ4xReB6z42yv@O|>`vl_B%978l_-KB zo=T`NUPS0YQ9(RJ_TWXRo@{R(1O-t~;#E9}DEMs}s58vGFLQaG`L<51pVB=|Q^s%| z|G4fh9e$xd1t~9yX?4c`0^2Yfq3PQ|=4gb*G3V(~M|TXz>`UYr_5}6`C)p2?1%E3P z16cHT!oOgKq}t50Dd%phR-x6ZYrC{%_lV9Y_qxocl`gkxRJ<8qgG=IM^kPU3$>LV@ z01QM)EsM9&`u+$_ATf*NAakS4(vUm_HMo3_S zh22D-;7!9UioViQR zD&O^c%OugJtm?7m9*Y>OU8~`CdX*;aFxTcpv%NsBWi@)-8q{7~oL5JZ0@r_*&uVO|2z3~uW!@rjJ39#wclN%B| t_kX7(2|kFwnaA+Sf0R8B@Kt=vy@nnCNnQbC$xNFWGht4ehN({${{fdD$T$E1 delta 318 zcmXZVze_?<90l;c*T>WM!~5=gSDVWE{U>cKl8cAr! zhzdgxVfvP%7utXk+>DK(tJSfirPW#g_#lo^J)tmCj^nk4^rsa}G$J(>=?0bn+a%KGAI;MO#3`5fC8BW(l>A%#3>`b7`q??PXwKSkB16P_%Edg;qG@uE`U$Vu0jZtpv`4 zK&hfbKw`3?n&{?i?a7RcM<@T+IR_-q>7HdgGI@?(pXgSQqAeieFo=)?5oagc>jyJl PoIF{72IINOItG3K9UCdG diff --git a/src/integrations/__pycache__/ai_suggestion_service.cpython-310.pyc b/src/integrations/__pycache__/ai_suggestion_service.cpython-310.pyc index 29f24dca969bfc42aac52f5c213fb289fcbdd7ba..bdf00eb9a47a72d746b118ebbe38d94f2225984f 100644 GIT binary patch delta 38 wcmV+>0NMY(cfNP9yfy(^v%NNo0tS)*00456vrRdL0Rf$p(>kUBnv;4vL^K=^0RR91 delta 38 wcmV+>0NMY(cfNP9yfy*av%NNo0tS-+00457vrRdL0Rf(q(>kUBo0EDwL_<{%g#Z8m diff --git a/src/integrations/__pycache__/config_manager.cpython-310.pyc b/src/integrations/__pycache__/config_manager.cpython-310.pyc index 05f72c6b626a8b9a2cf33fec6a02fe447556dd33..e30e4dcc67d9d1523537faae70160a71a8987d8b 100644 GIT binary patch delta 2751 zcmZWrU2s#!72e(ZtDh^$KM30mR3s!+ZqbA?F!`ZOsSr~KYCPD4*omW2wb%AFvLx@l zvV!Ld(J?7bQb=a*G)W7jas!=VIu0bzlr-&R`qr1ebf$gS*IEv|^u6f}>Dhbb!9yhN zxw~i2***9CeR^}}#XYf#VT2KUUi#--*5bC0V}Fx-La@xjuzwE3MYHJb{oZ|f-!8qH zqS(c=63YOUeX96WWf@A!m`YT>qIr9i9(=&dDWfTktA%PcZ&4l=Punaq)8Qd8cPgjN zvbU=2!y)hA%6DVz3AijxSRXvtlipT!a3Bd&o#@yf7@qLmj^+REeBk|6@Ac-?fo1|k zg!vH|_CGK}i+`t>k`ihVcuFNaM;a1FE}4~DvP)XZ3Zn7~X~87;vnWql8_zhB1~iSIa!W|>Tb5Dn2VjnF7HXpF|M zsBfSPXbRH=?K-c!xD{GKhtU#l=pY+%!b_+TcD2K3a#thbMp_Zty@Dz3N3AGa7&cQQJBSj&!!1xrb3Bj?rQqc9XQvjbBDrNgy*0?ry}- z#%cd(XI95`lpd%JLV(vV-&ue6*8LAZSo`dE_g}yG2J3 zc_Fp_?uE6_KV^^#XgH0z!OT*nK=Z{)dCHnzl!XlY7Ho3N7L}Sawfh;6(#>+QLap*N zH;&|nMt^)Ve`sVRKXjOPZCZ}zvL|w5Jh6$@96NqAH_YQ5*4UvR9m@%|{tn~C+=-zh zL)k-PL&t~nfoykYD>s}yF+MVuKbjj)t86=1#J(*^N{}6bJT8c+ilTU#jgJHq8AcBb zyD8jafu|?CAmq3~T)d1Rdx%RYs$oW!kqepS5|7N2QIy8REDjoJiIdFJ9G~WR;Rfc~ z926wHyuZgpN%8OjY89PgWv+T~L|jCG45G#TS>KI6DU=J-Cd<^kYg$h;bD&fy7E1QP z%tIxPf5370{@3u~xL(@}>YL-%{^KX>%kQ+`{7n#2h~nB8SKF)aKN7{U+5jkiGwkha zAK$xk{khbU^j1!q6`S|lte6QxoT-(qDa+i5INJp$aJgD=X1F|CvC3SXHl1Rfa@Bmz zvK^btm8x0hA!Zh6$ts&RS1iYzv$1ZxUT;R*-rNuO*%Lqr^w=owCNhpn2^_|ceNE2E5|Ihs_^MweL$ahoC+>zG zJOI*Bl8|)V4bn+W&LyNMXsNPJ!bHU}oPeR9BM%lIe7^`&y z4btr17ay!&y1u^pVf*e~I3@4JA}_12!Zv%#t3*;+_JWxE5fZ8pY==P^`rsqPxZ&Ga z>s-avV#yM5P<+^8V<6)FE3ykO-F^@uc+#)eo#M!Cf`~%?N*Wv-Ov^!KKin5vV9=BB z;A-$X!yqN9nLQ=QDM5-r(o$f~ls9SY!@u%8V*;q6B%TGXCiI$A>#%iT z9|pGWAEyIXVaMUGhD4*#&XjBT5J4r);_SD}$~52$t9y64 Ye%L2`CSzUEp{;M1& delta 804 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 diff --git a/src/utils/__pycache__/helpers.cpython-310.pyc b/src/utils/__pycache__/helpers.cpython-310.pyc index c81834761d1b7c92f63976b23c08578061598edb..cefe89b04368888b2b6124ecd33dab705829aac1 100644 GIT binary patch delta 241 zcmXYrOAY}+6h$kMU}!15DGM;DF+ymcmN24If(VhGbPQxr?2TjoemGzwZ%E=I`kUXjOhq@6vGUQEbeF%s?@ zWH@#y7bo8Q{RTb2-|n(=|C^u^obhR&cGVd9=^1jfMcT!b{F#zV>K^hdo-8|q%J!{# F;|s}YRWbko delta 241 zcmexp@X=sHFMIvdrF%=685kIz&RGGW_jQ!A0r@Z5S3TXn5zKtHY2mXuonYA~duBoC z9Svam`CJJ7V*M6~_^w@G`o*$FF#T-CdWgC?-C+7@-)=DdWbXn9Keb~6L}2H9uw74f zG(6d{3L>i{>x^lPd01>^IzRDXKApij1 CVO25! diff --git a/src/utils/__pycache__/semantic_similarity.cpython-310.pyc b/src/utils/__pycache__/semantic_similarity.cpython-310.pyc deleted file mode 100644 index 0acf19f4e8472b6b2db7fd97213b486507cd2e85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11087 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 TsP!d)O`P5SaoJg4{lI?#=sz)? delta 2653 zcmah~No*TO7VTnFRFkGCQWPmlT(w!I6jQrpS+ccRmMz=zB0IJ#3&W_&66J2usHU{+8X9~W{GJ*4OYv{%yMY8*yW96%g=ma0j~TQ=G^BXF*<^)jSaHK_ zwjwm5xYvwYEwsgo(U{drTb1TB+pIW^E56T6SV@{x+;66=G)*hsU}mg#+OBxO?65j% zr{axfm(@)x-RdD|?zehqkK!TofR&|L#hc7ttB>|69yXt{4$^~)H=8-DpY|&rF$b(c zI;eQm9I}S#u;MM|h&4(_6_1&RtT8&Kc&mBX8mHq#|=p<6s2JGm9#^Nk- zTVn~XuOHje=@dVDZ<0@$Gh6V?l602O@|pEHmYUR9TCvQe#%Jyw z=V|4Eti8rMYph$b3J&+w#B7cA)!4xr>#woF8XK;$(Ha}8vGE-?&maXzYMym$6V}PP zZfjcv7ILDZM978hXFVv=1*IGSCChr1a#AUf5POOpRLUu(zhmCv(5Hnd9E z@EsQ$VWUbvt@J}ReT*Ge`WZFD_;!V`BWyxRXO-z>&GaZcrt~FcIt9U|*^E-oDa%TN<4M&x?F+eR=(o!pl+h_cU9)qeC}c z%j(XamjBk@BOdv-d+GBZ+|QG~W;i%pql9VH1?RW7**AU~*|81r0L;f64hAHYQn;v;_IA+CqF zqK_q&s~Rt5-SP{gYe4jZgTVauKo%c600!Z<-2jH>CrXiby@T>v!#DePUC`R8D{e6U z%2l-Y0QlWL;wEBHE(N;fPyV2MEzmLWArbX3wkMF9MEQFPCKqM<1sH$e0x)zjBJT&f z$dLSB;7E4(_x#)|YlSk$(NTm$@m^I z?_*1A*t}_$3XHQnl#Z9c#l{SSx|opL!SB6J{ie-DzR2XCLl?W9Ixa*>{OA8f)0VPc zVSuS)K>zaVc4@=Wfr+qu5bEpi!V%pri)@|aW`%M=90f%jLzu=f!uOOaE6+B?NJU<6 z>L#b*4MW++>e}iQ}lxBX|+Q2q)yH;m9IJ6ej_)b>bBAX@nU7$0NAC zX_mzzDvuQ)Wb+M{S4Fd`oA9m-Hn)>=a;W*s_9=9)Un|<>l6Y0jqJK3V&!f=ZNQ&-; z)~iv^qv4aH1+iAu4prye21^@{ol6f8m%4mE2izHAyy1E%E`0uGgb*?qbSUI5;!D0L4UoMFo`I2DJy4^&LJvF+Bb1oxXLb!~ugz&2s_%(r>SzH15NM3E} zAy?!ZEq@O@R*%J4W??ssUhVjAXWN+!&(uHQwgUiI0v`#GoyA|3pT>SjVh2JtKrXJO!5P2P!T$g}d}c&G1*Q=iYX(n>xrzl$#i zsPDR2uy5p7O2QU?xsXV=Hej@nEmm?M@*EzW7YlF%1G18c>}$kGL4=TeKanC$@~cFW zgylQQm{EPnh-Ue2D(1(gtDf5;A~VVTBr4CPVltofkrriOl{Sj7sf!z{A_neh(keer zc9AyuV>0H!&>{{rNfNR#l_E)*OJzt3=I9`4Wm4vFxHB+SXS5wt_QKAFj{}yY5A%CY z-cKdt9crk+SoNbJ4&zV`VO&Pj=?cDs#R$S7gfWB(gwqJ;5H29#rW3eX1VzBQI=a~0 za6C|&mmuZ~C>Ic3MA$v#imA7-F=>_9rpb>Hu&_S>aQlhjG2nv|gexPzP7gE~hHenI U?t_i!tCPV@RAw@6*_)aD1+G|iVgLXD