ソースを参照

工程公司RAG

yujie.zhang@takai-china.com 1 ヶ月 前
コミット
e73348d54f
100 ファイル変更10220 行追加0 行削除
  1. BIN
      __pycache__/config.cpython-310.pyc
  2. BIN
      __pycache__/config.cpython-311.pyc
  3. BIN
      __pycache__/data_cleanup_script.cpython-311.pyc
  4. BIN
      __pycache__/data_cleanup_script.cpython-312.pyc
  5. BIN
      __pycache__/rag_evaluation.cpython-311.pyc
  6. BIN
      __pycache__/response_info.cpython-310.pyc
  7. BIN
      __pycache__/response_info.cpython-311.pyc
  8. 103 0
      config.py
  9. 436 0
      data_cleanup_script.py
  10. 0 0
      network_search/search.py
  11. 0 0
      rag/__init__.py
  12. BIN
      rag/__pycache__/__init__.cpython-310.pyc
  13. BIN
      rag/__pycache__/__init__.cpython-311.pyc
  14. BIN
      rag/__pycache__/chat_message.cpython-310.pyc
  15. BIN
      rag/__pycache__/chat_message.cpython-311.pyc
  16. BIN
      rag/__pycache__/db.cpython-310.pyc
  17. BIN
      rag/__pycache__/db.cpython-311.pyc
  18. BIN
      rag/__pycache__/documents_process.cpython-310.pyc
  19. BIN
      rag/__pycache__/documents_process.cpython-311.pyc
  20. BIN
      rag/__pycache__/file_process.cpython-310.pyc
  21. BIN
      rag/__pycache__/file_process.cpython-311.pyc
  22. BIN
      rag/__pycache__/llm.cpython-310.pyc
  23. BIN
      rag/__pycache__/llm.cpython-311.pyc
  24. BIN
      rag/__pycache__/load_model.cpython-310.pyc
  25. BIN
      rag/__pycache__/load_model.cpython-311.pyc
  26. BIN
      rag/__pycache__/progress_reporter.cpython-311.pyc
  27. BIN
      rag/__pycache__/task_registry.cpython-311.pyc
  28. 385 0
      rag/chat_message.py
  29. 753 0
      rag/db.py
  30. BIN
      rag/document_load/__pycache__/Document_format_conversion.cpython-311.pyc
  31. BIN
      rag/document_load/__pycache__/image_load.cpython-310.pyc
  32. BIN
      rag/document_load/__pycache__/image_load.cpython-311.pyc
  33. BIN
      rag/document_load/__pycache__/office_load.cpython-310.pyc
  34. BIN
      rag/document_load/__pycache__/office_load.cpython-311.pyc
  35. BIN
      rag/document_load/__pycache__/pdf_load.cpython-310.pyc
  36. BIN
      rag/document_load/__pycache__/pdf_load.cpython-311.pyc
  37. BIN
      rag/document_load/__pycache__/txt_load.cpython-310.pyc
  38. BIN
      rag/document_load/__pycache__/txt_load.cpython-311.pyc
  39. BIN
      rag/document_load/__pycache__/word_load.cpython-310.pyc
  40. 175 0
      rag/document_load/document_format_conversion.py
  41. 26 0
      rag/document_load/image_load.py
  42. 26 0
      rag/document_load/office_load.py
  43. 439 0
      rag/document_load/pdf_load.py
  44. 9 0
      rag/document_load/txt_load.py
  45. 787 0
      rag/documents_process.py
  46. 184 0
      rag/file_process.py
  47. 215 0
      rag/llm.py
  48. 36 0
      rag/load_model.py
  49. 241 0
      rag/progress_reporter.py
  50. 137 0
      rag/task_registry.py
  51. 0 0
      rag/vector_db/__init__.py
  52. BIN
      rag/vector_db/__pycache__/__init__.cpython-310.pyc
  53. BIN
      rag/vector_db/__pycache__/__init__.cpython-311.pyc
  54. BIN
      rag/vector_db/__pycache__/milvus_vector.cpython-310.pyc
  55. BIN
      rag/vector_db/__pycache__/milvus_vector.cpython-311.pyc
  56. 536 0
      rag/vector_db/milvus_vector.py
  57. 193 0
      rag_server.py
  58. 104 0
      requirements.txt
  59. 85 0
      response_info.py
  60. 0 0
      utils/__init__.py
  61. BIN
      utils/__pycache__/__init__.cpython-310.pyc
  62. BIN
      utils/__pycache__/__init__.cpython-311.pyc
  63. BIN
      utils/__pycache__/get_logger.cpython-310.pyc
  64. BIN
      utils/__pycache__/get_logger.cpython-311.pyc
  65. BIN
      utils/__pycache__/upload_file_to_oss.cpython-310.pyc
  66. BIN
      utils/__pycache__/upload_file_to_oss.cpython-311.pyc
  67. 42 0
      utils/get_logger.py
  68. BIN
      utils/simsun.ttc
  69. 75 0
      utils/upload_file_to_oss.py
  70. 182 0
      val/evaluation_results/detailed_results_20250908_144859.json
  71. 182 0
      val/evaluation_results/detailed_results_20250908_151025.json
  72. 122 0
      val/evaluation_results/detailed_results_20250908_151739.json
  73. 122 0
      val/evaluation_results/detailed_results_20250908_152516.json
  74. 122 0
      val/evaluation_results/detailed_results_20250908_153050.json
  75. 75 0
      val/evaluation_results/metrics_20250908_144859.json
  76. 76 0
      val/evaluation_results/metrics_20250908_151025.json
  77. 71 0
      val/evaluation_results/metrics_20250908_151739.json
  78. 70 0
      val/evaluation_results/metrics_20250908_152516.json
  79. 70 0
      val/evaluation_results/metrics_20250908_153050.json
  80. 16 0
      val/evaluation_results/results_20250908_144859.csv
  81. 16 0
      val/evaluation_results/results_20250908_151025.csv
  82. 11 0
      val/evaluation_results/results_20250908_151739.csv
  83. 11 0
      val/evaluation_results/results_20250908_152516.csv
  84. 11 0
      val/evaluation_results/results_20250908_153050.csv
  85. 29 0
      val/logs/rag_evaluation_20250909_101538.txt
  86. 34 0
      val/logs/rag_evaluation_20250909_102248.txt
  87. 34 0
      val/logs/rag_evaluation_20250909_104043.txt
  88. 34 0
      val/logs/rag_evaluation_20250909_104220.txt
  89. 34 0
      val/logs/rag_evaluation_20250909_104414.txt
  90. 0 0
      val/logs/ragas_eval_20250908_144755.log
  91. 0 0
      val/logs/ragas_eval_20250908_150943.log
  92. 0 0
      val/logs/ragas_eval_20250908_151706.log
  93. 0 0
      val/logs/ragas_eval_20250908_152447.log
  94. 0 0
      val/logs/ragas_eval_20250908_153005.log
  95. 2850 0
      val/rag_evaluation.log
  96. 18 0
      val/req.txt
  97. 602 0
      val/test.py
  98. 212 0
      val/test_new.py
  99. 215 0
      val/test_new_new.py
  100. 14 0
      val/val_data.json

BIN
__pycache__/config.cpython-310.pyc


BIN
__pycache__/config.cpython-311.pyc


BIN
__pycache__/data_cleanup_script.cpython-311.pyc


BIN
__pycache__/data_cleanup_script.cpython-312.pyc


BIN
__pycache__/rag_evaluation.cpython-311.pyc


BIN
__pycache__/response_info.cpython-310.pyc


BIN
__pycache__/response_info.cpython-311.pyc


+ 103 - 0
config.py

@@ -0,0 +1,103 @@
+# # 测试环境
+
+# # 本地milvus
+# milvus_uri = "http://127.0.0.1:19530"
+
+# # 测试环境 mysql 数据库配置
+# mysql_config = {
+#         # # "host": "10.168.100.144",
+#         # # "port": 3306,
+#         # "host": "xia0miduo.gicp.net",
+#         # "port": 3336,
+#         # "user": "root",
+#         # "password": "T@kai2025",
+#         # "database": "deepseek_local",
+#         # # "database": "rag_master",
+#         "host": "10.168.100.10",
+#         "port": 3306,
+#         "user": "takai",
+#         "password": "T@kai2025",
+#         "database": "deepseek_local"
+
+# }
+
+# # 测试minio配置
+# minio_config = {
+#     "minio_endpoint" : 'xia0miduo.gicp.net:9000',
+#     "minio_access_key" : 'minioadmin',
+#     "minio_secret_key" : 'minioadmin',
+#     "minio_bucket" : 'papbtest',
+#     "minio_url": "http://xia0miduo.gicp.net:9000",
+#     "flag": False
+# }
+
+# # 测试环境vllm 链接
+# # vllm_url = "http://xia0miduo.gicp.net:8102/v1"
+# model_name_vllm_url_dict = {
+#     "deepseek-chat":"https://api.deepseek.com",
+#     "DeepSeek-R1-Distill-Qwen-14B": "http://xia0miduo.gicp.net:8102/v1",
+#     "deepcoder-14b-sft": "http://xia0miduo.gicp.net:8102/v1",
+#     "Qwen3-Coder-30B-loft": "http://xia0miduo.gicp.net:8102/v1"
+# }
+
+# # 测试环境redis 配置
+# redis_config_dict = {
+#     "host": "localhost",
+#     "port": 6379,
+#     "db": 1
+# } 
+
+# # 进度反馈Java中转服务器配置
+# progress_callback_config = {
+#     "default_url": "http://10.10.10.2:8091/resource/sse/send",
+#     "timeout": 5,
+#     "estimate_seconds": 120
+# } 
+
+
+线上环境
+
+# 线上环境 mysql 数据库配置
+mysql_config = {
+        "host": "127.0.0.1",
+        "port": 3306,
+        "user": "root",
+        "password": "Lx304307910",
+        "database": "chat_deepseek",
+}
+
+# 线上milvus配置
+milvus_uri = "http://127.0.0.1:19530"
+
+# 线上minio配置
+minio_config = {
+        "minio_endpoint" : '10.1.28.14:9000',
+        "minio_access_key" : 'uavadmin',
+        "minio_secret_key" : 'YEDG9DZ8oby97UGMyxW&',
+        "minio_bucket" : 'deepseek-doc',
+        "minio_url": "https://10.1.28.14:9000",
+        "flag": True
+}
+
+# 线上vllm 链接
+# vllm_url = "http://10.1.27.6:11817/v1"
+model_name_vllm_url_dict = {
+    "Qwen3-30B": "http://10.1.27.6:11817/v1",
+    "Qwen2-72B": "http://10.1.27.6:11818/v1",
+    "Qwen3-30B-vl-chat": "http://10.1.27.6:11817/v1",
+}
+
+# 线上环境redis 配置
+redis_config_dict = {
+    "host": "localhost",
+    "port": 6379,
+    "db": 1
+} 
+
+
+# 线上进度反馈Java中转服务器配置
+progress_callback_config = {
+    "default_url": "http://10.10.10.2:8091/resource/sse/send",
+    "timeout": 5,
+    "estimate_seconds": 120
+} 

+ 436 - 0
data_cleanup_script.py

@@ -0,0 +1,436 @@
+import sys
+import os
+import logging
+from datetime import datetime
+from typing import List, Dict, Set, Tuple, Optional
+import mysql.connector
+from mysql.connector import Error
+from pymilvus import MilvusClient
+
+# 添加项目路径到sys.path
+sys.path.append(os.path.dirname(os.path.abspath(__file__)))
+
+from config import milvus_uri, mysql_config
+from utils.get_logger import setup_logger
+
+# 设置日志
+logger = setup_logger(__name__)
+
+class VectorDataCleaner:
+    """向量数据清理工具类"""
+    
+    def __init__(self):
+        """初始化数据清理工具"""
+        self.mysql_config = mysql_config
+        self.milvus_uri = milvus_uri
+        self.milvus_client = None
+        self.mysql_conn = None
+        self._connect_databases()
+        
+    def _connect_databases(self):
+        """连接数据库"""
+        # 连接MySQL
+        try:
+            self.mysql_conn = mysql.connector.connect(**self.mysql_config)
+            logger.info("MySQL数据库连接成功")
+        except Error as e:
+            logger.error(f"MySQL数据库连接失败: {e}")
+            raise
+        
+        # 连接Milvus
+        try:
+            self.milvus_client = MilvusClient(uri=self.milvus_uri)
+            logger.info("Milvus向量数据库连接成功")
+        except Exception as e:
+            logger.error(f"Milvus向量数据库连接失败: {e}")
+            raise
+    
+    def close_connections(self):
+        """关闭数据库连接"""
+        if self.mysql_conn:
+            self.mysql_conn.close()
+            logger.info("MySQL连接已关闭")
+        # Milvus客户端会自动管理连接
+    
+    def get_mysql_slices(self, knowledge_id: str, document_id: str = None) -> Set[str]:
+        """
+        从MySQL获取指定知识库/文件的所有切片ID
+        
+        Args:
+            knowledge_id: 知识库ID
+            document_id: 文档ID,可选。如果不提供则获取整个知识库的切片
+            
+        Returns:
+            Set[str]: 切片ID集合
+        """
+        if not self.mysql_conn:
+            logger.error("MySQL连接未建立")
+            return set()
+        
+        cursor = None
+        try:
+            cursor = self.mysql_conn.cursor()
+            
+            if document_id:
+                # 查询指定文档的切片
+                query = """
+                SELECT slice_id FROM slice_info 
+                WHERE knowledge_id = %s AND document_id = %s
+                """
+                cursor.execute(query, (knowledge_id, document_id))
+                logger.info(f"查询知识库 {knowledge_id} 中文档 {document_id} 的切片")
+            else:
+                # 查询整个知识库的切片
+                query = """
+                SELECT slice_id FROM slice_info 
+                WHERE knowledge_id = %s
+                """
+                cursor.execute(query, (knowledge_id,))
+                logger.info(f"查询知识库 {knowledge_id} 的所有切片")
+            
+            results = cursor.fetchall()
+            slice_ids = {row[0] for row in results}
+            
+            logger.info(f"MySQL中找到 {len(slice_ids)} 个切片")
+            return slice_ids
+            
+        except Error as e:
+            logger.error(f"查询MySQL切片数据失败: {e}")
+            return set()
+        finally:
+            if cursor:
+                cursor.close()
+    
+    def get_milvus_slices(self, knowledge_id: str, document_id: str = None) -> Set[str]:
+        """
+        从Milvus获取指定知识库/文件的所有切片ID
+        
+        Args:
+            knowledge_id: 知识库ID(也是collection名称)
+            document_id: 文档ID,可选。如果不提供则获取整个知识库的切片
+            
+        Returns:
+            Set[str]: 切片ID集合
+        """
+        if not self.milvus_client:
+            logger.error("Milvus连接未建立")
+            return set()
+        
+        try:
+            # 检查collection是否存在
+            if not self.milvus_client.has_collection(collection_name=knowledge_id):
+                logger.warning(f"Milvus中不存在知识库 {knowledge_id} 对应的collection")
+                return set()
+            
+            # 构建查询条件
+            if document_id:
+                filter_expr = f"doc_id == '{document_id}'"
+                logger.info(f"查询Milvus知识库 {knowledge_id} 中文档 {document_id} 的切片")
+            else:
+                filter_expr = None
+                logger.info(f"查询Milvus知识库 {knowledge_id} 的所有切片")
+            
+            # 查询所有切片ID(分批查询以避免限制)
+            all_results = []
+            offset = 0
+            limit = 10000  # 每次查询10000条
+            
+            while True:
+                results = self.milvus_client.query(
+                    collection_name=knowledge_id,
+                    filter=filter_expr,
+                    output_fields=["chunk_id"],
+                    limit=limit,
+                    offset=offset
+                )
+                
+                if not results:
+                    break
+                    
+                all_results.extend(results)
+                
+                # 如果返回的结果少于limit,说明已经查询完毕
+                if len(results) < limit:
+                    break
+                    
+                offset += limit
+            
+            results = all_results
+            
+            slice_ids = {result["chunk_id"] for result in results if "chunk_id" in result}
+            
+            logger.info(f"Milvus中找到 {len(slice_ids)} 个切片")
+            return slice_ids
+            
+        except Exception as e:
+            logger.error(f"查询Milvus切片数据失败: {e}")
+            return set()
+    
+    def get_milvus_slice_details(self, knowledge_id: str, chunk_ids: List[str]) -> List[Dict]:
+        """
+        获取Milvus中指定切片的详细信息
+        
+        Args:
+            knowledge_id: 知识库ID
+            chunk_ids: 切片ID列表
+            
+        Returns:
+            List[Dict]: 切片详细信息列表
+        """
+        if not self.milvus_client or not chunk_ids:
+            return []
+        
+        try:
+            # 构建查询条件
+            chunk_ids_str = "', '".join(chunk_ids)
+            filter_expr = f"chunk_id in ['{chunk_ids_str}']"
+            
+            results = self.milvus_client.query(
+                collection_name=knowledge_id,
+                filter=filter_expr,
+                output_fields=["pk", "chunk_id", "doc_id", "content"],
+                limit=len(chunk_ids)
+            )
+            
+            return results
+            
+        except Exception as e:
+            logger.error(f"获取Milvus切片详细信息失败: {e}")
+            return []
+    
+    def delete_milvus_slices(self, knowledge_id: str, chunk_ids: List[str]) -> Tuple[bool, str]:
+        """
+        删除Milvus中的指定切片
+        
+        Args:
+            knowledge_id: 知识库ID
+            chunk_ids: 要删除的切片ID列表
+            
+        Returns:
+            Tuple[bool, str]: (是否成功, 消息)
+        """
+        if not self.milvus_client or not chunk_ids:
+            return True, "没有需要删除的切片"
+        
+        try:
+            # 分批删除,避免一次删除太多数据
+            batch_size = 100
+            total_deleted = 0
+            
+            for i in range(0, len(chunk_ids), batch_size):
+                batch_chunk_ids = chunk_ids[i:i + batch_size]
+                
+                # 先查询获取主键
+                chunk_ids_str = "', '".join(batch_chunk_ids)
+                filter_expr = f"chunk_id in ['{chunk_ids_str}']"
+                
+                results = self.milvus_client.query(
+                    collection_name=knowledge_id,
+                    filter=filter_expr,
+                    output_fields=["pk"],
+                    limit=len(batch_chunk_ids)
+                )
+                
+                if not results:
+                    continue
+                
+                # 提取主键
+                primary_keys = [result["pk"] for result in results]
+                
+                # 执行删除
+                delete_result = self.milvus_client.delete(
+                    collection_name=knowledge_id,
+                    ids=primary_keys
+                )
+                
+                total_deleted += len(primary_keys)
+                logger.info(f"删除了 {len(primary_keys)} 个切片,累计删除 {total_deleted} 个")
+            
+            # 执行flush和compact操作
+            self.milvus_client.flush(collection_name=knowledge_id)
+            logger.info(f"成功删除 {total_deleted} 个脏数据切片")
+            
+            return True, f"成功删除 {total_deleted} 个脏数据切片"
+            
+        except Exception as e:
+            logger.error(f"删除Milvus切片失败: {e}")
+            return False, f"删除失败: {str(e)}"
+    
+    def cleanup_data(self, knowledge_id: str, document_id: str = None, dry_run: bool = True) -> Dict:
+        """
+        执行数据清理
+        
+        Args:
+            knowledge_id: 知识库ID
+            document_id: 文档ID,可选
+            dry_run: 是否为试运行模式(不实际删除数据)
+            
+        Returns:
+            Dict: 清理结果统计
+        """
+        logger.info(f"开始数据清理 - 知识库: {knowledge_id}, 文档: {document_id or '全部'}, 试运行: {dry_run}")
+        
+        # 检查数据库连接
+        if not self.mysql_conn:
+            return {"error": "MySQL连接失败"}
+        
+        if not self.milvus_client:
+            return {"error": "Milvus连接失败"}
+        
+        try:
+            # 获取MySQL中的切片ID
+            mysql_slice_ids = self.get_mysql_slices(knowledge_id, document_id)
+            
+            # 获取Milvus中的切片ID
+            milvus_slice_ids = self.get_milvus_slices(knowledge_id, document_id)
+            
+            # 找出需要删除的切片(在Milvus中但不在MySQL中)
+            dirty_slice_ids = milvus_slice_ids - mysql_slice_ids
+            
+            # 找出缺失的切片(在MySQL中但不在Milvus中)
+            missing_slice_ids = mysql_slice_ids - milvus_slice_ids
+            
+            result = {
+                "knowledge_id": knowledge_id,
+                "document_id": document_id,
+                "mysql_slice_count": len(mysql_slice_ids),
+                "milvus_slice_count": len(milvus_slice_ids),
+                "dirty_slice_count": len(dirty_slice_ids),
+                "missing_slice_count": len(missing_slice_ids),
+                "dirty_slice_ids": list(dirty_slice_ids),
+                "missing_slice_ids": list(missing_slice_ids),
+                "dry_run": dry_run
+            }
+            
+            logger.info(f"数据统计 - MySQL切片: {len(mysql_slice_ids)}, "
+                       f"Milvus切片: {len(milvus_slice_ids)}, "
+                       f"脏数据: {len(dirty_slice_ids)}, "
+                       f"缺失数据: {len(missing_slice_ids)}")
+            
+            if dirty_slice_ids:
+                if dry_run:
+                    logger.info(f"试运行模式 - 发现 {len(dirty_slice_ids)} 个脏数据切片,但不会实际删除")
+                    # 获取脏数据的详细信息用于日志记录
+                    dirty_details = self.get_milvus_slice_details(knowledge_id, list(dirty_slice_ids)[:10])  # 只获取前10个的详情
+                    result["dirty_slice_samples"] = dirty_details
+                else:
+                    logger.info(f"开始删除 {len(dirty_slice_ids)} 个脏数据切片")
+                    success, message = self.delete_milvus_slices(knowledge_id, list(dirty_slice_ids))
+                    result["delete_success"] = success
+                    result["delete_message"] = message
+            else:
+                logger.info("没有发现脏数据,数据一致性良好")
+                result["delete_success"] = True
+                result["delete_message"] = "没有脏数据需要删除"
+            
+            if missing_slice_ids:
+                logger.warning(f"发现 {len(missing_slice_ids)} 个切片在MySQL中存在但在Milvus中缺失")
+            
+            return result
+            
+        except Exception as e:
+            logger.error(f"数据清理过程中发生错误: {e}")
+            return {"error": str(e)}
+        finally:
+            # 注意:不在这里关闭连接,因为可能还需要使用
+            pass
+    
+    def generate_report(self, result: Dict) -> str:
+        """
+        生成清理报告
+        
+        Args:
+            result: 清理结果
+            
+        Returns:
+            str: 格式化的报告
+        """
+        if "error" in result:
+            return f"清理失败: {result['error']}"
+        
+        report = f"""
+数据清理报告
+{'='*50}
+知识库ID: {result['knowledge_id']}
+文档ID: {result.get('document_id', '全部文档')}
+执行时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
+试运行模式: {'是' if result['dry_run'] else '否'}
+
+数据统计:
+- MySQL中的切片数量: {result['mysql_slice_count']}
+- Milvus中的切片数量: {result['milvus_slice_count']}
+- 脏数据切片数量: {result['dirty_slice_count']}
+- 缺失切片数量: {result['missing_slice_count']}
+
+清理结果:
+- 删除状态: {'成功' if result.get('delete_success', False) else '失败'}
+- 删除消息: {result.get('delete_message', 'N/A')}
+
+建议:
+"""
+        
+        if result['dirty_slice_count'] > 0:
+            report += f"- 发现 {result['dirty_slice_count']} 个脏数据切片"
+            if result['dry_run']:
+                report += ",建议在非试运行模式下执行清理\n"
+            else:
+                report += ",已执行清理\n"
+        else:
+            report += "- 数据一致性良好,无需清理\n"
+        
+        if result['missing_slice_count'] > 0:
+            report += f"- 发现 {result['missing_slice_count']} 个切片在Milvus中缺失,建议检查数据同步\n"
+        
+        return report
+
+
+def main():
+    """主函数"""
+    import argparse
+    
+    parser = argparse.ArgumentParser(description='数据清理脚本 - 清理向量库中的脏数据')
+    parser.add_argument('knowledge_id', help='知识库ID')
+    parser.add_argument('--document_id', help='文档ID(可选,不提供则清理整个知识库)')
+    parser.add_argument('--dry-run', action='store_true', default=True, 
+                       help='试运行模式(默认开启,不实际删除数据)')
+    parser.add_argument('--execute', action='store_true', 
+                       help='实际执行删除操作(关闭运行模式)')
+    
+    args = parser.parse_args()
+    
+    # 如果指定了--execute,则关闭运行模式
+    dry_run = args.execute
+    
+    # 创建清理工具
+    cleanup_tool = VectorDataCleaner()
+    
+    try:
+        # 执行清理
+        result = cleanup_tool.cleanup_data(
+            knowledge_id=args.knowledge_id,
+            document_id=args.document_id,
+            dry_run=dry_run
+        )
+        
+        # 生成并保存报告
+        report = cleanup_tool.generate_report(result)
+        print(report)
+    finally:
+        # 关闭连接
+        cleanup_tool.close_connections()
+    
+    # 保存报告到文件
+    timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
+    os.makedirs("./data_clean", exist_ok=True)
+    report_filename = f"./data_clean/data_cleanup_report_{args.knowledge_id}_{timestamp}.txt"
+    
+    try:
+        with open(report_filename, 'w', encoding='utf-8') as f:
+            f.write(report)
+        print(f"\n报告已保存到: {report_filename}")
+    except Exception as e:
+        logger.error(f"保存报告失败: {e}")
+
+
+if __name__ == "__main__":
+    main()

+ 0 - 0
network_search/search.py


+ 0 - 0
rag/__init__.py


BIN
rag/__pycache__/__init__.cpython-310.pyc


BIN
rag/__pycache__/__init__.cpython-311.pyc


BIN
rag/__pycache__/chat_message.cpython-310.pyc


BIN
rag/__pycache__/chat_message.cpython-311.pyc


BIN
rag/__pycache__/db.cpython-310.pyc


BIN
rag/__pycache__/db.cpython-311.pyc


BIN
rag/__pycache__/documents_process.cpython-310.pyc


BIN
rag/__pycache__/documents_process.cpython-311.pyc


BIN
rag/__pycache__/file_process.cpython-310.pyc


BIN
rag/__pycache__/file_process.cpython-311.pyc


BIN
rag/__pycache__/llm.cpython-310.pyc


BIN
rag/__pycache__/llm.cpython-311.pyc


BIN
rag/__pycache__/load_model.cpython-310.pyc


BIN
rag/__pycache__/load_model.cpython-311.pyc


BIN
rag/__pycache__/progress_reporter.cpython-311.pyc


BIN
rag/__pycache__/task_registry.cpython-311.pyc


+ 385 - 0
rag/chat_message.py

@@ -0,0 +1,385 @@
+from rag.db import MilvusOperate
+from rag.load_model import *
+from rag.llm import VllmApi
+from config import redis_config_dict
+import json
+import re
+import gc
+import redis
+from utils.get_logger import setup_logger
+import random
+import concurrent.futures
+logger = setup_logger(__name__)
+
+rerank_model_mapping = {
+    "bce_rerank_model": (bce_rerank_tokenizer, bce_rerank_base_model),
+    "rerank": (bce_rerank_tokenizer, bce_rerank_base_model)
+}
+redis_host = redis_config_dict.get("host")
+redis_port = redis_config_dict.get("port")
+redis_db = redis_config_dict.get("db")
+
+class ChatRetrieverRag:
+    def __init__(self, chat_json: dict = None, chat_id: str=None):
+        self.chat_id = chat_id
+        self.redis_client = redis.StrictRedis(host=redis_host, port=redis_port, db=redis_db)
+        if not chat_id:
+            self.vllm_client = VllmApi(chat_json)
+
+    def rerank_result(self,query, top_k, hybrid_search_result, rerank_embedding_name):
+        rerank_list = []
+        for result in hybrid_search_result:
+            rerank_list.append([query, result["content"]])
+
+        tokenizer, rerank_model = rerank_model_mapping.get(rerank_embedding_name)
+        # 重排序
+        rerank_model.eval()
+        inputs = tokenizer(rerank_list, padding=True, truncation=True, max_length=512, return_tensors="pt")
+        inputs = {k: v.to(device) for k, v in inputs.items()}
+        with torch.no_grad():
+            logits = rerank_model(**inputs, return_dict=True).logits.view(-1,).float()
+        logits = logits.detach().cpu()
+        scores = torch.sigmoid(logits).tolist()
+        # scores_list = scores.tolist()
+        logger.info(f"重排序的得分:{scores}")
+
+        sorted_pairs = sorted(zip(scores, hybrid_search_result), key=lambda x: x[0], reverse=True)
+        sorted_scores, sorted_search = zip(*sorted_pairs)
+        sorted_scores_list = list(sorted_scores)
+        sorted_search_list = list(sorted_search)
+        for score, search in zip(sorted_scores_list, sorted_search_list):
+            search["rerank_score"] = score
+        del inputs, logits
+        gc.collect()
+        torch.cuda.empty_cache()
+        search_result = random.sample(sorted_search_list, top_k) 
+        return search_result
+    
+    def request_milvus(self, collection_name_list, rag_embedding_name, query, top, mode):
+        search_multi_collection_list = []
+        search_doc_id_to_knowledge_id_dict = {}
+
+        def query_collection(collection_name):
+            return collection_name, MilvusOperate(
+                collection_name=collection_name,
+                embedding_name=rag_embedding_name
+            )._search(query, k=top, mode=mode)
+        
+        max_workers = min(10, len(collection_name_list))
+
+        with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:
+            future_to_name = {
+                executor.submit(query_collection, name): name 
+                for name in collection_name_list
+            }
+            
+            for future in concurrent.futures.as_completed(future_to_name):
+                collection_name = future_to_name[future]
+                try:
+                    _, hybrid_search_result = future.result()
+                    
+                    for result in hybrid_search_result:
+                        doc_id = result.get("doc_id")
+                       
+                        if doc_id not in search_doc_id_to_knowledge_id_dict:
+                            search_doc_id_to_knowledge_id_dict[doc_id] = collection_name
+                    
+                    search_multi_collection_list.extend(hybrid_search_result)
+                    
+                except Exception as e:
+                    logger.error(f"查询集合 {collection_name} 时出错: {str(e)}")
+                    continue
+        return search_multi_collection_list, search_doc_id_to_knowledge_id_dict
+
+
+    def retriever_result(self, chat_json):
+        mode_search_mode = {
+            "embedding": "dense",
+            "keyword": "sparse",
+            "mixed": "hybrid",
+        }
+        collection_name_list = chat_json.get("knowledgeIds")  # 如果指定多个knowledge传list
+        top = chat_json.get("sliceCount", 5)
+        retriever_info = json.loads(chat_json.get("knowledgeInfo", "{}"))
+        rag_embedding_name = chat_json.get("embeddingId")
+        mode_rag = retriever_info.get("recall_method")
+        mode = mode_search_mode.get(mode_rag, "hybrid")
+        rerank_embedding_name = retriever_info.get("rerank_model_name")
+        rerank_status = retriever_info.get("rerank_status")
+        query = chat_json.get("query")
+
+        # search_multi_collection_list = []
+        # search_doc_id_to_knowledge_id_dict = {}
+        # for collection_name in collection_name_list:
+        #     hybrid_search_result = MilvusOperate(
+        #         collection_name=collection_name,embedding_name=rag_embedding_name)._search(query, k=top, mode=mode)
+        #     for result in hybrid_search_result:
+        #         doc_id = result.get("doc_id")
+        #         if doc_id not in search_doc_id_to_knowledge_id_dict:
+        #             search_doc_id_to_knowledge_id_dict[doc_id] = collection_name
+        #     search_multi_collection_list.extend(hybrid_search_result)
+        search_multi_collection_list, search_doc_id_to_knowledge_id_dict = self.request_milvus(collection_name_list, rag_embedding_name, query, top, mode)
+        
+        # logger.info(f"根据{collection_name_list}检索到结果:{search_multi_collection_list}")
+        if len(search_multi_collection_list) <= 0:
+            rerank_result_list = []
+        elif rerank_status:
+            rerank_result_list = self.rerank_result(query, top, search_multi_collection_list, rerank_embedding_name)
+        else:
+            for result in search_multi_collection_list:
+                result["rerank_score"] = 1
+            # rerank_result_list = search_multi_collection_list
+            rerank_result_list = random.sample(search_multi_collection_list, top)
+        return rerank_result_list, search_doc_id_to_knowledge_id_dict
+
+
+    async def generate_sync_response(self, chat_json):
+        """非流式生成响应"""
+        try:
+            logger.info(f"非流式rag聊天的请求参数:{chat_json}")
+            
+            # 1. 检索相关文档
+            retriever_result_list, search_doc_id_to_knowledge_id_dict = self.retriever_result(chat_json)
+            logger.info(f"向量库中获取的最终结果:{retriever_result_list}")
+            
+            # 2. 解析检索结果
+            chunk_content, knowledge_info_dict = self.parse_retriever_list(
+                retriever_result_list,
+                search_doc_id_to_knowledge_id_dict
+            )
+            
+            # 3. 构建提示词
+            prompt = chat_json.get("prompt")
+            query = chat_json.get("query")
+            prompt = prompt.replace("{知识}", chunk_content).replace("{用户}", query)
+            logger.info(f"请求的提示词:{prompt}")
+            
+            # 4. 调用LLM
+            temperature = float(chat_json.get("temperature", 0.6))
+            top_p = float(chat_json.get("topP", 0.7))
+            max_token = chat_json.get("maxToken", 4096)
+            enable_think = chat_json.get("enable_think", False)
+            model = chat_json.get("model", "DeepSeek-R1-Distill-Qwen-14B")
+            
+            # 非流式调用
+            chat_resp = ""
+            async for chunk in self.vllm_client.chat(
+                prompt,
+                model,
+                temperature=temperature,
+                top_p=top_p,
+                max_tokens=max_token,
+                stream=False,  # 设置为False非流式
+                history=[],
+                enable_think=enable_think
+            ):
+                chat_resp = chunk.choices[0].message.content  # 非流式只返回一次完整内容
+
+            # 记录检索数据
+            chat_id = chunk.get("id")
+            self.redis_client.set(chat_id, json.dumps(knowledge_info_dict))
+            
+            logger.info(f"LLM生成的回答:{chat_resp[:100]}...")
+            
+            # 5. 返回结果
+            return {
+                "code": 200,
+                "data": {
+                    "answer": chat_resp,
+                    "chat_id": chat_id
+                }
+            }
+            
+        except Exception as e:
+            logger.error(f"非流式RAG聊天出错:{e}")
+            return {
+                "code": 500,
+                "message": str(e)
+            }
+
+    async def generate_rag_response(self, chat_json, chunk_content):
+        # logger.info(f"rag聊天的请求参数:{chat_json}")
+        # retriever_result_list = self.retriever_result(chat_json)
+        # logger.info(f"向量库中获取的最终结果:{retriever_result_list}")
+        prompt = chat_json.get("prompt")
+        query = chat_json.get("query")
+
+        # chunk_content = ""
+        # for retriever in retriever_result_list:
+        #     chunk_content += retriever["content"]
+        prompt = prompt.replace("{知识}", chunk_content).replace("{用户}", query)
+        # logger.info(f"请求的提示词:{prompt}")
+        temperature = float(chat_json.get("temperature", 0.6))
+        top_p = float(chat_json.get("topP", 0.7))
+        max_token = chat_json.get("maxToken", 4096)
+        enable_think = chat_json.get("enable_think", False)
+
+        # 调用模型获取返回的结果
+        model = chat_json.get("model", "DeepSeek-R1-Distill-Qwen-14B")
+        # model = "Qwen3-Coder-30B-loft"
+        chat_resp = ""
+        async for chunk in self.vllm_client.chat(prompt, model, temperature=temperature, top_p=top_p, max_tokens=max_token, stream=True, history=[], enable_think=enable_think):
+            if chunk.get("event") == "add":
+                chat_resp += chunk.get("data")
+                chunk["data"] = chat_resp
+                yield chunk
+            else:
+                yield chunk
+            
+    def parse_retriever_list(self, retriever_result_list, search_doc_id_to_knowledge_id_dict):
+        doc_info = {}
+        chunk_content = ""
+
+        # 组织成每个doc对应的json格式
+        for retriever in retriever_result_list:
+            chunk_text = retriever["content"]
+            chunk_content += chunk_text
+            doc_id = retriever["doc_id"]
+            chunk_id = retriever["chunk_id"]
+            rerank_score = retriever["rerank_score"]
+            doc_name = retriever["metadata"]["source"]
+            if doc_id in doc_info:
+                c_d = {
+                    "chunk_id": chunk_id,
+                    "rerank_score": rerank_score,
+                    "chunk_len": len(chunk_text)
+                }
+                doc_info[doc_id]["chunk_list"].append(c_d)
+                # doc_info[doc_id]["rerank_score"].append(rerank_score)
+            else:
+                c_d = {
+                    "chunk_id": chunk_id,
+                    "rerank_score": rerank_score,
+                    "chunk_len": len(chunk_text)
+                }
+                doc_info[doc_id] = {
+                    "doc_name": doc_name,
+                    "chunk_list": [c_d],
+                }
+
+        # doc_list = []
+        knowledge_info_dict = {}
+        """
+        {
+        "knowledge_id": [{}, {}],
+        "knowledge_id"
+        }
+        """
+        for k, v in doc_info.items():
+            d = {}
+            knowledge_id = search_doc_id_to_knowledge_id_dict.get(k)
+            d["doc_id"] = k
+            d["doc_name"] = v.get("doc_name")
+            d["chunk_nums"] = len(v.get("chunk_list"))
+            d["chunk_info_list"] = v.get("chunk_list")
+            # d["chunk_len"] = len(v.get("chunk_id_list"))
+            if knowledge_id in knowledge_info_dict:
+                knowledge_info_dict[knowledge_id].append(d)
+            else:
+                knowledge_info_dict[knowledge_id] = [d]
+            # doc_list.append(d)
+
+        return chunk_content, knowledge_info_dict
+
+    async def generate_event(self, chat_json, request):
+        chat_id = ""
+        try:
+            logger.info(f"rag聊天的请求参数:{chat_json}")
+            # knowledge_id = chat_json.get("knowledgeIds")
+            retriever_result_list, search_doc_id_to_knowledge_id_dict = self.retriever_result(chat_json)
+            logger.info(f"向量库中获取的最终结果:{retriever_result_list}")
+            chunk_content, knowledge_info_dict = self.parse_retriever_list(retriever_result_list, search_doc_id_to_knowledge_id_dict)
+
+            first = True
+            async for event in self.generate_rag_response(chat_json, chunk_content):
+                chat_id = event.get("id")
+                if first:
+                    #json_dict = {"knowledge_id": knowledge_id, "doc": doc_list}
+                    self.redis_client.set(chat_id, json.dumps(knowledge_info_dict))
+                    # logger.info(f"返回检索出的切片信息:{json_dict}")
+                    # yield {"id": chat_id, "event": "json", "data": json_dict}
+                    first = False
+                yield event
+                # yield json.dumps(event, ensure_ascii=False)
+                if await request.is_disconnected():
+                    logger.info(f"chat id:{chat_id}连接中断")
+                    yield {"id": chat_id, "event": "interrupted", "data": ""}
+                    return
+                    # yield json.dumps({"id": chat_id, "event": "interrupted", "data": ""}, ensure_ascii=False)
+        except Exception as e:
+            logger.info(f"执行出错:{e}")
+            yield {"id": chat_id, "event": "finish", "data": ""}
+            return
+            # yield json.dumps({"id": chat_id, "event": "finish", "data": ""}, ensure_ascii=False)
+
+    async def query_redis_chunk_by_chat_id(self, chat_id):
+        chunk_redis_str = self.redis_client.get(chat_id)
+        chunk_json = json.loads(chunk_redis_str)
+        logger.info(f"redis中存储的chunk 信息:{chunk_json}")
+
+        #knowledge_id = chunk_json.get("knowledge_id")
+        knowledge_id = list(chunk_json.keys())[0] if chunk_json else None
+        chunk_list = []
+        #for chunk in chunk_json["doc"]:
+        #    doc_chunk_list = chunk.get("chunk_info_list")
+        #    chunk_list.extend(doc_chunk_list)
+        for knowledge_id_key, doc_list in chunk_json.items():
+            for doc in doc_list:
+                doc_chunk_list = doc.get("chunk_info_list")
+                if doc_chunk_list:
+                    chunk_list.extend(doc_chunk_list)
+
+        if len(chunk_list) > 3:
+            random_chunk_list = random.sample(chunk_list, 3)
+        else:
+            random_chunk_list = chunk_list
+        chunk_id_list = [chunk["chunk_id"] for chunk in random_chunk_list]
+        return knowledge_id, chunk_id_list
+    
+    async def generate_relevant_query(self, query_json):
+        chat_id = query_json.get("chat_id")
+        if chat_id:
+            knowledge_id, chunk_id_list = await self.query_redis_chunk_by_chat_id(chat_id)
+            chunk_content_list = MilvusOperate(collection_name=knowledge_id)._search_by_chunk_id_list(chunk_id_list)
+            chunk_content = "\n".join(chunk_content_list)
+            # generate_query_prompt = "请根据下面提供的信息,帮我生成"
+            query_messages = query_json.get("messages")
+            user_dict = query_messages.pop()
+            messages = [{"role": "assistant", "content": chunk_content}, user_dict]
+        else:
+            messages = query_json.get("messages")
+        model = query_json.get("model")
+        # model = "Qwen3-Coder-30B-loft"
+        query_result = self.vllm_client.chat(model=model, stream=False, history=messages)
+        
+        async for result in query_result:
+            # result_json = json.loads(result)
+            # logger.info(f"生成的问题:{result_json}")
+            # result_str = result_json.get("choices", [{}])[0].get("message", {}).get("content", "").strip()
+            result = result.strip()
+            logger.info(f"模型生成的问题:{result}")
+            try:
+                if "```json" in result:
+                    json_pattern = r'```json\s(.*?)```'
+                    matches = re.findall(json_pattern, result, re.DOTALL)
+                    result = matches[0]
+                query_json = json.loads(result)
+            except Exception as e:
+                query_json = eval(result)
+            query_list = query_json.get("问题")
+
+        return {"code": 200, "data": query_list}
+
+    async def search_slice(self):
+        try:
+            chunk_redis_str = self.redis_client.get(self.chat_id)
+            chunk_json = json.loads(chunk_redis_str)
+            chunk_json["code"] = 200
+        except Exception as e:
+            logger.error(f"查询redis报错:{e}")
+            chunk_json = {
+                "code": 500,
+                "message": str(e)
+            }
+        return chunk_json
+

+ 753 - 0
rag/db.py

@@ -0,0 +1,753 @@
+from rag.vector_db.milvus_vector import HybridRetriever
+from response_info import generate_message, generate_response
+from utils.get_logger import setup_logger
+from datetime import datetime
+from uuid import uuid1
+import mysql.connector
+from mysql.connector import pooling, Error, errors
+import threading
+from concurrent.futures import ThreadPoolExecutor, TimeoutError
+from config import milvus_uri, mysql_config
+
+logger = setup_logger(__name__)
+# uri = "http://localhost:19530"
+
+# if 'POOL' not in globals():
+#     try:
+#         POOL = pooling.MySQLConnectionPool(
+#             pool_name="mysql_pool",
+#             pool_size=10,
+#             **mysql_config
+#         )
+#         logger.info("MySQL 连接池初始化成功")
+#     except Error as e:
+#         logger.info(f"初始化 MySQL 连接池失败: {e}")
+#         POOL = None
+
+
+class MilvusOperate:
+
+    def __init__(self, collection_name: str = "default", embedding_name:str = "e5"):
+        self.collection = collection_name
+        self.hybrid_retriever = HybridRetriever(uri=milvus_uri, embedding_name=embedding_name, collection_name=collection_name)
+        self.mysql_client = MysqlOperate()
+
+    def _has_collection(self):
+        is_collection = self.hybrid_retriever.has_collection()
+        return is_collection
+    
+    def _create_collection(self):
+        if self._has_collection():
+            resp = {"code": 400, "message": "数据库已存在"}
+        else:
+            create_result = self.hybrid_retriever.build_collection()
+            resp = generate_message(create_result)
+        return resp
+
+    
+    def _delete_collection(self):
+        delete_result = self.hybrid_retriever.delete_collection(self.collection)
+        resp = generate_message(delete_result)
+        return resp
+
+    
+    def _put_by_id(self, slice_json):
+        slice_id = slice_json.get("slice_id", None)
+        slice_text = slice_json.get("slice_text", None)
+        update_result, chunk_len = self.hybrid_retriever.update_data(chunk_id=slice_id, chunk=slice_text)
+        if update_result.endswith("success"):
+            # 如果成功,更新mysql中知识库总长度和文档长度
+            update_json = {}
+            update_json["knowledge_id"] = slice_json.get("knowledge_id")
+            update_json["doc_id"] = slice_json.get("document_id")
+            update_json["chunk_len"] = chunk_len
+            update_json["operate"] = "update"
+            update_json["chunk_id"] = slice_id
+            update_json["chunk_text"] = slice_text
+            update_flag, update_str = self.mysql_client.update_total_doc_len(update_json)
+        else:
+            update_flag = False
+            
+        if not update_flag:
+            update_result = "update_error"    
+        
+        resp = generate_message(update_result)
+        return resp
+    
+    def _insert_slice(self, slice_json):
+        slice_id = str(uuid1())
+        knowledge_id = slice_json.get("knowledge_id")
+        doc_id = slice_json.get("document_id")
+        slice_text = slice_json.get("slice_text", None)
+        doc_name = slice_json.get("doc_name")
+        chunk_len = len(slice_text)
+        metadata = {
+            "content": slice_text,
+            "doc_id": doc_id,
+            "chunk_id": slice_id,
+            "metadata": {"source": doc_name, "chunk_len": chunk_len}
+        }
+        insert_flag, insert_str = self.hybrid_retriever.insert_data(slice_text, metadata)
+        if insert_flag:
+            # 如果成功,更新mysql中知识库总长度和文档长度
+            update_json = {}
+            update_json["knowledge_id"] = slice_json.get("knowledge_id")
+            update_json["doc_id"] = slice_json.get("document_id")
+            update_json["chunk_len"] = chunk_len
+            update_json["operate"] = "insert"
+            update_json["chunk_id"] = slice_id
+            update_json["chunk_text"] = slice_text
+            update_flag, update_str = self.mysql_client.update_total_doc_len(update_json)
+        else:
+            logger.error(f"插入向量库出错:{insert_str}")
+            update_flag = False
+            update_str = "向量库写入出错"
+            # pass
+            
+        if not update_flag:
+            logger.error(f"新增切片中mysql数据库出错:{update_str}")
+            insert_result = "insert_error"
+        else:
+            insert_result = "insert_success"
+        
+        resp = generate_message(insert_result)
+        return resp
+    
+
+    def _delete_by_chunk_id(self, chunk_id, knowledge_id, document_id):
+        logger.info(f"删除的切片id:{chunk_id}")
+        delete_result, delete_chunk_len = self.hybrid_retriever.delete_by_chunk_id(chunk_id=chunk_id)
+        if delete_result.endswith("success"):
+            chunk_len = delete_chunk_len[0]
+            update_json = {
+                "knowledge_id": knowledge_id,
+                "doc_id": document_id,
+                "chunk_len": -chunk_len,
+                "operate": "delete",
+                "chunk_id": chunk_id
+            }
+            update_flag, update_str = self.mysql_client.update_total_doc_len(update_json)
+        else:
+            logger.error("根据chunk id删除向量库失败")
+            update_flag = False
+            update_str = "根据chunk id删除失败"
+        
+        if not update_flag:
+            logger.error(update_str)
+            delete_result = "delete_error"
+
+        
+        resp = generate_message(delete_result)
+        return resp
+    
+    def _delete_by_doc_id(self, doc_id: str = None):
+        logger.info(f"删除数据的id:{doc_id}")
+        delete_result = self.hybrid_retriever.delete_by_doc_id(doc_id=doc_id)
+        resp = generate_message(delete_result)
+        return resp
+    
+
+    def _search_by_chunk_id(self, chunk_id):
+        if self._has_collection():
+            query_result = self.hybrid_retriever.query_chunk_id(chunk_id=chunk_id)
+        else:
+            query_result = []
+        logger.info(f"根据切片查询到的信息:{query_result}")
+        resp = generate_response(query_result)
+
+        return resp
+    
+    def _search_by_chunk_id_list(self, chunk_id_list):
+        if self._has_collection():
+            query_result = self.hybrid_retriever.query_chunk_id_list(chunk_id_list)
+        else:
+            query_result = []
+        logger.info(f"召回的切片列表查询切片信息:{query_result}")
+        
+        chunk_content_list = []
+        for chunk_dict in query_result:
+            chunk_content = chunk_dict.get("content")
+            chunk_content_list.append(chunk_content)
+
+        return chunk_content_list
+    
+    
+    def _search_by_key_word(self, search_json):
+        if self._has_collection():
+            doc_id = search_json.get("document_id", None)
+            text = search_json.get("text", None)
+            page_num = search_json.get("pageNum", 1)
+            page_size = search_json.get("pageSize", 10)
+            page_num = search_json.get("pageNum")  # 根据传过来的id处理对应知识库
+            query_result = self.hybrid_retriever.query_filter(doc_id=doc_id, filter_field=text)
+        else:
+            query_result = []
+        resp = generate_response(query_result,page_num,page_size)
+
+        return resp
+    
+    def _insert_data(self, docs):
+        for doc in docs:
+            chunk = doc.get("content")
+            insert_flag, insert_info = self.hybrid_retriever.insert_data(chunk, doc)
+            if not insert_flag:
+                break
+        resp = insert_flag
+        return resp, insert_info
+    
+    def _batch_insert_data(self, docs, text_lists):
+        insert_flag, insert_info = self.hybrid_retriever.batch_insert_data(text_lists, docs)
+
+        resp = insert_flag
+        return resp, insert_info
+
+    def _search(self, query, k, mode):
+        search_result = self.hybrid_retriever.search(query, k, mode)
+        return search_result
+
+
+# class MysqlOperate:
+
+#     def get_connection(self):
+#         """
+#         从连接池中获取一个连接
+#         :return: 数据库连接对象
+#         """
+#         # try:
+#             # with ThreadPoolExecutor() as executor:
+#             #     future = executor.submit(POOL.get_connection)
+#             #     connection = future.result(timeout=5.0)  # 设置超时时间为5秒
+#             # logger.info("成功从连接池获取连接")
+#             # return connection, "success"
+#         # except TimeoutError:
+#         #     logger.error("获取mysql数据库连接池超时")
+#         #     return None, "mysql获取连接池超时"
+#         # except errors.InterfaceError as e:
+#         #     logger.error(f"MySQL 接口异常:{e}")
+#         #     return None, "mysql接口异常"
+#         # except errors.OperationalError as e:
+#         #     logger.error(f"MySQL 操作错误:{e}")
+#         #     return None, "mysql 操作错误"
+#         # except Error as e:
+#         #     logger.error(f"无法从连接池获取连接: {e}")
+#         #     return None, str(e)
+#         connection = None
+#         event = threading.Event()
+
+#         def target():
+#             nonlocal connection
+#             try:
+#                 connection = POOL.get_connection()
+#             finally:
+#                 event.set()
+
+#         thread = threading.Thread(target=target)
+#         thread.start()
+#         event.wait(timeout=5)
+
+#         if thread.is_alive():
+#             # 超时处理
+#             logger.error("获取连接超时")
+#             return None, "获取连接超时"
+#         else:
+#             if connection:
+#                 return connection, "success"
+#             else:
+#                 logger.error("获取连接失败")
+#                 return None, "获取连接失败"
+
+#     def insert_to_slice(self, docs, knowledge_id, doc_id):
+#         """
+#         插入数据到切片信息表中 slice_info
+#         """
+#         connection = None
+#         cursor = None
+#         date_now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
+#         values = []
+#         connection, cennction_info = self.get_connection()
+#         if not connection:
+#             return False, cennction_info
+        
+#         for chunk in docs:
+#             slice_id = chunk.get("chunk_id")
+#             slice_text = chunk.get("content")
+#             chunk_index = chunk.get("metadata").get("chunk_index")
+#             values.append((slice_id, knowledge_id, doc_id, slice_text, date_now, chunk_index))
+#         try:
+#             cursor = connection.cursor()
+#             # insert_sql = """
+#             #     INSERT INTO slice_info (
+#             #         slice_id,
+#             #         knowledge_id,
+#             #         document_id,
+#             #         slice_text,
+#             #         create_time,
+#             #         slice_index
+#             #     ) VALUES (%s, %s, %s, %s, %s,%s)
+#             #     """
+            
+#             # 容错“for key 'UK_ID_TYPE_KEY'”
+#             insert_sql = """
+#             INSERT INTO slice_info (
+#                 slice_id,
+#                 knowledge_id,
+#                 document_id,
+#                 slice_text,
+#                 create_time,
+#                 slice_index
+#             ) VALUES (%s, %s, %s, %s, %s, %s)
+#             ON DUPLICATE KEY UPDATE
+#                 slice_text = VALUES(slice_text),
+#                 create_time = VALUES(create_time),
+#                 slice_index = VALUES(slice_index)
+#             """
+            
+#             cursor.executemany(insert_sql, values)
+#             connection.commit()
+#             logger.info(f"批量插入切片数据成功。")
+#             return True, "success"
+
+#         except Error as e:
+#             logger.error(f"数据库操作出错:{e}")
+#             connection.rollback()
+#             return False, str(e)
+#         finally:
+#             # if cursor:
+#             cursor.close()
+#             # if connection and connection.is_connected():
+#             connection.close()
+
+#     def delete_to_slice(self, doc_id):
+#         """
+#         删除 slice_info库中切片信息
+#         """
+#         connection = None
+#         cursor = None
+#         connection, connection_info = self.get_connection()
+#         if not connection:
+#             return False, connection_info
+#         try:
+#             cursor = connection.cursor()
+#             delete_sql = f"DELETE FROM slice_info WHERE document_id = %s"
+#             cursor.execute(delete_sql, (doc_id,))
+#             connection.commit()
+#             logger.info(f"删除数据成功")
+#             return True, "success"
+
+#         except Error as e:
+#             logger.error(f"根据{doc_id}删除数据失败:{e}")
+#             connection.rollback()
+#             return False, str(e)
+#         finally:
+#             # if cursor:
+#             cursor.close()
+#             # if connection and connection.is_connected():
+#             connection.close()
+
+#     def insert_to_image_url(self, image_dict, knowledge_id, doc_id):
+#         """
+#         批量插入数据到指定表
+#         """
+#         connection = None
+#         cursor = None
+#         connection, connection_info = self.get_connection()
+#         if not connection:
+#             return False, connection_info
+        
+#         date_now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
+#         values = []
+#         for img_key, img_value in image_dict.items():
+#             origin_text = img_key
+#             media_url = img_value
+#             values.append((knowledge_id, doc_id, origin_text, "image", media_url, date_now))
+#         try:
+#             cursor = connection.cursor()
+#             # insert_sql = """
+#             #     INSERT INTO bm_media_replacement (
+#             #         knowledge_id,
+#             #         document_id,
+#             #         origin_text,
+#             #         media_type,
+#             #         media_url,
+#             #         create_time
+#             #     ) VALUES (%s, %s, %s, %s, %s, %s)
+#             #     """
+            
+#             # 容错“for key 'UK_ID_TYPE_KEY'”
+#             insert_sql = """
+#                 INSERT INTO bm_media_replacement (
+#                     knowledge_id,
+#                     document_id,
+#                     origin_text,
+#                     media_type,
+#                     media_url,
+#                     create_time
+#                 ) VALUES (%s, %s, %s, %s, %s, %s)
+#                 ON DUPLICATE KEY UPDATE
+#                     origin_text = VALUES(origin_text),
+#                     media_type = VALUES(media_type),
+#                     media_url = VALUES(media_url),
+#                     create_time = VALUES(create_time)
+#                 """
+
+#             cursor.executemany(insert_sql, values)
+#             connection.commit()
+#             logger.info(f"插入到bm_media_replacement表成功")
+#             return True, "success"
+#         except Error as e:
+#             logger.error(f"数据库操作出错:{e}")
+#             connection.rollback()
+#             return False, str(e)
+#         finally:
+#             # if cursor:
+#             cursor.close()
+#             # if connection and connection.is_connected():
+#             connection.close()
+
+#     def delete_image_url(self, doc_id):
+#         """
+#         根据doc id删除bm_media_replacement中的数据
+#         """
+#         connection = None
+#         cursor = None
+#         connection, connection_info = self.get_connection()
+#         if not connection:
+#             return False, connection_info
+        
+#         try:
+#             cursor = connection.cursor()
+#             delete_sql = f"DELETE FROM bm_media_replacement WHERE document_id = %s"
+#             cursor.execute(delete_sql, (doc_id,))
+#             connection.commit()
+#             logger.info(f"根据{doc_id} 删除bm_media_replacement表中数据成功")
+#             return True, "success"
+#         except Error as e:
+#             logger.error(f"根据{doc_id}删除 bm_media_replacement 数据库操作出错:{e}")
+#             connection.rollback()
+#             return False, str(e)
+#         finally:
+#             # if cursor:
+#             cursor.close()
+#             # if connection and connection.is_connected():
+#             connection.close()
+
+#     def update_total_doc_len(self, update_json):
+#         """
+#         更新长度表和文档长度表,删除slice info表, 插入slice info 切片信息
+#         """
+#         knowledge_id = update_json.get("knowledge_id")
+#         doc_id = update_json.get("doc_id")
+#         chunk_len = update_json.get("chunk_len")
+#         operate = update_json.get("operate")
+#         chunk_id = update_json.get("chunk_id")
+#         chunk_text = update_json.get("chunk_text")
+#         connection = None
+#         cursor = None
+#         connection, connection_info = self.get_connection()
+#         if not connection:
+#             return False, connection_info
+#         try:
+#             cursor = connection.cursor()
+#             query_doc_word_num_sql = f"select word_num,slice_total from bm_document where document_id = %s"
+#             query_knowledge_word_num_sql = f"select word_num from bm_knowledge where knowledge_id = %s"
+#             cursor.execute(query_doc_word_num_sql, (doc_id,))
+#             doc_result = cursor.fetchone()
+#             logger.info(f"查询到的文档长度信息:{doc_result}")
+#             cursor.execute(query_knowledge_word_num_sql, (knowledge_id, ))
+#             knowledge_result = cursor.fetchone()
+#             logger.info(f"查询到的知识库总长度信息:{knowledge_result}")
+#             if not doc_result:
+#                 new_word_num = 0
+#                 slice_total = 0
+#             else:
+#                 old_word_num = doc_result[0]
+#                 slice_total = doc_result[1]
+#                 new_word_num = old_word_num + chunk_len
+#                 slice_total -= 1 if slice_total else 0
+
+#             if not knowledge_result:
+#                 new_knowledge_word_num = 0
+#             else:
+#                 old_knowledge_word_num = knowledge_result[0]
+#                 new_knowledge_word_num = old_knowledge_word_num + chunk_len
+
+#             if operate == "update":
+#                 update_sql = f"UPDATE bm_document SET word_num = %s WHERE document_id = %s"
+#                 cursor.execute(update_sql, (new_word_num, doc_id))
+
+#                 date_now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
+#                 update_slice_sql = f"UPDATE slice_info SET slice_text = %s, update_time = %s WHERE slice_id = %s"
+#                 cursor.execute(update_slice_sql, (chunk_text, date_now, chunk_id))
+#             elif operate == "insert":
+#                 query_slice_info_index_sql = f"select MAX(slice_index) from slice_info where document_id = %s"
+#                 cursor.execute(query_slice_info_index_sql, (doc_id,))
+#                 chunk_index_result = cursor.fetchone()[0]
+#                 # logger.info(chunk_index_result)
+#                 if chunk_index_result:
+#                     chunk_max_index = int(chunk_index_result)
+#                 else:
+#                     chunk_max_index = 0
+
+#                 update_sql = f"UPDATE bm_document SET word_num = %s WHERE document_id = %s"
+#                 cursor.execute(update_sql, (new_word_num, doc_id))
+
+#                 date_now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
+#                 insert_slice_sql = "INSERT INTO slice_info (slice_id,knowledge_id,document_id,slice_text,create_time, slice_index) VALUES (%s, %s, %s, %s, %s, %s)"
+#                 cursor.execute(insert_slice_sql, (chunk_id, knowledge_id, doc_id, chunk_text, date_now, chunk_max_index+1))
+#             else:
+#                 update_sql = f"UPDATE bm_document SET word_num = %s, slice_total = %s WHERE document_id = %s"
+#                 cursor.execute(update_sql, (new_word_num, slice_total, doc_id))
+
+#                 # 删除切片id对应的切片  
+#                 delete_slice_sql = f"DELETE FROM slice_info where slice_id = %s"
+#                 cursor.execute(delete_slice_sql, (chunk_id, ))
+
+#             update_knowledge_sql = f"UPDATE bm_knowledge SET word_num = %s WHERE knowledge_id = %s"
+#             cursor.execute(update_knowledge_sql, (new_knowledge_word_num, knowledge_id))
+
+#             connection.commit()
+#             logger.info("bm_document和bm_knowledge数据更新成功")
+#             return True, "success"
+#         except Error as e:
+#             logger.error(f"数据库操作出错:{e}")
+#             connection.rollback()
+#             return False, str(e)
+#         finally:
+#             # if cursor:
+#             cursor.close()
+#             # if connection and connection.is_connected():
+#             connection.close()
+
+
+import time
+# ========== 全局初始化连接池(自动检测 + 超时保护) ==========
+class SafeMySQLPool:
+    def __init__(self, pool_size=10, conn_timeout=10, idle_timeout=60, **mysql_config):
+        mysql_config.setdefault("connect_timeout", conn_timeout)
+        mysql_config.setdefault("pool_reset_session", True)
+        self._pool = pooling.MySQLConnectionPool(
+            pool_name="safe_mysql_pool",
+            pool_size=pool_size,
+            **mysql_config
+        )
+        self._lock = threading.Lock()
+        self._active_conns = {}  # {id(conn): (conn, last_used_time)}
+        self._idle_timeout = idle_timeout
+        self._stop_event = threading.Event()
+        threading.Thread(target=self._auto_reclaimer, daemon=True).start()
+
+    def get_connection(self, timeout=10):
+        """安全获取连接(带超时检测与追踪)"""
+        start = time.time()
+        while True:
+            try:
+                conn = self._pool.get_connection()
+                with self._lock:
+                    self._active_conns[id(conn)] = (conn, time.time())
+                return self._wrap_connection(conn)
+            except errors.PoolError:
+                if time.time() - start > timeout:
+                    raise TimeoutError(f"获取 MySQL 连接超时(超过 {timeout}s)")
+                time.sleep(0.3)
+
+    def _wrap_connection(self, conn):
+        """包装连接对象以监控关闭事件"""
+        pool = self
+        orig_close = conn.close
+
+        def safe_close():
+            try:
+                orig_close()
+            finally:
+                with pool._lock:
+                    pool._active_conns.pop(id(conn), None)
+        conn.close = safe_close
+        return conn
+
+    def _auto_reclaimer(self):
+        """后台线程自动回收超时未关闭连接"""
+        while not self._stop_event.is_set():
+            time.sleep(5)
+            now = time.time()
+            with self._lock:
+                to_remove = []
+                for cid, (conn, last_used) in list(self._active_conns.items()):
+                    if now - last_used > self._idle_timeout:
+                        try:
+                            conn.close()
+                            print(f"[AutoReclaim] 已回收超时未关闭连接 (idle={int(now - last_used)}s)")
+                        except Exception as e:
+                            print(f"[AutoReclaim] 回收连接失败: {e}")
+                        to_remove.append(cid)
+                for cid in to_remove:
+                    self._active_conns.pop(cid, None)
+
+    def close_all(self):
+        """停止守护线程并关闭所有连接"""
+        self._stop_event.set()
+        with self._lock:
+            for conn, _ in self._active_conns.values():
+                try:
+                    conn.close()
+                except:
+                    pass
+            self._active_conns.clear()
+
+
+# ========== 初始化连接池 ==========
+if "POOL" not in globals():
+    try:
+        POOL = SafeMySQLPool(pool_size=10, idle_timeout=60, **mysql_config)
+        logger.info("MySQL 连接池初始化成功")
+    except Error as e:
+        logger.error(f"MySQL 连接池初始化失败: {e}")
+        POOL = None
+
+
+# ========== MysqlOperate 类 ==========
+class MysqlOperate:
+    def get_connection(self):
+        """安全获取连接"""
+        if not POOL:
+            return None, "连接池未初始化"
+        try:
+            connection = POOL.get_connection(timeout=5)
+            return connection, "success"
+        except TimeoutError as e:
+            logger.error(str(e))
+            return None, "获取连接超时"
+        except Error as e:
+            logger.error(f"MySQL 获取连接失败: {e}")
+            return None, str(e)
+
+    def _execute_many(self, sql, values, success_msg, err_msg):
+        """通用批量执行模板"""
+        connection, info = self.get_connection()
+        if not connection:
+            return False, info
+        cursor = None
+        try:
+            cursor = connection.cursor()
+            cursor.executemany(sql, values)
+            connection.commit()
+            logger.info(success_msg)
+            return True, "success"
+        except Error as e:
+            connection.rollback()
+            logger.error(f"{err_msg}: {e}")
+            return False, str(e)
+        finally:
+            if cursor:
+                cursor.close()
+            connection.close()
+
+    def insert_to_slice(self, docs, knowledge_id, doc_id):
+        """批量插入切片信息"""
+        date_now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
+        values = [
+            (
+                chunk.get("chunk_id"),
+                knowledge_id,
+                doc_id,
+                chunk.get("content"),
+                date_now,
+                chunk.get("metadata", {}).get("chunk_index")
+            )
+            for chunk in docs
+        ]
+
+        sql = """
+        INSERT INTO slice_info (
+            slice_id, knowledge_id, document_id, slice_text, create_time, slice_index
+        ) VALUES (%s, %s, %s, %s, %s, %s)
+        ON DUPLICATE KEY UPDATE
+            slice_text = VALUES(slice_text),
+            create_time = VALUES(create_time),
+            slice_index = VALUES(slice_index)
+        """
+        return self._execute_many(sql, values, "批量插入切片数据成功", "插入 slice_info 出错")
+
+    def delete_to_slice(self, doc_id):
+        """删除切片"""
+        connection, info = self.get_connection()
+        if not connection:
+            return False, info
+        cursor = None
+        try:
+            cursor = connection.cursor()
+            cursor.execute("DELETE FROM slice_info WHERE document_id = %s", (doc_id,))
+            connection.commit()
+            logger.info(f"删除 slice_info 数据成功")
+            return True, "success"
+        except Error as e:
+            connection.rollback()
+            logger.error(f"删除 slice_info 出错: {e}")
+            return False, str(e)
+        finally:
+            if cursor:
+                cursor.close()
+            connection.close()
+
+    def insert_to_image_url(self, image_dict, knowledge_id, doc_id):
+        """插入图片映射表"""
+        date_now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
+        values = [
+            (knowledge_id, doc_id, k, "image", v, date_now)
+            for k, v in image_dict.items()
+        ]
+        sql = """
+        INSERT INTO bm_media_replacement (
+            knowledge_id, document_id, origin_text, media_type, media_url, create_time
+        ) VALUES (%s, %s, %s, %s, %s, %s)
+        ON DUPLICATE KEY UPDATE
+            origin_text = VALUES(origin_text),
+            media_type = VALUES(media_type),
+            media_url = VALUES(media_url),
+            create_time = VALUES(create_time)
+        """
+        return self._execute_many(sql, values, "插入 bm_media_replacement 成功", "插入 bm_media_replacement 出错")
+
+    def delete_image_url(self, doc_id):
+        """删除图片映射"""
+        connection, info = self.get_connection()
+        if not connection:
+            return False, info
+        cursor = None
+        try:
+            cursor = connection.cursor()
+            cursor.execute("DELETE FROM bm_media_replacement WHERE document_id = %s", (doc_id,))
+            connection.commit()
+            logger.info(f"删除 bm_media_replacement 成功")
+            return True, "success"
+        except Error as e:
+            connection.rollback()
+            logger.error(f"删除 bm_media_replacement 出错: {e}")
+            return False, str(e)
+        finally:
+            if cursor:
+                cursor.close()
+            connection.close()
+
+    def delete_document(self, task_id):
+        """删除 bm_document 表中的记录(取消任务前清理)"""
+        connection, info = self.get_connection()
+        if not connection:
+            return False, info
+        cursor = None
+        try:
+            cursor = connection.cursor()
+            sql = "DELETE FROM bm_document WHERE document_id = %s"
+            cursor.execute(sql, (task_id,))
+            affected_rows = cursor.rowcount
+            connection.commit()
+            logger.info(f"删除 bm_document 记录成功: task_id={task_id}, 影响行数={affected_rows}")
+            return True, affected_rows
+        except Error as e:
+            connection.rollback()
+            logger.error(f"删除 bm_document 记录失败: {e}")
+            return False, str(e)
+        finally:
+            if cursor:
+                cursor.close()
+            if connection:
+                connection.close()

BIN
rag/document_load/__pycache__/Document_format_conversion.cpython-311.pyc


BIN
rag/document_load/__pycache__/image_load.cpython-310.pyc


BIN
rag/document_load/__pycache__/image_load.cpython-311.pyc


BIN
rag/document_load/__pycache__/office_load.cpython-310.pyc


BIN
rag/document_load/__pycache__/office_load.cpython-311.pyc


BIN
rag/document_load/__pycache__/pdf_load.cpython-310.pyc


BIN
rag/document_load/__pycache__/pdf_load.cpython-311.pyc


BIN
rag/document_load/__pycache__/txt_load.cpython-310.pyc


BIN
rag/document_load/__pycache__/txt_load.cpython-311.pyc


BIN
rag/document_load/__pycache__/word_load.cpython-310.pyc


+ 175 - 0
rag/document_load/document_format_conversion.py

@@ -0,0 +1,175 @@
+# import os
+# import subprocess
+# from pathlib import Path
+
+# # ==============================
+# #  LibreOffice 文件 → PDF 转换器
+# #  基于 unoconv + LibreOffice
+# # ==============================
+
+# # 支持的文件格式(可根据需要扩展)
+# SUPPORTED_EXTENSIONS = {
+#     ".doc", ".docx", ".odt",   # 文本文件
+#     ".xls", ".xlsx", ".ods",   # 表格文件
+#     ".ppt", ".pptx", ".odp"    # 幻灯片文件
+# }
+
+# def is_supported_file(file_path: str) -> bool:
+#     """判断文件是否为支持的 Office 格式"""
+#     ext = Path(file_path).suffix.lower()
+#     return ext in SUPPORTED_EXTENSIONS
+
+# def convert_to_pdf(input_path: str, output_dir: str = None) -> bool:
+#     """
+#     使用 unoconv 调用 LibreOffice 将 Office 文件转换为 PDF。
+    
+#     Args:
+#         input_path (str): 输入文件路径
+#         output_dir (str): 输出目录(默认与输入文件同级)
+#     Returns:
+#         bool: 转换是否成功
+#     """
+#     input_path = os.path.abspath(input_path)
+#     if not os.path.exists(input_path):
+#         print(f"❌ 文件不存在: {input_path}")
+#         return False
+
+#     if not is_supported_file(input_path):
+#         print(f"⚠️ 不支持的文件格式: {input_path}")
+#         return False
+
+#     if output_dir is None:
+#         output_dir = os.path.dirname(input_path)
+#     os.makedirs(output_dir, exist_ok=True)
+
+#     # 构造输出路径
+#     output_pdf = os.path.join(
+#         output_dir, Path(input_path).stem + ".pdf"
+#     )
+
+#     try:
+#         # 执行 unoconv 转换命令
+#         subprocess.run(
+#             ["unoconv", "-f", "pdf", "-o", output_pdf, input_path],
+#             check=True,
+#             stdout=subprocess.PIPE,
+#             stderr=subprocess.PIPE
+#         )
+#         print(f"✅ 转换成功: {output_pdf}")
+#         return True
+
+#     except FileNotFoundError:
+#         print("❌ 未检测到 unoconv,请先执行安装:sudo apt install -y unoconv libreoffice-headless")
+#         return False
+#     except subprocess.CalledProcessError as e:
+#         print(f"❌ 转换失败: {input_path}")
+#         print("错误信息:", e.stderr.decode(errors="ignore"))
+#         return False
+
+
+# def batch_convert_directory(input_dir: str, output_dir: str = None):
+#     """
+#     批量转换目录中的 Office 文件为 PDF。
+#     """
+#     input_dir = os.path.abspath(input_dir)
+#     if not os.path.isdir(input_dir):
+#         print(f"❌ 输入路径不是目录: {input_dir}")
+#         return
+
+#     print(f"📂 开始扫描目录: {input_dir}")
+#     for root, _, files in os.walk(input_dir):
+#         for f in files:
+#             file_path = os.path.join(root, f)
+#             if is_supported_file(file_path):
+#                 rel_dir = os.path.relpath(root, input_dir)
+#                 target_dir = os.path.join(output_dir or input_dir, rel_dir)
+#                 convert_to_pdf(file_path, target_dir)
+#             else:
+#                 print(f"⏩ 跳过不支持的文件: {f}")
+
+# if __name__ == "__main__":
+#     # 示例:转换单个文件
+#     # convert_to_pdf("/work/docs/test.docx", "/work/output")
+
+#     # 示例:批量转换整个目录
+#     batch_convert_directory("/work/docs", "/work/output")
+
+
+import os
+import subprocess
+
+# ==========================================
+# 支持转换为 PDF 的文件扩展名
+# ==========================================
+
+SUPPORTED_FORMATS = {
+    # 文档
+    '.doc', '.docx', '.odt', '.rtf', '.txt',
+    # 表格
+    '.xls', '.xlsx', '.ods',
+    # 演示文稿
+    '.ppt', '.pptx', '.odp',
+}
+
+def convert_to_pdf(input_path, output_dir=None):
+    """
+    使用 LibreOffice 命令行将文档/表格/演示文稿转换为 PDF。
+    
+    Args:
+        input_path (str): 输入文件路径
+        output_dir (str, optional): 输出目录(默认同输入文件目录)
+    
+    Returns:
+        str: 输出 PDF 文件路径
+    """
+    if not os.path.isfile(input_path):
+        raise FileNotFoundError(f"文件不存在: {input_path}")
+
+    file_ext = os.path.splitext(input_path)[1].lower()
+    if file_ext not in SUPPORTED_FORMATS:
+        raise ValueError(f"不支持的文件格式: {file_ext},仅支持 {SUPPORTED_FORMATS}")
+
+    if output_dir is None:
+        output_dir = os.path.dirname(input_path)
+    os.makedirs(output_dir, exist_ok=True)
+
+    # LibreOffice 输出 PDF 文件路径
+    output_pdf = os.path.join(
+        output_dir, os.path.splitext(os.path.basename(input_path))[0] + ".pdf"
+    )
+
+    # 构造 LibreOffice 转换命令
+    cmd = [
+        "libreoffice",
+        "--headless",
+        "--convert-to", "pdf",
+        "--outdir", output_dir,
+        input_path
+    ]
+
+    try:
+        print(f"执行命令: {' '.join(cmd)}")
+        subprocess.run(cmd, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+        if not os.path.exists(output_pdf):
+            raise RuntimeError("转换失败:未生成 PDF 文件。")
+        print(f"✅ 转换成功: {output_pdf}")
+        return output_pdf
+
+    except subprocess.CalledProcessError as e:
+        print(f"❌ LibreOffice 转换失败:\nSTDOUT: {e.stdout.decode()}\nSTDERR: {e.stderr.decode()}")
+        raise e
+    except Exception as e:
+        print(f"❌ 转换过程中发生错误: {e}")
+        raise e
+
+
+# ===============================
+# 示例调用
+# ===============================
+if __name__ == "__main__":
+    test_file = "./work_ceshi/ceshi.docx"
+    try:
+        pdf_path = convert_to_pdf(test_file)
+        print(f"转换完成 → {pdf_path}")
+    except Exception as e:
+        print(f"转换失败: {e}")

+ 26 - 0
rag/document_load/image_load.py

@@ -0,0 +1,26 @@
+import os
+
+from magic_pdf.data.data_reader_writer import FileBasedDataWriter, FileBasedDataReader
+from magic_pdf.model.doc_analyze_by_custom_model import doc_analyze
+from magic_pdf.data.read_api import read_local_images
+
+
+class MinerUParseImage():
+    # def __init__(self, knowledge_id):
+    #     self.knowledge_id = knowledge_id
+
+    async def extract_text(self, file_path):
+        local_image_dir = "./tmp_file/images"
+        image_dir = str(os.path.basename(local_image_dir))
+
+        os.makedirs(local_image_dir, exist_ok=True)
+
+        image_writer = FileBasedDataWriter(local_image_dir)
+
+
+        ds = read_local_images(file_path)[0]  # 
+        infer_result = ds.apply(doc_analyze, ocr=True)
+        pipe_result = infer_result.pipe_ocr_mode(image_writer)
+        content_list_content = pipe_result.get_content_list(image_dir)
+
+        return content_list_content

+ 26 - 0
rag/document_load/office_load.py

@@ -0,0 +1,26 @@
+import os
+
+from magic_pdf.data.data_reader_writer import FileBasedDataWriter, FileBasedDataReader
+from magic_pdf.model.doc_analyze_by_custom_model import doc_analyze
+from magic_pdf.data.read_api import read_local_office
+
+
+class MinerUParseOffice():
+    # def __init__(self, knowledge_id):
+    #     self.knowledge_id = knowledge_id
+
+    async def extract_text(self, file_path):
+        local_image_dir = "./tmp_file/images"
+        image_dir = str(os.path.basename(local_image_dir))
+
+        os.makedirs(local_image_dir, exist_ok=True)
+
+        image_writer = FileBasedDataWriter(local_image_dir)
+
+
+        ds = read_local_office(file_path)[0]  # 
+        infer_result = ds.apply(doc_analyze, ocr=True)
+        pipe_result = infer_result.pipe_ocr_mode(image_writer)
+        content_list_content = pipe_result.get_content_list(image_dir)
+
+        return content_list_content

+ 439 - 0
rag/document_load/pdf_load.py

@@ -0,0 +1,439 @@
+import fitz  # PyMuPDF
+import os
+from PIL import Image
+import io
+import pdfplumber
+from langchain_community.document_loaders.unstructured import UnstructuredFileLoader
+from utils.upload_file_to_oss import UploadMinio
+from config import minio_config
+
+import os
+from magic_pdf.data.data_reader_writer import FileBasedDataWriter, FileBasedDataReader
+from magic_pdf.data.dataset import PymuDocDataset
+from magic_pdf.model.doc_analyze_by_custom_model import doc_analyze
+from magic_pdf.config.enums import SupportedPdfParseMethod
+
+
+class PDFLoader(UnstructuredFileLoader):
+    def __init__(self, file_json):
+        self.base_path = "./tmp_file"
+        self.file_json = file_json
+        self.flag = self.file_json.get("flag")  # 后续优化
+        self.file_path_process()
+        if self.flag == "update":
+            self.flag_image_info_dict = {}
+            if not self.output_pdf_path:
+                self.upload_minio = UploadMinio()
+                self.image_positions_dict = self.get_image_positions()
+                self.images_path_dict, self.flag_image_info_dict = self.save_images()
+                self.replace_images_with_text()
+
+        else:
+            self.upload_minio = UploadMinio()
+            self.image_positions_dict = self.get_image_positions()
+            self.images_path_dict, self.flag_image_info_dict = self.save_images()
+            self.replace_images_with_text()
+
+    def file_path_process(self):
+        self.knowledge_id = self.file_json.get("knowledge_id")
+        self.document_id = self.file_json.get("document_id")
+        know_path = self.base_path + f"/{self.knowledge_id}"
+        
+        self.file_name = self.file_json.get("name")
+        self.output_pdf_name = "output_" + self.file_name
+        self.input_pdf_path = os.path.join(know_path, self.file_name)
+        self.output_pdf_path = os.path.join(know_path, self.output_pdf_name)
+        self.file_name_list = self.file_name.split(".")
+        self.image_dir = ".".join(self.file_name_list[:-1])
+        self.save_image_path = know_path + "/" + self.document_id
+    
+    def get_image_positions(self):
+        images_dict = {}
+        with pdfplumber.open(self.input_pdf_path) as pdf:
+            page_num = 0
+            for page in pdf.pages:
+                images_dict[page_num] = {}
+                image_num = 0
+                img_list = {}
+                img_list[image_num] = {}
+                for image in page.images:
+                    #print("Image position:", image)
+                    img_list[image_num] = {"x0":image['x0'],"y0":image['y0']}
+                    image_num += 1
+                    img_list[image_num] = {}
+                images_dict[page_num]=img_list
+                page_num += 1
+        # print(f"images list info: {images_dict}")
+        return images_dict
+    
+    def save_images(self):
+        # 创建图片保存目录
+        os.makedirs(self.save_image_path, exist_ok=True)
+        
+        # 使用PyMuPDF打开PDF文件
+        doc = fitz.open(self.input_pdf_path)
+        all_images_dict = {}
+        pdf_img_index = 1
+        flag_img_info = {}
+        for page_num in range(len(doc)):
+            page = doc.load_page(page_num)
+            images = page.get_images(full=True)
+            page_image_dict = {}
+            
+            for img_index, img in enumerate(images):
+                xref = img[0]  # 图片的XRef编号
+                base_image = doc.extract_image(xref)
+                image_bytes = base_image["image"]
+                
+                # 将字节数据转换为PIL图像
+                pil_image = Image.open(io.BytesIO(image_bytes))
+                
+                # 生成唯一文件名
+                # img_name = f"page{page_num+1}_img{img_index+1}.{base_image['ext']}"
+                img_name = f"{self.document_id}_{pdf_img_index}.{base_image['ext']}"
+                img_path = os.path.join(self.save_image_path, img_name)
+                
+                # page_image_dict[img_index] = img_path
+                # 保存成image_name
+                image_str = self.knowledge_id + "/" + self.document_id + "/" + img_name
+                replace_text = f"【示意图序号_{self.document_id}_{pdf_img_index}】"
+                page_image_dict[img_index] = replace_text  # 替换pdf中的文字
+
+                # 保存图片
+                pil_image.save(img_path)
+
+                # 保存的图片上传的oss
+                self.upload_minio.upload_file(img_path, f"/pdf/{image_str}")
+                minio_url = minio_config.get("minio_url")
+                minio_bucket = minio_config.get("minio_bucket")
+                flag_img_info[replace_text] = f"{minio_url}/{minio_bucket}//pdf/{image_str}"
+                pdf_img_index += 1
+                
+            all_images_dict[page_num] = page_image_dict
+        
+        # 关闭原始文档
+        doc.close()
+
+        return all_images_dict, flag_img_info
+    
+    def replace_images_with_text(self):
+        # 打开原始PDF
+        doc = fitz.open(self.input_pdf_path)
+        
+        # 设置字体大小
+        font_size = 12
+        font_name = "SimSun"
+        font_path = r"./utils/simsun.ttc"  # 当前系统中的字体路径
+
+        # 遍历每一页
+        for page_num in range(len(doc)):
+            page = doc.load_page(page_num)  # 获取页面
+            
+            images = page.get_images(full=True)  # 获取页面中的所有图片
+            page_height =  page.rect.height
+            # print("page_height: ", page_height)
+            
+            for img_index, img in enumerate(images):
+                xref = img[0]  # 图片的XRef编号
+                base_image = doc.extract_image(xref)  # 提取图片
+    
+                bbox = fitz.Rect(img[1:5])
+                # print("bbox: ", bbox)
+
+                # 删除图片
+                # page.delete_xref(xref)  # 删除图片
+                doc._deleteObject(img[0])
+                
+                # 准备替换文本
+                # replacement_text = f"page{page_num+1}_img{img_index+1}.png"
+                replacement_text = self.images_path_dict[page_num][img_index]
+                print(f"替换的文本:{replacement_text}")
+                
+                # 在删除的图片位置插入文本
+                try:
+                    
+                    x0 = self.image_positions_dict[page_num][img_index]['x0']
+                    y0 = page_height - self.image_positions_dict[page_num][img_index]['y0']
+
+                    # 插入文本坐标
+                    print(f"x0: {x0}, y0: {y0}")
+
+                    # 使用fitz中自带的字体 china-s 效果显示不友好,插入的字体一行铺满 fontname="china-s",
+                    page.insert_text((x0,y0), replacement_text,fontname=font_name, fontfile=font_path, fontsize=font_size, color=(0, 0, 0))
+                    #page.insert_text((x,y+y1), replacement_text, fontsize=font_size, color=(0, 0, 0))
+                except Exception as e:
+                    print(f"Error inserting text for image on page {page_num + 1}: {e}")
+            
+
+        # 保存修改后的PDF
+        doc.save(self.output_pdf_path)
+        doc.close()
+        print(f"Processed PDF saved to: {self.output_pdf_path}")
+
+    def file2text(self):
+        pdf_text = ""
+        with fitz.open(self.output_pdf_path) as doc:
+            for i, page in enumerate(doc):
+                text = page.get_text("text").strip()
+                lines = text.split("\n")
+                if len(lines) > 0 and lines[-1].strip().isdigit():
+                    text = "\n".join(lines[:-1])  # 移除最后一行
+
+                if len(lines) > 0 and lines[0].strip().isdigit():
+                    text = "\n".join(lines[1:])  # 移除第一行
+                # print(f"page text:{text.strip()}")
+                # pdf_text += text + "\n"
+                pdf_text += text
+        # print(pdf_text)
+        return pdf_text, self.flag_image_info_dict
+
+
+
+# class MinerUParsePdf():
+#     # def __init__(self, knowledge_id, minio_client):
+#     #     self.knowledge_id = knowledge_id
+#     #     self.minio_client = minio_client
+        
+#     async def extract_text(self, file_path):
+#         # pdf_file_name = file_path  
+#         # prepare env
+#         # local_image_dir = f"./tmp_file/{self.knowledge_id}/{doc_id}"
+#         local_image_dir = f"./tmp_file/images"
+#         image_dir = str(os.path.basename(local_image_dir))
+
+#         os.makedirs(local_image_dir, exist_ok=True)
+
+#         image_writer = FileBasedDataWriter(local_image_dir)
+
+#         # read bytes
+#         reader1 = FileBasedDataReader("")
+#         pdf_bytes = reader1.read(file_path)  # read the pdf content
+
+#         # proc
+#         ## Create Dataset Instance
+#         ds = PymuDocDataset(pdf_bytes)
+#         infer_result = ds.apply(doc_analyze, ocr=True)
+
+#         ## pipeline
+#         pipe_result = infer_result.pipe_ocr_mode(image_writer)
+#         content_list_content = pipe_result.get_content_list(image_dir)
+
+#         # image_num = 1
+#         # text = ""
+#         # flag_img_info = {}
+#         # current_page = ""
+#         # for i,content_dict in enumerate(content_list_content):
+#         #     page_index = content_dict.get("page_idx")
+#         #     if i == 0:
+#         #         current_page = page_index
+#         #     elif page_index != current_page:
+#         #         text += "<page>"
+#         #         current_page = page_index
+#         #     else:
+#         #         pass
+
+#         #     if content_dict.get("type") == "text":
+#         #         content_text = content_dict.get("text")
+#         #         text_level = content_dict.get("text_level")
+#         #         if text_level:
+#         #             text += "#" * text_level + content_text
+#         #         else:
+#         #             text += content_text
+
+#         #     elif content_dict.get("type") in ("image", "table"):
+#         #         image_path = content_dict.get("img_path")
+#         #         image_name = image_path.split("/")[1]
+#         #         save_image_path = local_image_dir + f"/{image_name}"
+#         #         replace_text = f"【示意图序号_{doc_id}_{image_num}】"
+#         #         minio_file_path = f"/pdf/{self.knowledge_id}/{doc_id}/{replace_text}.jpg"
+#         #         self.minio_client.upload_file(save_image_path, minio_file_path)
+#         #         minio_url = minio_config.get("minio_url")
+#         #         minio_bucket = minio_config.get("minio_bucket")
+#         #         flag_img_info[replace_text] = f"{minio_url}/{minio_bucket}/{minio_file_path}"
+#         #         text += replace_text
+#         #         image_num += 1
+            
+#         #     else:
+#         #         ...
+            
+
+#         return content_list_content
+                
+
+# import asyncio
+# import os
+# from mineru.cli.common import read_fn, prepare_env
+# from mineru.data.data_reader_writer import FileBasedDataWriter
+# from mineru.backend.vlm.vlm_analyze import aio_doc_analyze, ModelSingleton
+# from mineru.backend.vlm.vlm_middle_json_mkcontent import union_make
+# from mineru.utils.enum_class import MakeMode
+
+
+# class MinerUParsePdf:
+#     """
+#     MinerU 异步文档分析类
+#     封装了模型加载、PDF读取、图片抽取、内容生成等完整流程。
+#     """
+
+#     def __init__(self, gpu_id: int = 0, output_dir: str = "./tmp_file", backend: str = "vllm-async-engine"):
+#         """
+#         初始化 MinerU 分析器。
+
+#         Args:
+#             gpu_id (int): 指定使用的 GPU ID。
+#             output_dir (str): 临时输出目录,用于保存中间图片。
+#             backend (str): 使用的推理后端。
+#         """
+#         # GPU 环境变量(必须在模型加载前设置)
+#         os.environ["CUDA_VISIBLE_DEVICES"] = "2,3"
+#         os.environ["MINERU_MODEL_SOURCE"] = "modelscope"
+
+#         self.output_dir = output_dir
+#         self.backend = backend
+#         self.predictor = None  # 懒加载
+#         self.model_singleton = ModelSingleton()
+
+#     async def _ensure_model_loaded(self, gpu_memory_utilization: float = 0.5):
+#         """
+#         确保模型加载,仅在首次调用时加载一次。
+#         """
+#         if self.predictor is None:
+#             print("正在加载 MinerU 模型,请稍候...")
+#             self.predictor = self.model_singleton.get_model(
+#                 backend=self.backend,
+#                 model_path=None,
+#                 server_url=None,
+#                 gpu_memory_utilization=gpu_memory_utilization,
+#             )
+#             print("模型加载完成。")
+
+#     async def extract_text(self, pdf_path: str):
+#         """
+#         分析指定 PDF 文件,返回带图像信息的内容结构。
+
+#         Args:
+#             pdf_path (str): 要分析的 PDF 文件路径。
+
+#         Returns:
+#             list: 内容段落列表,包含图文信息。
+#         """
+#         await self._ensure_model_loaded()
+
+#         pdf_bytes = read_fn(pdf_path)
+#         local_image_dir, _ = prepare_env(self.output_dir, "document", "vlm")
+
+#         image_writer = FileBasedDataWriter(local_image_dir)
+
+#         print(f"正在解析文档: {pdf_path}")
+#         middle_json, infer_result = await aio_doc_analyze(
+#             pdf_bytes,
+#             image_writer=image_writer,
+#             predictor=self.predictor,
+#             backend=self.backend,
+#         )
+
+#         pdf_info = middle_json.get("pdf_info", {})
+#         content_list = union_make(pdf_info, MakeMode.CONTENT_LIST, img_buket_path="images")
+
+#         print("文档解析完成。")
+#         return content_list
+
+
+# # ====== 使用示例 ======
+# if __name__ == "__main__":
+#     async def main():
+#         analyzer = MinerUAsyncAnalyzer(gpu_id=2, output_dir="./temp_output")
+#         result = await analyzer.analyze_pdf("ceshi.pdf")
+#         print(result)
+
+#     asyncio.run(main())
+
+import asyncio  
+import os  
+from mineru.cli.common import read_fn, prepare_env  
+from mineru.data.data_reader_writer import FileBasedDataWriter  
+from mineru.backend.vlm.vlm_analyze import aio_doc_analyze, ModelSingleton  
+from mineru.backend.vlm.vlm_middle_json_mkcontent import union_make  
+from mineru.utils.enum_class import MakeMode  
+  
+  
+class MinerUParsePdf:  
+    """  
+    MinerU 异步文档分析类  
+    封装了模型加载、PDF读取、图片抽取、内容生成等完整流程。  
+    """  
+  
+    def __init__(self, output_dir: str = "./tmp_file", server_url: str = "http://127.0.0.1:9999"):  
+        """  
+        初始化 MinerU 分析器。  
+  
+        Args:  
+            output_dir (str): 临时输出目录,用于保存中间图片。  
+            server_url (str): vLLM 服务器地址。  
+        """  
+        # 客户端不需要 GPU 环境变量  
+        os.environ["MINERU_MODEL_SOURCE"] = "modelscope"  
+  
+        self.output_dir = output_dir  
+        self.backend = "http-client"  # 使用 HTTP 客户端后端  
+        self.server_url = server_url  
+        self.predictor = None  # 懒加载  
+        self.model_singleton = ModelSingleton()  
+  
+    async def _ensure_model_loaded(self):  
+        """  
+        确保 HTTP 客户端连接建立,仅在首次调用时初始化一次。  
+        """  
+        if self.predictor is None:  
+            print(f"正在连接 vLLM 服务器: {self.server_url}...")  
+            self.predictor = self.model_singleton.get_model(  
+                backend=self.backend,  
+                model_path=None,  
+                server_url=self.server_url,  
+            )  
+            print("服务器连接成功。")  
+  
+    async def extract_text(self, pdf_path: str):  
+        """  
+        分析指定 PDF 文件,返回带图像信息的内容结构。  
+  
+        Args:  
+            pdf_path (str): 要分析的 PDF 文件路径。  
+  
+        Returns:  
+            list: 内容段落列表,包含图文信息。  
+        """  
+        await self._ensure_model_loaded()  
+  
+        pdf_bytes = read_fn(pdf_path)  
+        local_image_dir, _ = prepare_env(self.output_dir, "document", "vlm")  
+  
+        image_writer = FileBasedDataWriter(local_image_dir)  
+  
+        print(f"正在解析文档: {pdf_path}")  
+        middle_json, infer_result = await aio_doc_analyze(  
+            pdf_bytes,  
+            image_writer=image_writer,  
+            predictor=self.predictor,  
+            backend=self.backend,  
+        )  
+  
+        pdf_info = middle_json.get("pdf_info", {})  
+        content_list = union_make(pdf_info, MakeMode.CONTENT_LIST, img_buket_path="images")  
+  
+        print("文档解析完成。")  
+        return content_list
+
+
+
+if __name__ == "__main__":
+    # input_pdf = r"G:/work/资料/5.1 BMP业务系统使用手册 - 切片.pdf"
+    # output_pdf = "./output.pdf"
+    # image_folder = "./extracted_images"
+    file_json = {
+        "knowledge_id": "1234",
+        "name": "5.1 BMP业务系统使用手册 - 切片.pdf",
+        "document_id": "2222"
+    }
+    loader = PDFLoader(file_json)
+    loader.replace_images_with_text()

+ 9 - 0
rag/document_load/txt_load.py

@@ -0,0 +1,9 @@
+class TextLoad:
+    def __init__(self):
+        pass
+        
+    async def extract_text(self, file_path):
+        with open(file_path, "r", encoding="utf-8") as f:
+            content = f.read()
+
+        return content

+ 787 - 0
rag/documents_process.py

@@ -0,0 +1,787 @@
+import aiohttp
+import aiofiles
+import requests
+from rag.db import MilvusOperate, MysqlOperate
+from rag.task_registry import task_registry, TaskCancelledException
+from rag.document_load.pdf_load import MinerUParsePdf
+from rag.document_load.office_load import MinerUParseOffice
+from rag.document_load.txt_load import TextLoad
+from rag.document_load.image_load import MinerUParseImage
+from utils.upload_file_to_oss import UploadMinio
+from utils.get_logger import setup_logger
+from config import minio_config
+import os
+import time
+from uuid import uuid1
+from langchain_text_splitters import RecursiveCharacterTextSplitter
+
+from rag.document_load.document_format_conversion import *
+import re
+from typing import List
+
+
+pdf_parse = MinerUParsePdf()
+office_parse = MinerUParseOffice()
+text_parse = TextLoad()
+image_parse = MinerUParseImage()
+logger = setup_logger(__name__)
+
+
+class ProcessDocuments():
+    def __init__(self, file_json):
+        self.file_json = file_json
+        self.knowledge_id = self.file_json.get("knowledge_id")
+        self.mysql_client = MysqlOperate()
+        self.minio_client = UploadMinio()
+        self.milvus_client = MilvusOperate(collection_name=self.knowledge_id)
+
+    # def _get_file_type(self, name):
+    #     if name.endswith(".txt"):
+    #         return text_parse
+    #     elif name.endswith('.pdf'):
+    #         return pdf_parse
+    #     elif name.endswith((".doc", ".docx", "ppt", "pptx")):
+    #         return office_parse
+    #     elif name.endswith((".jpg", "png", "jpeg")):
+    #         return image_parse
+    #     else:
+    #         raise "不支持的文件格式"
+
+    # 只接收txt和pdf格式
+    def _get_file_type(self, name):
+        if name.endswith(".txt"):
+            return text_parse
+        elif name.endswith('.pdf'):
+            return pdf_parse
+        
+    # async def save_file_temp(self, session, url, name):
+    #     down_file_path = "./tmp_file" + f"/{self.knowledge_id}"
+    #     # down_file_path = "./tmp_file"
+    #     os.makedirs(down_file_path, exist_ok=True)
+
+    #     down_file_name = down_file_path + f"/{name}"
+    #     # if os.path.exists(down_file_name):
+    #     #     pass
+    #     # else:
+    #     async with session.get(url, ssl=False) as resp:
+    #         resp.raise_for_status()
+    #         content_length = resp.headers.get('Content-Length')
+    #         if content_length:
+    #             file_size = int(content_length)
+    #         else:
+    #             file_size = 0
+    #         async with aiofiles.open(down_file_name, 'wb') as f:
+    #             async for chunk in resp.content.iter_chunked(1024):
+    #                 await f.write(chunk)
+
+    async def save_file_temp(self, session, url, name, max_retries=3):
+        down_file_path = "./tmp_file" + f"/{self.knowledge_id}"
+        os.makedirs(down_file_path, exist_ok=True)
+
+        down_file_name = down_file_path + f"/{name}"
+
+        attempt = 0
+        while attempt < max_retries:
+            try:
+                async with session.get(url, ssl=False) as resp:
+                    resp.raise_for_status()
+
+                    content_length = resp.headers.get('Content-Length')
+                    file_size = int(content_length) if content_length else 0
+
+                    async with aiofiles.open(down_file_name, 'wb') as f:
+                        async for chunk in resp.content.iter_chunked(1024):
+                            await f.write(chunk)
+
+                # 成功就 return
+                return down_file_name, file_size
+
+            except Exception as e:
+                attempt += 1
+                # 最后一次失败直接抛出
+                if attempt >= max_retries:
+                    raise
+
+                # 指数退避:0.5s ~ 3s 内,随机涨
+                wait = min(3, 0.5 * (2 ** attempt) + random.random())
+                await asyncio.sleep(wait)
+
+
+            return down_file_name, file_size
+
+    def send_post_request_sync(self, url, json_data=None, headers=None, timeout=30):
+        """
+        同步发送POST请求
+        
+        参数:
+            url: 请求的URL地址
+            json_data: JSON格式的请求体数据(字典类型)
+            headers: 可选的请求头字典
+            timeout: 请求超时时间(秒),默认30秒
+        
+        返回:
+            dict: 包含状态码、响应数据等信息
+        """
+        try:
+            # 设置默认的Content-Type为application/json
+            if headers is None:
+                headers = {}
+            if 'Content-Type' not in headers:
+                headers['Content-Type'] = 'application/json'
+            
+            resp = requests.post(url, json=json_data, headers=headers, timeout=timeout, verify=False)
+            status_code = resp.status_code
+            response_data = resp.text
+            logger.info(f"同步POST请求成功 [url={url}]: {response_data} json_data={json_data}")
+            return {
+                "code": 200,
+                "status_code": status_code,
+                "data": response_data,
+                "message": "POST请求成功"
+            }
+        except requests.exceptions.Timeout as e:
+            logger.error(f"同步POST请求超时 [url={url}]: {e}")
+            return {
+                "code": 500,
+                "message": f"POST请求超时: {str(e)}"
+            }
+        except requests.exceptions.RequestException as e:
+            logger.error(f"同步POST请求失败 [url={url}]: {e}")
+            return {
+                "code": 500,
+                "message": f"POST请求失败: {str(e)}"
+            }
+
+
+    def file_split_by_len(self, file_text):
+        split_map = {
+            "0": ["#"],  # 按标题段落切片
+            "1": ["<page>"],  # 按页切片
+            "2": ["\n"]   # 按问答对
+        }
+        separator_num = self.file_json.get("set_slice")
+        slice_value = self.file_json.get("slice_value", "").replace("\\n", "\n")
+        separator = split_map.get(separator_num) if split_map.get(separator_num) else [slice_value]
+        logger.info(f"文本切分字符:{separator}")
+        text_split = RecursiveCharacterTextSplitter(
+            separators=separator,
+            chunk_size=500,
+            chunk_overlap=40,
+            length_function=len
+        )
+        texts = text_split.split_text(file_text)
+        return texts
+    
+    def split_text(self, file_text):
+        text_split = RecursiveCharacterTextSplitter(
+            separators=["\n\n", "\n"],
+            chunk_size=500,
+            chunk_overlap=40,
+            length_function=len
+        )
+        texts = text_split.split_text(file_text)
+        return texts
+
+    def chunk_text_for_rag(self, text: str, max_chars: int = 20000) -> List[str]:
+        """
+        分割长文本
+        
+        参数:
+            text: 输入的长文本字符串
+            max_chars: 每块的最大字符数,默认20000
+        
+        返回:
+            List[str]: 分割后的文本块列表
+        
+        分割规则:
+        1. 在标签x.x(如1.1, 2.3等)处分割
+        2. 下一块包含上一块最后一个x.x标签的完整内容(重叠)
+        3. 如果没有x.x标签或加上重叠内容超过max_chars,则按句号"。"分割
+        """
+        
+        if len(text) <= max_chars:
+            return [text]
+        
+        chunks = []
+        start_idx = 0
+        
+        while start_idx < len(text):
+            # 确定当前块的结束位置
+            end_idx = min(start_idx + max_chars, len(text))
+            
+            if end_idx >= len(text):
+                # 最后一块,直接添加
+                chunks.append(text[start_idx:])
+                break
+            
+            # 在当前块范围内查找x.x标签
+            current_chunk = text[start_idx:end_idx]
+            split_pos, overlap_content = self.find_split_point(current_chunk, text, start_idx)
+            
+            if split_pos is not None:
+                # 找到了合适的x.x标签分割点
+                actual_end = start_idx + split_pos
+                
+                # 检查加上重叠内容是否超过限制
+                if overlap_content and len(current_chunk[:split_pos]) + len(overlap_content) <= max_chars:
+                    chunks.append(text[start_idx:actual_end])
+                    # 下一块从重叠内容的起始位置开始
+                    overlap_start = text.rfind(overlap_content, start_idx, actual_end)
+                    if overlap_start != -1:
+                        start_idx = overlap_start
+                    else:
+                        start_idx = actual_end
+                else:
+                    # 重叠内容过长,使用句号分割
+                    split_pos, overlap_content = self.find_split_by_period(current_chunk, text, start_idx)
+                    if split_pos is not None:
+                        actual_end = start_idx + split_pos
+                        chunks.append(text[start_idx:actual_end])
+                        if overlap_content:
+                            overlap_start = text.rfind(overlap_content, start_idx, actual_end)
+                            start_idx = overlap_start if overlap_start != -1 else actual_end
+                        else:
+                            start_idx = actual_end
+                    else:
+                        # 连句号都找不到,强制分割
+                        chunks.append(text[start_idx:end_idx])
+                        start_idx = end_idx
+            else:
+                # 没有找到x.x标签,使用句号分割
+                split_pos, overlap_content = self.find_split_by_period(current_chunk, text, start_idx)
+                if split_pos is not None:
+                    actual_end = start_idx + split_pos
+                    chunks.append(text[start_idx:actual_end])
+                    if overlap_content:
+                        overlap_start = text.rfind(overlap_content, start_idx, actual_end)
+                        start_idx = overlap_start if overlap_start != -1 else actual_end
+                    else:
+                        start_idx = actual_end
+                else:
+                    # 连句号都找不到,强制分割
+                    chunks.append(text[start_idx:end_idx])
+                    start_idx = end_idx
+        
+        return chunks
+
+
+    def find_split_point(self, chunk: str, full_text: str, chunk_start: int):
+        """
+        在块中查找最近的x.x标签作为分割点
+        
+        返回:
+            (split_position, overlap_content): 分割位置和重叠内容
+        """
+        # 匹配x.x格式的标签(如1.1, 2.3, 10.5等)
+        pattern = r'\d+\.\d+'
+        # pattern = r'\b\d+\.\d+\b'
+        matches = list(re.finditer(pattern, chunk))
+        
+        if not matches:
+            return None, None
+        
+        # 找最后一个匹配的标签
+        last_match = matches[-1]
+        tag_start = last_match.start()
+        
+        # 提取该标签的完整内容(从标签到下一个标签或块尾)
+        tag_content_start = chunk_start + tag_start
+        
+        # 在全文中查找下一个x.x标签
+        remaining_text = full_text[tag_content_start:]
+        next_tag_match = re.search(pattern, remaining_text[len(last_match.group()):])
+        
+        if next_tag_match:
+            tag_content_end = tag_content_start + len(last_match.group()) + next_tag_match.start()
+        else:
+            tag_content_end = len(full_text)
+        
+        overlap_content = full_text[tag_content_start:tag_content_end]
+        
+        # 检查重叠内容长度
+        if len(overlap_content) > 20000:
+            # 重叠内容本身超过限制,返回None使用句号分割
+            return None, None
+        
+        return tag_start, overlap_content
+
+
+    def find_split_by_period(self, chunk: str, full_text: str, chunk_start: int):
+        """
+        按句号"。"查找分割点
+        
+        返回:
+            (split_position, overlap_content): 分割位置和重叠内容
+        """
+        # 从后向前查找句号
+        last_period = chunk.rfind('。')
+        
+        if last_period == -1:
+            return None, None
+        
+        # 分割点是句号之后
+        split_pos = last_period + 1
+        
+        # 查找这个句子的开始位置作为重叠内容
+        # 向前查找上一个句号
+        prev_period = chunk.rfind('。', 0, last_period)
+        
+        if prev_period != -1:
+            overlap_start = prev_period + 1
+            overlap_content = chunk[overlap_start:split_pos]
+        else:
+            # 如果前面没有句号,则从块开始到当前句号
+            overlap_content = chunk[:split_pos]
+        
+        # 检查重叠内容长度
+        if len(overlap_content) > 20000:
+            overlap_content = ""
+        
+        return split_pos, overlap_content
+
+    def split_by_title(self, file_content_list, set_table, doc_id):
+        # TODO 处理根据标题切分逻辑 图片替换标识符,表格按照set table 0图片,1html数据
+        text_lists = []
+        text = ""
+        image_num = 1
+        flag_img_info = {}
+        level_1_text = ""
+        level_2_text = ""
+        for i, content_dict in enumerate(file_content_list):
+            text_type = content_dict.get("type")
+            content_text = content_dict.get("text")
+            if text_type == "text":
+                text_level = content_dict.get("text_level", "")
+                if text_level == 1:
+                    if not level_1_text:
+                        level_1_text = f"# {content_text}\n"
+                        text += f"# {content_text}\n"
+                    else:
+                        if len(text) >20000:
+                            text_chunks = self.chunk_text_for_rag(text)
+                            text_lists.extend(text_chunks)
+                        else:
+                            text_lists.append(text)
+                        text = f"# {content_text}\n"
+                        level_1_text = f"# {content_text}\n"
+                        level_2_text = ""
+
+                elif text_level == 2:
+                    if not level_2_text:
+                        text += f"## {content_text}\n"
+                        level_2_text = f"## {content_text}\n"
+                    else:
+                        if len(text) >20000:
+                            text_chunks = self.chunk_text_for_rag(text)
+                            text_lists.extend(text_chunks)
+                        else:
+                            text_lists.append(text)
+                        text = level_1_text + f"## {content_text}\n"
+                else:
+                    if text_level:
+                        text += text_level*"#" + " " + content_text + "\n"
+                    else:
+                        text += content_text
+
+            elif text_type == "table" and set_table == "1":
+                text += " ".join(content_dict.get("table_caption")) + '\n'
+                text += content_dict.get("table_body") + '\n'
+
+            elif text_type in ("image", "table"):
+
+                image_path = content_dict.get("img_path")
+                if not image_path:
+                    continue
+                image_name = image_path.split("/")[1]
+                # save_image_path = "./tmp_file/images/" + f"/{image_name}"
+                save_image_path = "./tmp_file/document/vlm/images" + f"/{image_name}"
+                replace_text = f"【示意图序号_{doc_id}_{image_num}】"
+                minio_file_path = f"/pdf/{self.knowledge_id}/{doc_id}/{replace_text}.jpg"
+                self.minio_client.upload_file(save_image_path, minio_file_path)
+                minio_url = minio_config.get("minio_url")
+                minio_bucket = minio_config.get("minio_bucket")
+                flag_img_info[replace_text] = f"{minio_url}/{minio_bucket}/{minio_file_path}"
+
+                if text_type == "table":
+                    text += " ".join(content_dict.get("table_caption")) + '\n'
+                text += replace_text
+                image_num += 1
+            if i+1 == len(file_content_list):
+                text_lists.append(text)
+            
+            elif text_type == "list":
+                list_items = content_dict.get("list_items")
+                if list_items:
+                    text += "\n".join(list_items) + "\n"
+        return text_lists, flag_img_info
+    
+    def split_by_page(self, file_content_list, set_table, doc_id):
+        # TODO 处理按照页面切分,图片处理成标识符,表格按照set table 0图片,1html数据
+        text_lists = []
+        current_page = ""
+        text = ""
+        image_num = 1
+        flag_img_info = {}
+        for i,content_dict in enumerate(file_content_list):
+                page_index = content_dict.get("page_idx")
+                if i == 0:
+                    current_page = page_index
+                elif page_index != current_page:
+                    text_lists.append(text)
+                    text = ""
+                    current_page = page_index
+
+                text_type = content_dict.get("type")
+                if text_type == "text":
+                    content_text = content_dict.get("text")
+                    text_level = content_dict.get("text_level")
+                    if text_level:
+                        text += "#" * text_level + " " + content_text
+                    else:
+                        text += content_text
+
+                elif text_type == "table" and set_table == "1":
+                    text += content_dict.get("table_body")
+
+                elif text_type in ("image", "table"):
+                    image_path = content_dict.get("img_path")
+                    image_name = image_path.split("/")[1]
+                    # save_image_path = "./tmp_file/images/" + f"/{image_name}"
+                    save_image_path = "./tmp_file/document/vlm/images" + f"/{image_name}"
+                    replace_text = f"【示意图序号_{doc_id}_{image_num}】"
+                    minio_file_path = f"/pdf/{self.knowledge_id}/{doc_id}/{replace_text}.jpg"
+                    self.minio_client.upload_file(save_image_path, minio_file_path)
+                    minio_url = minio_config.get("minio_url")
+                    minio_bucket = minio_config.get("minio_bucket")
+                    flag_img_info[replace_text] = f"{minio_url}/{minio_bucket}/{minio_file_path}"
+                    text += replace_text
+                    image_num += 1
+                if i+1 == len(file_content_list):
+                    text_lists.append(text)
+        return text_lists, flag_img_info
+
+    def split_by_self(self, file_content_list, set_table, slice_value, doc_id):
+        # TODO 按照自定义的符号切分,图片处理成标识符,表格按照set table 0图片,1html数据,长度控制500以内,超过500切断
+        logger.info(f"自定义的分隔符:{slice_value}")
+        text = ""
+        image_num = 1
+        flag_img_info = {}
+        for i, content_dict in enumerate(file_content_list):
+            text_type = content_dict.get("type")
+            if text_type == "text":
+                content_text = content_dict.get("text")
+                text_level = content_dict.get("text_level")
+                if text_level:
+                    text += "#" * text_level + " " + content_text
+                else:
+                    text += content_text
+
+            elif text_type == "table" and set_table == "1":
+                text += content_dict.get("table_body")
+
+            elif text_type in ("image", "table"):
+                image_path = content_dict.get("img_path")
+                image_name = image_path.split("/")[1]
+                # save_image_path = "./tmp_file/images/" + f"/{image_name}"
+                save_image_path = "./tmp_file/document/vlm/images" + f"/{image_name}"
+                replace_text = f"【示意图序号_{doc_id}_{image_num}】"
+                minio_file_path = f"/pdf/{self.knowledge_id}/{doc_id}/{replace_text}.jpg"
+                self.minio_client.upload_file(save_image_path, minio_file_path)
+                minio_url = minio_config.get("minio_url")
+                minio_bucket = minio_config.get("minio_bucket")
+                flag_img_info[replace_text] = f"{minio_url}/{minio_bucket}/{minio_file_path}"
+                text += replace_text
+                image_num += 1
+
+        split_lists = text.split(slice_value)
+        text_lists = []
+        for split_text in split_lists:
+            r = len(split_text)//500
+            if r >= 1:
+                for i in range(r+1):
+                    t = split_text[i*500:(i+1)*500]
+                    if t:
+                        text_lists.append(t)
+            else:
+                text_lists.append(split_text)
+                
+        return text_lists, flag_img_info
+
+    def file_split(self, file_content_list, doc_id):
+        # TODO 根据文本列表进行切分 返回切分列表和存储图片的链接
+        separator_num = self.file_json.get("set_slice")
+        set_table = self.file_json.get("set_table")
+        # separator = split_map.get(separator_num) if split_map.get(separator_num) else [slice_value]
+        # logger.info(f"文本切分字符:{separator}")
+        if isinstance(file_content_list, str):
+            file_text = file_content_list
+            text_lists = self.split_text(file_text)
+            return text_lists, {}
+
+        elif separator_num == "0":
+            # 使用标题段落切分,使用text_level=1,2 切分即一个# 还是两个#
+            text_lists, flag_img_info = self.split_by_title(file_content_list, set_table, doc_id)
+            return text_lists, flag_img_info
+        elif separator_num == "1":
+            # 按照页面方式切分
+            text_lists, flag_img_info = self.split_by_page(file_content_list, set_table, doc_id)
+            return text_lists, flag_img_info
+        elif separator_num == "2":
+            # 按照问答对切分 针对exce文档,暂不实现
+            return [], {}
+        else:
+            # 自定义切分的方式,按照自定义字符以及文本长度切分,超过500
+            slice_value = self.file_json.get("slice_value", "").replace("\\n", "\n")
+            text_lists, flag_img_info = self.split_by_self(file_content_list, set_table, slice_value, doc_id)
+            return text_lists, flag_img_info
+
+    
+    def process_data_to_milvus_schema(self, text_lists, doc_id, name):
+        """组织数据格式:
+            {
+                "content": text,
+                "doc_id": doc_id,
+                "chunk_id": chunk_id,
+                "metadata": {"source": file_name},
+            }
+        """
+        docs = []
+        total_len = 0
+        for i, text in enumerate(text_lists):
+            chunk_id = str(uuid1())
+            chunk_len = len(text)
+            total_len += chunk_len
+            d = {
+                "content": text,
+                "doc_id": doc_id,
+                "chunk_id": chunk_id,
+                "metadata": {"source": name, "chunk_index": i+1, "chunk_len": chunk_len}
+            }
+            docs.append(d)
+        return docs, total_len
+    
+    async def process_documents(self, file_json):
+
+        user_id = file_json.get("userId", "")
+        
+        task_id = file_json.get("docs", "")[0].get("document_id")
+
+        # ===== 注册任务到全局任务表 =====
+        task_ctx = None
+        if task_id:
+            task_ctx = task_registry.register(task_id, user_id, self.knowledge_id)
+        
+        # 启动进度(独立线程)
+        reporter = None
+        if task_id:
+            from rag.progress_reporter import ProgressReporter
+            from config import progress_callback_config
+            estimate_seconds = progress_callback_config.get("estimate_seconds", 120)
+            callback_url = progress_callback_config.get("default_url")
+            reporter = ProgressReporter(task_id, callback_url, estimate_seconds, user_id)
+            reporter.start()
+            
+            # 关联 reporter 到任务上下文(用于取消时停止进度上报)
+            if task_ctx:
+                task_ctx.reporter = reporter
+        
+        # 初始化成功文档列表(在 try 外面定义,确保异常处理时可访问)
+        success_doc = []
+        
+        try:
+            # 文档下载
+            separator_num = file_json.get("set_slice")
+            if separator_num == "2":
+                if reporter:
+                    reporter.complete(success=False)
+                return {"code": 500, "message": "暂不支持解析"}
+            docs = file_json.get("docs")
+            flag = file_json.get("flag")
+            for doc in docs:
+                # ===== 检查点1:每个文档处理前检查取消标志 =====
+                if task_ctx and task_ctx.is_cancelled:
+                    logger.info(f"任务 {task_id} 在文档处理前被取消")
+                    raise TaskCancelledException("任务已被用户取消")
+                
+                url = doc.get("url")
+                name = doc.get("name")
+                doc_id = doc.get("document_id")
+                async with aiohttp.ClientSession() as session:
+                    down_file_name, file_size = await self.save_file_temp(session, url, name)
+                    # 只接收txt和pdf格式,其它格式统一转换成pdf,不支持格式在convert_to_pdf中判断
+                    if not os.path.exists(down_file_name):
+                        down_file_name, file_size = await self.save_file_temp(session, url, name)
+                        logger.info(f'{doc_id}文件下载失败,重试中~')
+
+                    logger.info(f'下载文件路径:{down_file_name}')
+
+                    if not name.endswith(".txt") and not name.endswith('.pdf'):
+                        down_file_name = convert_to_pdf(down_file_name)
+                        name = os.path.basename(down_file_name)
+                
+                file_parse = self._get_file_type(name)
+
+                file_content_list = await file_parse.extract_text(down_file_name)
+                logger.info(f"mineru解析的pdf数据:{file_content_list}")
+
+                text_lists, flag_img_info = self.file_split(file_content_list, doc_id)
+                
+                docs, total_char_len = self.process_data_to_milvus_schema(text_lists, doc_id, name)
+                logger.info(f"存储到milvus的文本数据:{docs}")
+                
+                # ===== 检查点2:解析完成、入库前检查取消标志 =====
+                if task_ctx and task_ctx.is_cancelled:
+                    logger.info(f"任务 {task_id} 在入库前被取消,无需清理数据库")
+                    raise TaskCancelledException("任务已被用户取消")
+                
+                if flag == "upload":
+                    # 插入到milvus库中
+                    insert_slice_flag, insert_mysql_info = self.mysql_client.insert_to_slice(docs, self.knowledge_id, doc_id)
+                    
+                    if insert_slice_flag:
+                        # 插入到mysql的slice info数据库中
+                        insert_img_flag, insert_mysql_info =  self.mysql_client.insert_to_image_url(flag_img_info, self.knowledge_id, doc_id)
+                    else:
+                        insert_img_flag = False
+                        parse_file_status = False
+
+                    if insert_img_flag:
+                        insert_milvus_flag, insert_milvus_str = self.milvus_client._insert_data(docs)
+                        # 插入mysql中的bm_media_replacement表中
+                    else:
+                        # self.milvus_client._delete_by_doc_id(doc_id=doc_id)
+                        insert_milvus_flag = False
+
+                        # return resp
+                        parse_file_status = False
+
+                    if insert_milvus_flag:
+                        parse_file_status = True
+                        
+                        # ===== 检查点3:入库后检查取消标志,若取消则清理已插入数据 =====
+                        if task_ctx and task_ctx.is_cancelled:
+                            logger.info(f"任务 {task_id} 在入库后被取消,清理已插入数据: doc_id={doc_id}")
+                            self.milvus_client._delete_by_doc_id(doc_id=doc_id)
+                            self.mysql_client.delete_to_slice(doc_id=doc_id)
+                            self.mysql_client.delete_image_url(doc_id=doc_id)
+                            raise TaskCancelledException("任务已被用户取消")
+                    
+                    else:
+                        self.mysql_client.delete_to_slice(doc_id=doc_id)
+                        # self.milvus_client._delete_by_doc_id(doc_id=doc_id)
+                        self.mysql_client.delete_image_url(doc_id=doc_id)
+                        # resp = {"code": 500, "message": insert_mysql_info}
+                        parse_file_status = False
+
+                    # return resp
+                
+                elif flag == "update":  # 更新切片方式
+                    # 先把库中的数据删除
+                    self.milvus_client._delete_by_doc_id(doc_id=doc_id)
+                    self.mysql_client.delete_to_slice(doc_id=doc_id)
+
+                    insert_milvus_start_time = time.time()
+                    insert_slice_flag, insert_mysql_info = self.mysql_client.insert_to_slice(docs, self.knowledge_id, doc_id)
+                    # insert_milvus_flag, insert_milvus_str = self.milvus_client._batch_insert_data(docs,text_lists)
+                    insert_milvus_end_time = time.time()
+                    logger.info(f"插入milvus数据库耗时:{insert_milvus_end_time - insert_milvus_start_time}")
+
+                    if insert_slice_flag:
+                        # 插入到mysql的slice info数据库中
+                        insert_mysql_start_time = time.time()
+                        insert_milvus_flag, insert_milvus_str = self.milvus_client._insert_data(docs)
+                        insert_mysql_end_time = time.time()
+                        logger.info(f"插入mysql数据库耗时:{insert_mysql_end_time - insert_mysql_start_time}")
+                    else:
+                        # resp = {"code": 500, "message": insert_milvus_str}
+                        # return resp
+                        insert_milvus_flag = False
+                        parse_file_status = False
+                    
+                    if insert_milvus_flag:
+                        # resp = {"code": 200, "message": "切片修改成功"}
+                        parse_file_status = True
+                        
+                        # ===== 检查点3:入库后检查取消标志,若取消则清理已插入数据 =====
+                        if task_ctx and task_ctx.is_cancelled:
+                            logger.info(f"任务 {task_id} 在入库后被取消,清理已插入数据: doc_id={doc_id}")
+                            self.milvus_client._delete_by_doc_id(doc_id=doc_id)
+                            self.mysql_client.delete_to_slice(doc_id=doc_id)
+                            raise TaskCancelledException("任务已被用户取消")
+                    
+                    else:
+                        self.mysql_client.delete_to_slice(doc_id=doc_id)
+                        # self.milvus_client._delete_by_doc_id(doc_id=doc_id)
+                        # resp = {"code":500, "message": insert_mysql_info}
+                        parse_file_status = False
+
+                    # return resp
+
+                if parse_file_status:
+                    success_doc.append(doc_id)
+                else:
+                    if flag == "upload":
+                        for del_id in success_doc:
+                            self.milvus_client._delete_by_doc_id(doc_id=del_id)
+                            self.mysql_client.delete_image_url(doc_id=del_id)
+                            self.mysql_client.delete_to_slice(doc_id=del_id)
+                    
+                    if reporter:
+                        reporter.complete(success=False)
+
+                    self.send_post_request_sync("http://10.10.10.2:8091/deepseek/api/updateDocumentByPython",{"status":"2","documentId": file_json.get("docs")[0].get("document_id")})
+
+
+                    return {"code": 500, "message": "解析失败", "knowledge_id" : self.knowledge_id, "doc_info": {}}
+            
+
+            self.send_post_request_sync("http://10.10.10.2:8091/deepseek/api/updateDocumentByPython", {"knowledgeId": self.knowledge_id,"documentId": file_json.get("docs")[0].get("document_id"), "length": file_size, "wordNum": total_char_len, "sliceTotal": len(text_lists), "status":"1"})
+
+
+            # 任务完成:发送100%进度
+            if reporter:
+                reporter.complete(success=True)
+
+            return {"code": 200, "message": "解析成功", "knowledge_id" : self.knowledge_id, "doc_info": {"file_size": file_size, "total_char_len": total_char_len, "slice_num": len(text_lists)}}
+        
+        except TaskCancelledException as e:
+            # ===== 处理任务取消异常 =====
+            logger.info(f"任务被取消 [task_id={task_id}]: {e}")
+
+            self.send_post_request_sync("http://10.10.10.2:8091/deepseek/api/updateDocumentByPython",{"status":"2","documentId": file_json.get("docs")[0].get("document_id")})
+
+            # if task_id:
+            #     del_success, del_info = self.mysql_client.delete_document(task_id)
+            #     if del_success:
+            #         logger.info(f"已删除 bm_document 记录: task_id={task_id}")
+            #     else:
+            #         logger.warning(f"删除 bm_document 记录失败: {del_info}")
+
+            # 清理之前已成功处理的文档数据(slice、image、milvus)
+            for del_id in success_doc:
+                logger.info(f"清理已入库的文档数据: doc_id={del_id}")
+                self.milvus_client._delete_by_doc_id(doc_id=del_id)
+                self.mysql_client.delete_image_url(doc_id=del_id)
+                self.mysql_client.delete_to_slice(doc_id=del_id)
+            
+            if reporter:
+                reporter.complete(success=False)
+            
+            return {"code": 499, "message": "任务已取消", "knowledge_id": self.knowledge_id, "doc_info": {}}
+        
+        except Exception as e:
+            # 捕获所有异常,统一处理
+            logger.error(f"文件处理异常 [task_id={task_id}]: {e}", exc_info=True)
+            
+            self.send_post_request_sync("http://10.10.10.2:8091/deepseek/api/updateDocumentByPython",{"status":"2","documentId": file_json.get("docs")[0].get("document_id")})
+
+
+            if reporter:
+                reporter.complete(success=False)
+            
+            return {"code": 500, "message": "error", "knowledge_id": self.knowledge_id, "doc_info": {}}
+        
+        finally:
+            # ===== 注销任务 =====
+            if task_id:
+                task_registry.unregister(task_id)

+ 184 - 0
rag/file_process.py

@@ -0,0 +1,184 @@
+import requests
+from fastapi import HTTPException
+from typing import List, Dict
+import os
+from uuid import uuid1
+import uuid
+from rag.document_load.pdf_load import PDFLoader
+from rag.document_load.txt_load import TextLoad
+from langchain_text_splitters import RecursiveCharacterTextSplitter
+from rag.db import MilvusOperate, MysqlOperate
+import httpx
+import time
+from utils.get_logger import setup_logger
+
+logger = setup_logger(__name__)
+
+
+file_dict = {
+    "pdf": PDFLoader,
+    # "txt": TextLoad
+}
+
+class ParseFile:
+    def __init__(self, file_json):
+        self.file_json = file_json
+        self.file_name = self.file_json.get("name")
+        # self.file_url = self.file_json
+        self.file_list = self.file_json.get("name").split(".")
+        file_type = self.file_list[1]
+        self.flag = self.file_json.get("flag")
+        self.knowledge_id = self.file_json.get("knowledge_id")
+        self.doc_id = self.file_json.get("document_id")
+        self.save_file_to_tmp()
+        self.load_file = file_dict.get(file_type, PDFLoader)(self.file_json)
+        self.mysql_client = MysqlOperate()
+        self.milvus_client = MilvusOperate(collection_name=self.knowledge_id)
+
+    def save_file_to_tmp(self):
+        # 远程文件存到本地处理
+        url = self.file_json.get("url")
+
+        know_path = "./tmp_file" + f"/{self.knowledge_id}"
+        os.makedirs(know_path, exist_ok=True)
+        tmp_file_name = f"./tmp_file/{self.knowledge_id}/{self.file_name}"
+
+        if self.flag == "upload":
+            file_response = requests.get(url=url)
+            with open(tmp_file_name, "wb") as f:
+                f.write(file_response.content)
+        elif self.flag == "update":
+            if os.path.exists(tmp_file_name):
+                pass
+            else:
+                file_response = requests.get(url=url)
+                with open(tmp_file_name, "wb") as f:
+                    f.write(file_response.content)
+
+        # return file_name
+
+
+    def file_split(self, file_text):
+        split_map = {
+            "0": ["\n"],
+            "1": ["\n"],
+            "2": ["\n"]
+        }
+        separator_num = self.file_json.get("set_slice")
+        slice_value = self.file_json.get("slice_value", "").replace("\\n", "\n")
+        separator = split_map.get(separator_num) if split_map.get(separator_num) else [slice_value]
+        logger.info(f"文本切分字符:{separator}")
+        text_split = RecursiveCharacterTextSplitter(
+            separators=separator,
+            chunk_size=300,
+            chunk_overlap=20,
+            length_function=len
+        )
+        texts = text_split.split_text(file_text)
+
+        return texts
+    
+    def process_data_to_milvus_schema(self, text_lists):
+        """组织数据格式:
+            {
+                "content": text,
+                "doc_id": doc_id,
+                "chunk_id": chunk_id,
+                "metadata": {"source": file_name},
+            }
+        """
+        # doc_id = self.file_json.get("document_id")
+        docs = []
+        for i, text in enumerate(text_lists):
+            chunk_id = str(uuid1())
+            d = {
+                "content": text,
+                "doc_id": self.doc_id,
+                "chunk_id": chunk_id,
+                "metadata": {"source": self.file_name, "chunk_index": i+1}
+            }
+            # d["content"] = text
+            # d["doc_id"] = doc_id
+            # d["chunk_id"] = chunk_id
+            # d["metadata"] = {"source": self.file_name, "chunk_index": i+1}
+            docs.append(d)
+        return docs
+
+    def save_file_to_db(self):
+        # 如果更改切片方式,需要删除对应knowledge id中doc id对应数据
+        flag = self.file_json.get("flag")
+        if flag == "update":
+            # 执行删除操作
+            self.milvus_client._delete_by_doc_id(doc_id=self.doc_id)
+            self.mysql_client.delete_to_slice(doc_id=self.doc_id)
+            # self.mysql_client.delete_image_url(doc_id=doc_id)
+        file_text_start_time = time.time()
+        file_text, image_dict = self.load_file.file2text()
+        file_text_end_time = time.time()
+        logger.info(f"pdf加载成文本耗时:{file_text_end_time - file_text_start_time}")
+        text_lists = self.file_split(file_text)
+        file_split_end_time = time.time()
+        logger.info(f"文档切分的耗时:{file_split_end_time - file_text_end_time}")
+        docs = self.process_data_to_milvus_schema(text_lists)
+        logger.info(f"插入milvus的数据:{docs}")
+
+        # doc_id = self.file_json.get("document_id")
+
+        if flag == "upload":
+            # 插入到milvus库中
+            insert_milvus_flag, insert_milvus_str = self.milvus_client._insert_data(docs)
+            
+            if insert_milvus_flag:
+                # 插入到mysql的slice info数据库中
+                insert_slice_flag, insert_mysql_info = self.mysql_client.insert_to_slice(docs, self.knowledge_id, self.doc_id)
+            else:
+                resp = {"code": 500, "message": insert_milvus_str}
+                return resp
+
+            if insert_slice_flag:
+                # 插入mysql中的bm_media_replacement表中
+                insert_img_flag, insert_mysql_info =  self.mysql_client.insert_to_image_url(image_dict, self.knowledge_id, self.doc_id)
+            else:
+                resp = {"code": 500, "message": insert_mysql_info}
+                self.milvus_client._delete_by_doc_id(doc_id=self.doc_id)
+
+                return resp
+
+            if insert_img_flag:
+                resp = {"code": 200, "message": "文档解析成功"}
+            
+            else:
+                self.milvus_client._delete_by_doc_id(doc_id=self.doc_id)
+                self.mysql_client.delete_image_url(doc_id=self.doc_id)
+                resp = {"code": 500, "message": insert_mysql_info}
+
+            return resp
+
+
+        elif flag == "update":
+            # 插入到milvus库中
+            insert_milvus_start_time = time.time()
+            insert_milvus_flag, insert_milvus_str = self.milvus_client._insert_data(docs)
+            # insert_milvus_flag, insert_milvus_str = self.milvus_client._batch_insert_data(docs,text_lists)
+            insert_milvus_end_time = time.time()
+            logger.info(f"插入milvus数据库耗时:{insert_milvus_end_time - insert_milvus_start_time}")
+
+            if insert_milvus_flag:
+                # 插入到mysql的slice info数据库中
+                insert_mysql_start_time = time.time()
+                insert_slice_flag, insert_mysql_info = self.mysql_client.insert_to_slice(docs, self.knowledge_id, self.doc_id)
+                insert_mysql_end_time = time.time()
+                logger.info(f"插入mysql数据库耗时:{insert_mysql_end_time - insert_mysql_start_time}")
+            else:
+                resp = {"code": 500, "message": insert_milvus_str}
+                return resp
+            
+            if insert_slice_flag:
+                resp = {"code": 200, "message": "切片修改成功"}
+            
+            else:
+                self.milvus_client._delete_by_doc_id(doc_id=self.doc_id)
+                resp = {"code":500, "message": insert_mysql_info}
+
+            return resp
+

+ 215 - 0
rag/llm.py

@@ -0,0 +1,215 @@
+from openai import OpenAI, AsyncOpenAI
+import requests
+import json
+from utils.get_logger import setup_logger
+from config import model_name_vllm_url_dict
+
+logger = setup_logger(__name__)
+
+class VllmApi():
+    def __init__(self, chat_json):
+        openai_api_key = "sk-72f9d0e5bc894e1d828d73bdcc50ff0a"
+        model = chat_json.get("model")
+        # model = "Qwen3-Coder-30B-loft"
+        vllm_url = model_name_vllm_url_dict.get(model)
+        openai_api_base = vllm_url
+        self.vllm_chat_url = f"{vllm_url}/chat/completions"
+        self.vllm_generate_url = f"{vllm_url}/completions"
+        self.client = AsyncOpenAI(
+            # defaults to os.environ.get("OPENAI_API_KEY")
+            api_key=openai_api_key,
+            base_url=openai_api_base,
+        )
+
+    async def chat(self,
+             prompt : str = "",
+             model: str = "deepseek-r1:7b",
+             stream: bool = False,
+             top_p: float = 0.9,
+             temperature: float = 0.6,
+             max_tokens: int = 1024,
+             history: list = [],
+             enable_think: bool = False
+             ):
+        if history:
+            messages = history
+        else:
+            messages = [{"role": "user", "content": prompt}]
+
+        if model == "Qwen3-30B":
+            if enable_think:
+                temperature = 0.6
+                top_p=0.95
+            else:
+                temperature = 0.7
+                top_p=0.8
+                
+            extra_body = {
+                "chat_template_kwargs": {"enable_thinking": enable_think},
+                "top_k": 20
+            }
+        else:
+            extra_body = {}
+
+        chat_response = await self.client.chat.completions.create(
+            model=model,
+            messages=messages,
+            stream=stream,
+            top_p=top_p,
+            temperature=temperature, 
+            max_tokens=max_tokens,
+            # extra_body={
+            #     # "chat_template_kwargs": {"enable_thinking": enable_think},
+            #     "enable_thinking": enable_think,
+            #     "top_k":top_k
+            # },
+            extra_body=extra_body
+        )
+
+        # 针对deepseek的模型,是否输出think部分
+        yield_reasoning_content = True
+        yield_content = True
+        has_reason = ""
+        if stream:
+            try:
+                async for chunk in chat_response:
+                    logger.info(f"vllm返回的chunk信息:{chunk}")
+                    reasoning_content = None
+                    content = None
+                    chat_id = chunk.id
+                    # Check the content is reasoning_content or content
+                    if chunk.choices[0].delta.role == "assistant":
+                        continue
+                    elif hasattr(chunk.choices[0].delta, "reasoning_content"):
+                        reasoning_content = chunk.choices[0].delta.reasoning_content
+                        if reasoning_content:
+                            has_reason += reasoning_content
+                    elif hasattr(chunk.choices[0].delta, "content"):
+                        content = chunk.choices[0].delta.content
+
+                    if reasoning_content is not None:
+                        if yield_reasoning_content:
+                            yield_reasoning_content = False
+                            reasoning_content = "```think" + reasoning_content
+                            # print("reasoning_content:", end="", flush=True)
+                        # print(reasoning_content, end="", flush=True)
+                        # yield reasoning_content
+                        yield {"id": chat_id, "event": "add", "data": reasoning_content}
+                        
+                    elif content is not None:
+                        if yield_content:
+                            yield_content = False
+                            if has_reason:
+                                content = "think```" + content
+                            else:
+                                content = content
+                        #     print("\ncontent:", end="", flush=True) 
+                        # print(content, end="", flush=True)
+                        # yield content
+                        yield {"id": chat_id, "event": "add", "data": content}
+                    
+                    if chunk.choices[0].finish_reason:
+                        yield {"id": chat_id, "event": "finish", "data": ""}
+            finally:
+                await self.client.close()
+        
+        else:
+            # print(f"chat response: {chat_response.model_dump_json()}")
+            # yield chat_response.choices[0].message.content
+            yield chat_response
+
+    def generate(self,
+                 prompt: str,
+                 model: str = "deepseek-r1:7b",
+                 history: list = [],
+                 stream: bool = False
+                 ):
+        completion = self.client.completions.create(
+            model=model,
+            prompt=prompt,
+            max_tokens=1024,
+            stream=stream
+        )
+
+        if stream:
+            for chunk in completion:
+                print(f"generate chunk: {chunk}")
+                yield chunk
+        
+        else:
+            return completion
+        
+    def request_generate(self, model, prompt, max_tokens: int = 1024, temperature: float = 0.6, stream: bool = False):
+        json_data = {
+            "model": model,
+            "prompt": prompt,
+            "max_tokens": max_tokens,
+            "temperature": temperature,
+            "stream": stream
+        }
+        response = requests.post(self.vllm_generate_url,json=json_data, stream=stream)
+        response.raise_for_status()
+        if stream:
+            for line in response.iter_lines():
+                if line:
+                    line_str = line.decode("utf-8")
+                    if line_str.startswith("data: "):
+                        json_str = line_str[len("data: "):]
+                    if json_str == "[DONE]":
+                        break
+                    
+                    print(f"返回的数据:{json.loads(json_str)}")
+                    yield json.loads(json_str)
+                
+        else:
+            logger.info(f"直接返回结果:{response.json()}")
+            yield response.json()
+
+    def request_chat(self, 
+                     model, 
+                     prompt, 
+                     history: list = [], 
+                     temperature: float = 0.6, 
+                     stream: bool = False,
+                     top_p: float = 0.7):
+        history.append({"role": "user", "content": prompt})
+        json_data = {
+            "model": model,
+            "messages": history,
+            "temperature": temperature,
+            "stream": stream,
+            "top_p": top_p
+        }
+        response = requests.post(self.vllm_chat_url,json=json_data, stream=stream)
+        response.raise_for_status()
+        if stream:
+            for line in response.iter_lines():
+                if line:
+                    line_str = line.decode("utf-8")
+                    if line_str.startswith("data: "):
+                        json_str = line_str[len("data: "):]
+
+                    if json_str == "[DONE]":
+                        break
+                    
+                    print(f"chat模式返回的数据:{json.loads(json_str)}")
+                    yield json.loads(json_str)
+        else:
+            print(f"聊天模式直接返回结果:{response.json()}")
+            return response.json()
+
+
+def main():
+    history = [{"role": "system", "content": "你是一个非常有帮助的助手,在回答用户问题的时候请以<think>开头。"}]
+    # prompt = "请帮我计算鸡兔同笼的问题。从上面数有35个头,从下面数有94只脚,请问分别多少只兔子多少只鸡?"
+    prompt = "请帮我将下面提供的中文翻译成日文,要求:1、直接输出翻译的结果,2、不要进行任何解释。需要翻译的内容:我下飞机的时候行李丢了。"
+    model = "DeepSeek-R1-Distill-Qwen-14B"
+    vllm_chat_resp = VllmApi().request_chat(prompt=prompt, model=model, history=history, stream=True)
+
+    # print("vllm 回复:")
+    for chunk in vllm_chat_resp:
+        pass
+    #     print(chunk, end='', flush=True)
+
+if __name__=="__main__":
+    main()

+ 36 - 0
rag/load_model.py

@@ -0,0 +1,36 @@
+# from pymilvus import model
+# import torch
+# from transformers import AutoTokenizer, AutoModelForSequenceClassification
+
+# device = "cuda:1" if torch.cuda.is_available() else "cpu"
+
+# # 使用sentence transformer方式加载模型
+# embedding_path = r"/work/models/multilingual-e5-large-instruct"  # 线上路径
+# # embedding_path = r"G:/work/code/models/multilingual-e5-large-instruct/"  # 本地路径
+# sentence_transformer_ef = model.dense.SentenceTransformerEmbeddingFunction(model_name=embedding_path,device=device)
+
+# # rerank模型
+# bce_rerank_model_path = r"/work/models/bce-reranker-base_v1"  # 线上路径
+# # bce_rerank_model_path = r"G:/work/code/models/bce-reranker-base_v1"  # 本地路径
+# bce_rerank_tokenizer = AutoTokenizer.from_pretrained(bce_rerank_model_path)
+# bce_rerank_base_model = AutoModelForSequenceClassification.from_pretrained(bce_rerank_model_path).to(device)
+
+
+from pymilvus import model
+import torch
+from transformers import AutoTokenizer, AutoModelForSequenceClassification
+
+device = "cuda:1" if torch.cuda.is_available() else "cpu"
+
+# 使用sentence transformer方式加载模型
+# embedding_path = r"/work/models/multilingual-e5-large-instruct"  # 线上路径
+embedding_path = "/opt/models/multilingual-e5-large-instruct/"  # jk线上路径
+# embedding_path = r"G:/work/code/models/multilingual-e5-large-instruct/"  # 本地路径
+sentence_transformer_ef = model.dense.SentenceTransformerEmbeddingFunction(model_name=embedding_path,device=device)
+
+# rerank模型
+# bce_rerank_model_path = r"/work/models/bce-reranker-base_v1"  # 线上路径
+bce_rerank_model_path = r"/opt/models/bce-reranker-base_v1"    # jk线上路径
+# bce_rerank_model_path = r"G:/work/code/models/bce-reranker-base_v1"  # 本地路径
+bce_rerank_tokenizer = AutoTokenizer.from_pretrained(bce_rerank_model_path)
+bce_rerank_base_model = AutoModelForSequenceClassification.from_pretrained(bce_rerank_model_path).to(device)

+ 241 - 0
rag/progress_reporter.py

@@ -0,0 +1,241 @@
+# import threading
+# import time
+# import random
+# import requests
+# import json
+# from datetime import datetime
+# from utils.get_logger import setup_logger
+
+# logger = setup_logger(__name__)
+
+
+# class ProgressReporter:
+#     """文件处理进度 - 独立线程防止阻塞"""
+    
+#     def __init__(self, task_id: str, callback_url: str, estimate_seconds: int = 60, user_id: str = ""):
+#         """
+#         输入:
+#             task_id: 任务唯一标识
+#             callback_url: Java中转服务器地址
+#             estimate_seconds: 预估完成时间(秒)  (弃用)
+#         """
+#         self.task_id = task_id
+#         self.callback_url = callback_url
+#         self.estimate_seconds = estimate_seconds
+#         self.current_progress = 0
+#         self.is_completed = False
+#         self.thread = None
+#         self.start_time = None
+#         self.user_id = user_id
+    
+#     def start(self):
+#         """启动后台进度任务(独立线程)"""
+#         self.start_time = datetime.now()
+#         self.thread = threading.Thread(target=self._progress_loop, daemon=True)
+#         self.thread.start()
+#         logger.info(f"[{self.task_id}] 进度任务已启动(独立线程)")
+    
+#     def complete(self, success: bool = True):
+#         """
+#         标记完成,立即发送最终状态
+        
+#         输入:
+#             success: True=成功(status=1), False=失败(status=2)
+#         """
+#         self.is_completed = True
+        
+#         # 等待线程结束(2秒)
+#         if self.thread and self.thread.is_alive():
+#             self.thread.join(timeout=2)
+        
+#         # 发送最终进度:成功=100%, 失败=当前进度
+#         final_progress = 100 if success else self.current_progress
+#         # status: 0=处理中, 1=完成, 2=失败
+#         message = "success" if success else "error"
+
+#         status = "1" if success else "2"
+#         self._send_progress(final_progress, message, status)
+#         logger.info(f"[{self.task_id}] 任务完成,状态: {'成功' if success else '失败'}")
+    
+#     def _progress_loop(self):
+#         """后台循环任务:随机递增进度到99%"""
+#         try:
+#             while not self.is_completed:
+#                 time.sleep(1)
+                
+#                 if self.is_completed:
+#                     break
+                
+#                 # 随机增量
+#                 if self.current_progress < 30:
+#                     increment = random.randint(3, 8)  # 前期快
+#                 elif self.current_progress < 60:
+#                     increment = random.randint(2, 5)  # 中期中速
+#                 elif self.current_progress < 85:
+#                     increment = random.randint(1, 3)  # 后期慢
+#                 else:
+#                     increment = random.randint(0, 1)  # 接近完成时很慢
+                
+#                 self.current_progress = min(99, self.current_progress + increment)
+#                 self._send_progress(self.current_progress, "处理中", "0")  # 0=处理中
+                
+#         except Exception as e:
+#             logger.error(f"[{self.task_id}] 进度任务异常: {e}")
+#             # 异常时也发送失败通知
+#             self._send_progress(self.current_progress, "error", "2")  # 2=失败
+    
+#     def _send_progress(self, progress: int, message: str = "", status: str = "0"):
+#         """
+#         发送HTTP请求到Java中转
+        
+#         输入:
+#             progress: 进度百分比 (0-100)
+#             status: 状态码 (0=处理中, 1=完成, 2=失败)
+#         """
+#         payload = {
+#             "documentId": self.task_id,
+#             "progress": progress,
+#             "message": message,
+#             "status": status,
+#             "timestamp": datetime.now().isoformat()
+#         }
+#         body = {
+#             "userIds": [int(self.user_id)],
+#             "message": json.dumps(payload)
+#         }
+
+        
+#         try:
+#             response = requests.post(
+#                 self.callback_url,
+#                 json=body,
+#                 timeout=5
+#             )
+#             if response.status_code == 200:
+#                 logger.debug(f"[{self.task_id}] 进度发送成功: {progress}%   status: {status}")
+#             else:
+#                 logger.warning(f"[{self.task_id}] 进度发送失败: HTTP {response.status_code}")
+#         except requests.exceptions.Timeout:
+#             logger.warning(f"[{self.task_id}] 进度发送超时")
+#         except Exception as e:
+#             logger.warning(f"[{self.task_id}] 进度发送异常: {e}")
+
+
+
+import threading
+import time
+import random
+import requests
+import json
+from datetime import datetime
+from utils.get_logger import setup_logger
+
+logger = setup_logger(__name__)
+
+
+class ProgressReporter:
+    """文件处理进度 - 独立线程防止阻塞"""
+
+    def __init__(self, task_id: str, callback_url: str, estimate_seconds: int = 60, user_id: str = ""):
+        """
+        输入:
+            task_id: 任务唯一标识
+            callback_url: Java 中转服务器地址
+            estimate_seconds: 预估完成时间(保留兼容性,内部不用)
+            user_id: 用户 ID,用于 Java 推送
+        """
+        self.task_id = task_id
+        self.callback_url = callback_url
+        self.estimate_seconds = estimate_seconds
+        self.user_id = user_id
+
+        self.current_progress = 0
+        self.is_completed = False
+        self.thread = None
+        self.start_time = None
+
+    def start(self):
+        """启动后台进度任务(独立线程)"""
+        self.start_time = datetime.now()
+        self.thread = threading.Thread(target=self._progress_loop, daemon=True)
+        self.thread.start()
+        logger.info(f"[{self.task_id}] 进度任务已启动(线程)")
+
+    def complete(self, success: bool = True):
+        """标记完成,发送最终状态"""
+        self.is_completed = True
+
+        # 等待线程结束(不阻塞主流程)
+        if self.thread and self.thread.is_alive():
+            self.thread.join(timeout=2)
+
+        final_progress = 100 if success else self.current_progress
+
+        message = "success" if success else "error"
+        status = "1" if success else "2"  # 1=成功, 2=失败
+
+        self._send_progress(final_progress, message, status)
+
+        logger.info(f"[{self.task_id}] 任务完成,状态: {'成功' if success else '失败'}")
+
+    # ----------------------------
+    # 后台持续推送进度的线程逻辑
+    # ----------------------------
+    def _progress_loop(self):
+        try:
+            while not self.is_completed:
+                time.sleep(1)
+
+                if self.is_completed:
+                    break
+
+                # 随机加速段(与你旧版本完全一致)
+                if self.current_progress < 30:
+                    increment = random.randint(3, 8)
+                elif self.current_progress < 60:
+                    increment = random.randint(2, 5)
+                elif self.current_progress < 85:
+                    increment = random.randint(1, 3)
+                else:
+                    increment = random.randint(0, 1)
+
+                self.current_progress = min(99, self.current_progress + increment)
+
+                self._send_progress(self.current_progress, "处理中", "0")  # 0 = 处理中
+
+        except Exception as e:
+            logger.error(f"[{self.task_id}] 进度任务异常: {e}")
+            self._send_progress(self.current_progress, "error", "2")
+
+    # ----------------------------
+    # 对接 Java 推送服务
+    # ----------------------------
+    def _send_progress(self, progress: int, message: str = "", status: str = "0"):
+        payload = {
+            "documentId": self.task_id,
+            "progress": progress,
+            "message": message,
+            "status": status,
+            "timestamp": datetime.now().isoformat()
+        }
+
+        body = {
+            "userIds": [self.user_id],
+            "message": json.dumps(payload)
+        }
+
+        try:
+            resp = requests.post(
+                self.callback_url,
+                json=body,
+                timeout=5
+            )
+            if resp.status_code == 200:
+                logger.debug(f"[{self.task_id}] 进度发送成功: {progress}% status:{status}")
+            else:
+                logger.warning(f"[{self.task_id}] 进度发送失败: HTTP {resp.status_code}")
+
+        except requests.exceptions.Timeout:
+            logger.warning(f"[{self.task_id}] 进度发送超时")
+        except Exception as e:
+            logger.warning(f"[{self.task_id}] 进度发送异常: {e}")

+ 137 - 0
rag/task_registry.py

@@ -0,0 +1,137 @@
+import threading
+from dataclasses import dataclass, field
+from typing import Dict, Optional, Any
+from datetime import datetime
+from utils.get_logger import setup_logger
+
+logger = setup_logger(__name__)
+
+
+class TaskCancelledException(Exception):
+    """任务被取消异常"""
+    pass
+
+
+@dataclass
+class TaskContext:
+    """任务上下文 - 存储单个任务的状态信息"""
+    task_id: str    # 任务ID 
+    user_id: str = ""   # 用户ID
+    knowledge_id: str = "" # 知识库ID
+    is_cancelled: bool = False  # 任务取消标志 
+    created_at: datetime = field(default_factory=datetime.now) # 任务创建时间
+    reporter: Optional[Any] = None # 进度报告器
+    # 记录已插入的数据,用于取消时清理
+    inserted_doc_ids: list = field(default_factory=list)
+    inserted_to_milvus: bool = False # 是否已插入到 Milvus
+    inserted_to_mysql_slice: bool = False # 是否已插入到 MySQL slice
+    inserted_to_mysql_image: bool = False # 是否已插入到 MySQL image
+
+
+class TaskRegistry:
+    """
+    全局任务注册表(单例模式)
+    
+    用于跟踪所有正在执行的任务,支持通过 task_id 查找和取消任务
+    """
+    _instance = None
+    _lock = threading.Lock()
+    
+    def __new__(cls):
+        if cls._instance is None:
+            with cls._lock:
+                if cls._instance is None:
+                    cls._instance = super().__new__(cls)
+                    cls._instance._tasks: Dict[str, TaskContext] = {}
+                    cls._instance._task_lock = threading.Lock()
+        return cls._instance
+    
+    def register(self, task_id: str, user_id: str = "", knowledge_id: str = "") -> TaskContext:
+        """
+        注册新任务
+        
+        输入:
+            task_id: 任务唯一标识(通常是 document_id)
+            user_id: 用户ID
+            knowledge_id: 知识库ID
+            
+        输出:
+            TaskContext: 任务上下文对象
+        """
+        with self._task_lock:
+            # 如果已存在,先清理旧的
+            if task_id in self._tasks:
+                logger.warning(f"任务 {task_id} 已存在,将覆盖旧任务")
+            
+            ctx = TaskContext(
+                task_id=task_id, 
+                user_id=user_id,
+                knowledge_id=knowledge_id
+            )
+            self._tasks[task_id] = ctx
+            logger.info(f"任务注册成功: task_id={task_id}, knowledge_id={knowledge_id}")
+            return ctx
+    
+    def get(self, task_id: str) -> Optional[TaskContext]:
+        """获取任务上下文"""
+        with self._task_lock:
+            return self._tasks.get(task_id)
+    
+    def cancel(self, task_id: str) -> tuple[bool, str]:
+        """
+        取消任务
+        
+        输入:
+            task_id: 任务ID
+            
+        输出:
+            (success, message): 是否成功及消息
+        """
+        with self._task_lock:
+            ctx = self._tasks.get(task_id)
+            
+            if not ctx:
+                return False, "任务不存在或已完成"
+            
+            if ctx.is_cancelled:
+                return False, "任务已被取消"
+            
+            # 设置取消标志
+            ctx.is_cancelled = True
+            
+            # 停止进度上报
+            if ctx.reporter:
+                ctx.reporter.is_completed = True
+            
+            logger.info(f"任务取消标志已设置: task_id={task_id}")
+            return True, "取消信号已发送"
+    
+    def unregister(self, task_id: str):
+        """注销任务(任务完成或取消后调用)"""
+        with self._task_lock:
+            ctx = self._tasks.pop(task_id, None)
+            if ctx:
+                logger.info(f"任务注销成功: task_id={task_id}")
+    
+    def is_cancelled(self, task_id: str) -> bool:
+        """检查任务是否已取消"""
+        with self._task_lock:
+            ctx = self._tasks.get(task_id)
+            return ctx.is_cancelled if ctx else False
+    
+    def get_all_tasks(self) -> Dict[str, dict]:
+        """获取所有活跃任务的信息(用于调试)"""
+        with self._task_lock:
+            return {
+                task_id: {
+                    "user_id": ctx.user_id,
+                    "knowledge_id": ctx.knowledge_id,
+                    "is_cancelled": ctx.is_cancelled,
+                    "created_at": ctx.created_at.isoformat(),
+                }
+                for task_id, ctx in self._tasks.items()
+            }
+
+
+# 全局单例实例
+task_registry = TaskRegistry()

+ 0 - 0
rag/vector_db/__init__.py


BIN
rag/vector_db/__pycache__/__init__.cpython-310.pyc


BIN
rag/vector_db/__pycache__/__init__.cpython-311.pyc


BIN
rag/vector_db/__pycache__/milvus_vector.cpython-310.pyc


BIN
rag/vector_db/__pycache__/milvus_vector.cpython-311.pyc


+ 536 - 0
rag/vector_db/milvus_vector.py

@@ -0,0 +1,536 @@
+import time
+import numpy as np
+from pymilvus import (
+    MilvusClient,
+    DataType,
+    Function,
+    FunctionType,
+    AnnSearchRequest,
+    RRFRanker,
+)
+# from pymilvus.model.hybrid import BGEM3EmbeddingFunction
+from pymilvus import model
+from rag.load_model import sentence_transformer_ef
+from utils.get_logger import setup_logger
+import torch
+#device = "cpu" if torch.cuda.is_available() else "cuda"
+device = "cuda" if torch.cuda.is_available() else "cpu"
+logger = setup_logger(__name__)
+
+# embedding_path = r"G:/work/code/models/multilingual-e5-large-instruct/"
+# sentence_transformer_ef = model.dense.SentenceTransformerEmbeddingFunction(model_name=embedding_path,device=device)
+
+
+embedding_mapping = {
+    "e5": sentence_transformer_ef,
+    "multilingual-e5-large-instruct": sentence_transformer_ef,
+}
+
+class HybridRetriever:
+    def __init__(self, uri, embedding_name:str="e5", collection_name:str ="hybrid"):
+        self.uri = uri
+        self.collection_name = collection_name
+        # self.embedding_function = sentence_transformer_ef
+        self.embedding_function = embedding_mapping.get(embedding_name, "e5")
+        self.use_reranker = True
+        self.use_sparse = True
+        self.client = MilvusClient(uri=uri)
+    
+    def has_collection(self):
+        try:
+            collection_flag = self.client.has_collection(self.collection_name)
+            logger.info(f"查询向量库的结果:{collection_flag}")
+        except Exception as e:
+            logger.info(f"查询向量库是否存在出错:{e}")
+            collection_flag = False
+        return collection_flag
+
+    def build_collection(self):
+        if isinstance(self.embedding_function.dim, dict):
+            dense_dim = self.embedding_function.dim["dense"]
+        else:
+            dense_dim = self.embedding_function.dim
+        logger.info(f"创建数据库的向量维度:{dense_dim}")
+        analyzer_params={
+            "type": "chinese"
+        }
+
+        schema = MilvusClient.create_schema()
+        schema.add_field(
+            field_name="pk",
+            datatype=DataType.VARCHAR,
+            is_primary=True,
+            auto_id=True,
+            max_length=100,
+        )
+        schema.add_field(
+            field_name="content",
+            datatype=DataType.VARCHAR,
+            max_length=65535,
+            analyzer_params=analyzer_params,
+            enable_match=True,
+            enable_analyzer=True,
+        )
+        schema.add_field(
+            field_name="sparse_vector", datatype=DataType.SPARSE_FLOAT_VECTOR
+        )
+        schema.add_field(
+            field_name="dense_vector", datatype=DataType.FLOAT_VECTOR, dim=dense_dim
+        )
+        schema.add_field(field_name="doc_id", datatype=DataType.VARCHAR, max_length=64)
+        schema.add_field(
+            field_name="chunk_id", datatype=DataType.VARCHAR, max_length=64
+        )
+        schema.add_field(field_name="metadata", datatype=DataType.JSON)
+
+        functions = Function(
+            name="bm25",
+            function_type=FunctionType.BM25,
+            input_field_names=["content"],
+            output_field_names="sparse_vector",
+        )
+
+        schema.add_function(functions)
+
+        index_params = MilvusClient.prepare_index_params()
+        index_params.add_index(
+            field_name="sparse_vector",
+            index_type="SPARSE_INVERTED_INDEX",
+            metric_type="BM25",
+        )
+        index_params.add_index(
+            field_name="dense_vector", index_type="FLAT", metric_type="IP"
+        )
+        try:
+            self.client.create_collection(
+                collection_name=self.collection_name,
+                schema=schema,
+                index_params=index_params,
+            )
+            return "create_collection_success"
+        except Exception as e:
+            logger.error(f"创建{self.collection_name}数据库失败:{e}")
+            return "create_collection_error"
+
+    def insert_data(self, chunk, metadata):
+        logger.info("准备插入数据")
+        with torch.no_grad():
+            embedding = self.embedding_function([chunk])
+        logger.info("获取文本的向量信息。")
+        if isinstance(embedding, dict) and "dense" in embedding:
+            # bge embedding 获取embedding的方式
+            dense_vec = embedding["dense"][0]
+        else:
+            dense_vec = embedding[0]
+        
+        try:
+            self.client.insert(
+                self.collection_name, {"dense_vector": dense_vec, **metadata}
+            )
+            logger.info("插入一条数据成功。")
+            return True, "success"
+        except Exception as e:
+            doc_id = metadata.get("doc_id")
+            logger.error(f"处理文档:{doc_id},插入数据出错:{e}")
+            self.delete_by_doc_id(doc_id=doc_id)
+            return False, str(e)
+        
+    def batch_insert_data(self, chunks, metadatas):
+        logger.info("准备插入数据")
+        embedding_lists = self.embedding_function.encode_documents(chunks)
+        logger.info("获取文本的向量信息。")
+        record_lists = []
+        for embedding, metadata in zip(embedding_lists, metadatas):
+            if isinstance(embedding, dict) and "dense" in embedding:
+                # bge embedding 获取embedding的方式
+                dense_vec = embedding["dense"][0]
+            else:
+                dense_vec = embedding.tolist()
+
+            # if hasattr(dense_vec, 'tolist'):
+            #     dense_vec = dense_vec.tolist()
+
+            # logger.info(f"向量维度:{dense_vec}")
+            
+            # if isinstance(dense_vec, (float, int)):
+            #     dense_vec = [dense_vec]
+            
+            # if isinstance(dense_vec, np.float32):
+            #     dense_vec = [float(dense_vec)]
+            
+            record = {"dense_vector": dense_vec}
+            record.update(metadata)
+            record_lists.append(record)
+        
+        try:
+            self.client.insert(
+                self.collection_name, record_lists
+            )
+            logger.info("插入数据成功。")
+            return True, "success"
+        except Exception as e:
+            doc_id = metadata.get("doc_id")
+            logger.error(f"处理文档:{doc_id},插入数据出错:{e}")
+            self.delete_by_doc_id(doc_id=doc_id)
+            return False, str(e)
+                
+
+    def search(self, query: str, k: int = 20, mode="hybrid"):
+
+        output_fields = [
+            "content",
+            "doc_id",
+            "chunk_id",
+            "metadata",
+        ]
+        if mode in ["dense", "hybrid"]:
+            with torch.no_grad():
+                embedding = self.embedding_function([query])
+            if isinstance(embedding, dict) and "dense" in embedding:
+                dense_vec = embedding["dense"][0]
+            else:
+                dense_vec = embedding[0]
+
+        if mode == "sparse":
+            results = self.client.search(
+                collection_name=self.collection_name,
+                data=[query],
+                anns_field="sparse_vector",
+                limit=k,
+                output_fields=output_fields,
+            )
+        elif mode == "dense":
+            results = self.client.search(
+                collection_name=self.collection_name,
+                data=[dense_vec],
+                anns_field="dense_vector",
+                limit=k,
+                output_fields=output_fields,
+            )
+        elif mode == "hybrid":
+            full_text_search_params = {"metric_type": "BM25"}
+            full_text_search_req = AnnSearchRequest(
+                [query], "sparse_vector", full_text_search_params, limit=k
+            )
+
+            dense_search_params = {"metric_type": "IP"}
+            dense_req = AnnSearchRequest(
+                [dense_vec], "dense_vector", dense_search_params, limit=k
+            )
+
+            results = self.client.hybrid_search(
+                self.collection_name,
+                [full_text_search_req, dense_req],
+                ranker=RRFRanker(),
+                limit=k,
+                output_fields=output_fields,
+            )
+        else:
+            raise ValueError("Invalid mode")
+        return [
+            {
+                "doc_id": doc["entity"]["doc_id"],
+                "chunk_id": doc["entity"]["chunk_id"],
+                "content": doc["entity"]["content"],
+                "metadata": doc["entity"]["metadata"],
+                "score": doc["distance"],
+            }
+            for doc in results[0]
+        ]
+    
+    def query_filter(self, doc_id, filter_field):
+        # doc id 文档id,content中包含 filter_field 字段的
+        query_output_field = [
+            "content",
+            "chunk_id",
+            "doc_id",
+            "metadata"
+        ]
+        # query_expr = f"doc_id in {doc_id} && content like '%{filter_field}%'"
+        # 根据doc_id查询如果有关键词,根据关键词查询,如果没有关键词,只根据doc_id查询
+        if filter_field:
+            query_expr = f"doc_id == '{doc_id}' && content like '%{filter_field}%'"
+        else:
+            query_expr = f"doc_id == '{doc_id}'"
+
+        try:
+            query_filter_results = self.client.query(collection_name=self.collection_name, filter=query_expr, output_fields=query_output_field)
+        except Exception as e:
+            logger.error(f"根据关键词查询数据失败:{e}")
+            query_filter_results = [{"code": 500}]
+        return query_filter_results
+        # for result in query_filter_results:
+        #     print(f"根据doc id 和 field 过滤结果: {result}\n\n")
+    
+    def query_chunk_id(self, chunk_id):
+        # chunk id,查询切片
+        query_output_field = [
+            "content",
+            "doc_id",
+            "chunk_id",
+            # "metadata"
+        ]
+        query_expr = f"chunk_id == '{chunk_id}'"
+        try:
+            query_filter_results = self.client.query(collection_name=self.collection_name, filter=query_expr, output_fields=query_output_field)
+        except Exception as e:
+            logger.info(f"根据chunk id 查询出错:{e}")
+            query_filter_results = [{"code": 500}]
+        return query_filter_results
+    
+    def query_chunk_id_list(self, chunk_id_list):
+        # chunk id,查询切片
+        query_output_field = [
+            "content",
+            "doc_id",
+            "chunk_id",
+            # "metadata"
+        ]
+        query_expr = f"chunk_id in {chunk_id_list}"
+        try:
+            query_filter_results = self.client.query(collection_name=self.collection_name, filter=query_expr, output_fields=query_output_field)
+        except Exception as e:
+            logger.info(f"根据chunk id 查询出错:{e}")
+            query_filter_results = [{"code": 500}]
+        return query_filter_results
+
+    def update_data(self, chunk_id, chunk):
+        # 根据chunk id查询对应的信息,
+        chunk_expr = f"chunk_id == '{chunk_id}'"
+        chunk_output_fields = [
+            "pk",
+            "doc_id",
+            "chunk_id",
+            "metadata"
+        ]
+        try:
+            chunk_results = self.client.query(collection_name=self.collection_name, filter=chunk_expr, output_fields=chunk_output_fields)
+            # logger.info(f"{chunk_id}更新切片的信息:{chunk_results}")
+        except Exception as e:
+            logger.error(f"更新切片数据时查询失败:{e}")
+            return "update_query_error", ""
+        if not chunk_results:
+            logger.info(f"根据{chunk_id}未在向量库中查询到对应数据,无法更新数据")
+            return "update_query_no_result", ""
+        with torch.no_grad():
+            embedding = self.embedding_function([chunk])
+        if isinstance(embedding, dict) and "dense" in embedding:
+            # bge embedding 获取embedding的方式
+            dense_vec = embedding["dense"][0]
+        else:
+            dense_vec = embedding[0]
+        chunk_dict = chunk_results[0]
+        metadata = chunk_dict.get("metadata")
+        old_chunk_len = metadata.get("chunk_len")
+        chunk_len = len(chunk)
+        metadata["chunk_len"] = chunk_len
+        chunk_dict["content"] = chunk
+        chunk_dict["dense_vector"] = dense_vec
+        chunk_dict["metadata"] = metadata
+        try:
+            update_res = self.client.upsert(collection_name=self.collection_name, data=[chunk_dict])
+            logger.info(f"更新返回的数据:{update_res}")
+            return "update_success", chunk_len - old_chunk_len
+        except Exception as e:
+            logger.error(f"更新数据时出错:{e}")
+            return "update_error", ""
+            
+    def update_data(self, chunk_id, chunk):
+        # 根据chunk id查询对应的信息,
+        chunk_expr = f"chunk_id == '{chunk_id}'"
+        chunk_output_fields = [
+            "pk",
+            "doc_id",
+            "chunk_id",
+            "metadata"
+        ]
+        try:
+            chunk_results = self.client.query(collection_name=self.collection_name, filter=chunk_expr, output_fields=chunk_output_fields)
+            # logger.info(f"{chunk_id}更新切片的信息:{chunk_results}")
+        except Exception as e:
+            logger.error(f"更新切片数据时查询失败:{e}")
+            return "update_query_error", ""
+        if not chunk_results:
+            logger.info(f"根据{chunk_id}未查询到对应数据,无法更新数据")
+            return "update_query_no_result", ""
+        with torch.no_grad():
+            embedding = self.embedding_function([chunk])
+        if isinstance(embedding, dict) and "dense" in embedding:
+            # bge embedding 获取embedding的方式
+            dense_vec = embedding["dense"][0]
+        else:
+            dense_vec = embedding[0]
+        chunk_dict = chunk_results[0]
+        metadata = chunk_dict.get("metadata")
+        old_chunk_len = metadata.get("chunk_len")
+        chunk_len = len(chunk)
+        metadata["chunk_len"] = chunk_len
+        chunk_dict["content"] = chunk
+        chunk_dict["dense_vector"] = dense_vec
+        chunk_dict["metadata"] = metadata
+        try:
+            update_res = self.client.upsert(collection_name=self.collection_name, data=[chunk_dict])
+            logger.info(f"更新返回的数据:{update_res}")
+            return "update_success", chunk_len - old_chunk_len
+        except Exception as e:
+            logger.error(f"更新数据时出错:{e}")
+            return "update_error", ""
+        
+    def delete_collection(self, collection):
+        try:
+            self.client.drop_collection(collection_name=collection)
+            return "delete_collection_success"
+        except Exception as e:
+            logger.error(f"删除{collection}失败,出错原因:{e}")
+            return "delete_collection_error"
+
+    def delete_by_chunk_id(self, chunk_id:str = None):
+        # 根据文档id查询主键值 milvus只支持主键删除
+        expr = f"chunk_id == '{chunk_id}'"
+        try:
+            results = self.client.query(collection_name=self.collection_name, filter=expr, output_fields=["pk","metadata"])  # 获取主键 id
+            logger.info(f"根据切片id:{chunk_id},查询的数据:{results}")
+        except Exception as e:
+            logger.error(f"根据切片id查询主键失败:{e}")
+            return "delete_query_error", []
+        if not results:
+            print(f"No data found for chunk id: {chunk_id}")
+            # return "delete_no_result", []
+            return "delete_success", [0]
+        
+        # 提取主键值
+        primary_keys = [result["pk"] for result in results]
+        chunk_len = [result["metadata"]["chunk_len"] for result in results]
+        logger.info(f"获取到的主键信息:{primary_keys}")
+        
+        # 执行删除操作
+        expr_delete = f"pk in {primary_keys}"  # 构造删除表达式
+        try:
+            delete_res = self.client.delete(collection_name=self.collection_name, filter=expr_delete)
+            self.client.flush(collection_name=self.collection_name)
+            self.client.compact(collection_name=self.collection_name)
+            logger.info(f"Deleted data with chunk_id: {delete_res}")
+            return "delete_success", chunk_len
+        except Exception as e:
+            logger.error(f"删除数据失败:{e}")
+            return "delete_error", []
+        
+    def delete_by_doc_id(self, doc_id:str =None):
+        # 根据文档id查询主键值 milvus只支持主键删除
+        expr = f"doc_id == '{doc_id}'"
+        try:
+            results = self.client.query(collection_name=self.collection_name, filter=expr, output_fields=["pk"])  # 获取主键 id
+        except Exception as e:
+            logger.error(f"根据切片id查询主键失败:{e}")
+            return "delete_query_error"
+        if not results:
+            print(f"No data found for doc_id: {doc_id}")
+            return "delete_no_result"
+        
+        # 提取主键值
+        primary_keys = [result["pk"] for result in results]
+        logger.info(f"获取到的主键信息:{primary_keys}")
+        
+        # 执行删除操作
+        try:
+            delete_res = self.client.delete(collection_name=self.collection_name, ids=primary_keys)
+            self.client.flush(collection_name=self.collection_name)
+            self.client.compact(collection_name=self.collection_name)
+            logger.info(f"Deleted data with doc_id: {delete_res}")
+            return "delete_success"
+        except Exception as e:
+            logger.error(f"删除数据失败:{e}")
+            return "delete_error"
+        # # 执行删除操作
+        # expr_delete = f"pk in {primary_keys}"  # 构造删除表达式
+        # try:
+        #     delete_res = self.client.delete(collection_name=self.collection_name, filter=expr_delete)
+        #     logger.info(f"Deleted data with doc_id: {delete_res}")
+        #     return "delete_success"
+        # except Exception as e:
+        #     logger.error(f"删除数据失败:{e}")
+        #     return "delete_error"
+        
+    
+# 测试
+# def parse_json_to_schema_data_format():
+#     sql_text_list = load_sql_query_ddl_info()
+#     docs = []
+#     for sql_info in sql_text_list:
+#         sql_text = sql_info.get("sql_text")
+#         source = ",".join(sql_info.get("table_list", []))
+#         source = sql_info.get("source") if not source else source
+#         sql = sql_info.get("sql")
+#         ddl = sql_info.get("table_ddl")
+#         metadata = {"source": source, "sql": sql, "ddl": ddl}
+#         text_list = sql_info.get("sim_sql_text_list", [])
+#         text_list.append(sql_text)
+#         doc_id = str(uuid4())
+#         for text in text_list:
+#             chunk_id = str(uuid4())
+#             insert_dict = {
+#                 "content": text,
+#                 "doc_id": doc_id,
+#                 "chunk_id": chunk_id,
+#                 "metadata": metadata
+#             }
+#             docs.append(insert_dict)
+    
+#     return docs
+
+# def insert_data_to_milvus(standard_retriever):
+#     sql_dataset = parse_json_to_schema_data_format()
+#     standard_retriever.build_collection()
+#     for sql_dict in sql_dataset:
+#         text = sql_dict["content"]
+#         standard_retriever.insert_data(text, sql_dict)
+
+def main():
+    # dense_ef = BGEM3EmbeddingFunction()
+    embedding_path = r"G:/work/code/models/multilingual-e5-large-instruct/"
+    sentence_transformer_ef = model.dense.SentenceTransformerEmbeddingFunction(model_name=embedding_path,device=device)
+    standard_retriever = HybridRetriever(
+        uri="http://localhost:19530",
+        collection_name="milvus_hybrid",
+        dense_embedding_function=sentence_transformer_ef,
+    )
+    # 插入数据
+    # insert_data_to_milvus(standard_retriever)
+
+    # 查询 混合检索:hybrid ,稀疏检索sparse,向量检索:dense
+    # results = standard_retriever.search("查一下加班情况", mode="hybrid", k=3)
+    # model=sparse 稀疏检索
+    # print(f"稀疏检索结果:{results}")
+
+    # model=dense 向量检索
+    # print(f"向量检索结果:{results}")
+
+    # model=hybrid
+    # print(f"向量检索结果:{results}")
+
+    # 根据doc id删除数据
+    # delete_start_time = time.time()
+    # doc_id = "e72ebf78-6c0d-410b-8fbb-9a2057673064"
+    # standard_retriever.delete_data(doc_id=doc_id)
+    # delete_end_time = time.time()
+    # print(f"删除耗时:{delete_end_time-delete_start_time}")
+
+    # 根据chunk_id 更新数据
+    # update_start_time = time.time()
+    # chunk = "查询一下员工加班的情况"
+    # chunk_id = "a5e8dded-f5a7-4a1f-92cd-82fa8113b418"
+    # standard_retriever.update_data(chunk_id, chunk)
+    # update_end_time = time.time()
+    # print(f"更新数据的时间:{update_end_time-update_start_time}")
+
+    # 根据doc id 和关键字查询
+    query_start_time = time.time()
+    filter_field = "加班"
+    doc_id = ["7b73ae0b-db97-4315-ba71-783fe7a69c61", "96bbe5a8-5fcf-4769-8343-938acb8735bd"]
+    standard_retriever.query_filter(doc_id, filter_field)
+    query_end_time = time.time()
+    print(f"关键字搜索数据的时间:{query_end_time-query_start_time}")
+
+
+if __name__=="__main__":
+    main()

+ 193 - 0
rag_server.py

@@ -0,0 +1,193 @@
+# 请求的入口
+
+import os
+
+os.environ["CUDA_VISIBLE_DEVICES"] = "2,3"
+
+from fastapi import FastAPI, File, UploadFile, Form, Request, Response, WebSocket, WebSocketDisconnect, Depends, APIRouter, Body, HTTPException
+from fastapi.responses import JSONResponse, FileResponse, StreamingResponse
+from fastapi.middleware.cors import CORSMiddleware
+from sse_starlette import EventSourceResponse
+import uvicorn
+from utils.get_logger import setup_logger
+from rag.vector_db.milvus_vector import HybridRetriever
+from response_info import generate_message, generate_response
+from rag.db import MilvusOperate, MysqlOperate
+from rag.file_process import ParseFile
+from rag.documents_process import ProcessDocuments
+from rag.task_registry import task_registry
+from rag.chat_message import ChatRetrieverRag
+
+
+logger = setup_logger(__name__)
+app = FastAPI()
+
+# 设置跨域
+app.add_middleware(
+    CORSMiddleware,
+    allow_origins=["*"],
+    allow_credentials=True,
+    allow_methods=["*"],
+    allow_headers=["*"],
+)
+
+@app.get("/health")
+async def health_check():
+    return {"status": "healthy"}
+
+@app.post("/upload_knowledge")
+async def upload_file_to_db(file_json: dict):
+    logger.info(f"上传文件请求参数:{file_json}")
+    parse_file = ProcessDocuments(file_json)
+    resp = await parse_file.process_documents(file_json)
+    # parse_file = ParseFile(file_json)
+    # resp = parse_file.save_file_to_db()
+
+    logger.info(f"上传文件响应结果:{resp}")
+    return JSONResponse(resp)
+
+
+# @app.post("/network/search")
+# async def chat_with_rag(request: Request, chat_json:dict):
+#     retriever = ChatRetrieverRag(chat_json)
+
+#     return EventSourceResponse(retriever.generate_event(chat_json, request), ping=300)
+
+@app.post("/rag/chat")
+async def chat_with_rag(request: Request, chat_json:dict):
+    retriever = ChatRetrieverRag(chat_json)
+
+    return EventSourceResponse(retriever.generate_event(chat_json, request), ping=300)
+
+@app.post("/rag/chat/sync")
+async def chat_with_rag_sync(chat_json: dict):
+    """非流式RAG聊天接口"""
+    logger.info(f"非流式RAG请求参数:{chat_json}")
+    retriever = ChatRetrieverRag(chat_json)
+    result = await retriever.generate_sync_response(chat_json)
+    logger.info(f"非流式RAG响应结果:{result.get('code')}")
+    return JSONResponse(result)
+
+@app.post("/rag/query")
+async def generate_query(request: Request, query_json:dict):
+    logger.info(f"请求参数:{query_json}")
+    relevant_query = ChatRetrieverRag(query_json)
+    relevant_json = await relevant_query.generate_relevant_query(query_json)
+
+    return JSONResponse(relevant_json)
+
+@app.get("/rag/slice/search/{chat_id}")
+async def generate_query(request: Request, chat_id:str = None):
+    chat = ChatRetrieverRag(chat_id=chat_id)
+    chunk_json = await chat.search_slice()
+
+    return JSONResponse(chunk_json)
+
+
+@app.delete("/rag/delete_slice/{slice_id}/{knowledge_id}/{document_id}")
+async def delete_by_chunk_id(slice_id:str=None, knowledge_id:str=None, document_id:str=None):
+    logger.info(f"删除切片接口中,知识库:{knowledge_id}, 切片id:{slice_id}")
+    resp = MilvusOperate(collection_name=knowledge_id)._delete_by_chunk_id(slice_id, knowledge_id, document_id)
+    logger.info(f"删除切片信息的结果:{resp}")
+    return JSONResponse(resp)
+
+@app.delete("/rag/delete_doc/{doc_id}/{knowledge_id}")
+async def delete_by_doc_id(doc_id:str=None, knowledge_id:str=None):
+    logger.info(f"删除文档id接口,知识库:{knowledge_id}, 文档id:{doc_id}")
+    resp = MilvusOperate(collection_name=knowledge_id)._delete_by_doc_id(doc_id=doc_id)
+    logger.info(f"删除文档的结果:{resp}")
+    return JSONResponse(resp)
+
+@app.put("/rag/update_slice")
+async def put_by_id(slice_json:dict):
+    logger.info(f"更新切片信息的请求参数:{slice_json}")
+    collection_name = slice_json.get("knowledge_id")
+    resp = MilvusOperate(collection_name=collection_name)._put_by_id(slice_json)
+
+    logger.info(f"更新切片信息的结果:{resp}")
+    return JSONResponse(resp)
+
+@app.post("/rag/insert_slice")
+async def insert_slice_text(slice_json:dict):
+    logger.info(f"新增切片信息的请求参数:{slice_json}")
+    collection_name = slice_json.get("knowledge_id")
+    resp = MilvusOperate(collection_name=collection_name)._insert_slice(slice_json)
+
+    logger.info(f"新增切片信息的结果:{resp}")
+    return JSONResponse(resp)
+
+@app.get("/rag/search/{knowledge_id}/{slice_id}")
+async def search_by_doc_id(knowledge_id:str=None, slice_id:str=None):
+    # 根据切片id查询切片信息
+    # print(f"知识库:{knowledge_id}, 切片:{slice_id}")
+    logger.info(f"根据切片id查询的数据库名:{knowledge_id},切片id:{slice_id}")
+    collection_name = knowledge_id  # 根据传过来的id处理对应知识库
+    resp = MilvusOperate(collection_name=collection_name)._search_by_chunk_id(slice_id)
+
+    logger.info(f"根据切片id查询结果:{resp}")
+    return JSONResponse(resp)
+
+@app.post("/rag/search_word")
+async def search_by_key_word(search_json:dict):
+    # 根据doc_id 查询切片列表信息
+    collection_name = search_json.get("knowledge_id")
+    logger.info(f"根据关键字请求的参数:{search_json}")
+    resp = MilvusOperate(collection_name=collection_name)._search_by_key_word(search_json)
+
+    logger.info(f"根据关键字查询的结果:{resp}")
+    return JSONResponse(resp)
+
+@app.delete("/rag/delete_knowledge/{knowledge_id}")
+async def delete_collection(knowledge_id: str = None):
+    logger.info(f"删除数据库请求的参数:{knowledge_id}")
+    resp = MilvusOperate(collection_name=knowledge_id)._delete_collection()
+    logger.info(f"删除向量库结果:{resp}")
+
+    return JSONResponse(resp)
+
+@app.post("/rag/create_collection")
+async def create_collection(collection: dict):
+    collection_name = collection.get("knowledge_id")
+    embedding_name = collection.get("embedding_id")
+    logger.info(f"创建向量库的库名:{collection_name},向量名称:{embedding_name}")
+    resp = MilvusOperate(collection_name=collection_name, embedding_name=embedding_name)._create_collection()
+    logger.info(f"创建向量库结果:{resp}")
+    
+    return JSONResponse(resp)
+
+
+# ==================== 任务取消接口 ====================
+
+@app.post("/rag/cancel_task/{task_id}")
+async def cancel_task(task_id: str):
+    """
+    取消正在执行的文档处理任务
+    
+    参数:
+    - task_id: 任务ID(即 document_id)
+    
+    返回:
+    - code: 200 成功, 404 任务不存在, 400 任务已取消
+    """
+    mysql_client = MysqlOperate()
+    # 首先删除 bm_document 表中的记录
+    del_success, del_info = mysql_client.delete_document(task_id)
+
+    success, message = task_registry.cancel(task_id)
+    
+    if success:
+        if del_success:
+            logger.info(f"任务 {task_id} 已被取消,bm_document 记录已删除")
+        else:
+            logger.warning(f"任务 {task_id} 取消成功,但删除 bm_document 记录失败: {del_info}")
+        
+        return JSONResponse({"code": 200, "message": "任务取消成功"})
+    
+    if "不存在" in message:
+        return JSONResponse({"code": 404, "message": message})
+    
+    return JSONResponse({"code": 400, "message": message})
+
+
+if __name__ == "__main__":
+    uvicorn.run(app, host="0.0.0.0", port=6666)

+ 104 - 0
requirements.txt

@@ -0,0 +1,104 @@
+aiohappyeyeballs==2.6.1
+aiohttp==3.11.15
+aiosignal==1.3.2
+annotated-types==0.7.0
+anyio==4.9.0
+argon2-cffi==23.1.0
+argon2-cffi-bindings==21.2.0
+attrs==25.3.0
+certifi==2025.1.31
+cffi==1.17.1
+charset-normalizer==3.4.1
+click==8.1.8
+colorama==0.4.6
+coloredlogs==15.0.1
+cryptography==44.0.2
+dataclasses-json==0.6.7
+distro==1.9.0
+fastapi==0.115.12
+filelock==3.13.1
+flatbuffers==25.2.10
+frozenlist==1.5.0
+fsspec==2024.6.1
+greenlet==3.1.1
+grpcio==1.67.1
+h11==0.14.0
+httpcore==1.0.7
+httpx==0.28.1
+httpx-sse==0.4.0
+huggingface-hub==0.30.1
+humanfriendly==10.0
+idna==3.10
+Jinja2==3.1.4
+jiter==0.9.0
+joblib==1.4.2
+jsonpatch==1.33
+jsonpointer==3.0.0
+langchain==0.3.22
+langchain-community==0.3.18
+langchain-core==0.3.49
+langchain-text-splitters==0.3.7
+langsmith==0.3.21
+MarkupSafe==2.1.5
+marshmallow==3.26.1
+milvus-model==0.2.12
+minio==7.2.15
+mpmath==1.3.0
+multidict==6.3.0
+mypy-extensions==1.0.0
+mysql-connector-python==9.2.0
+networkx==3.3
+numpy==1.26.4
+onnxruntime==1.21.0
+openai==1.72.0
+orjson==3.10.16
+packaging==24.2
+pandas==2.2.3
+pdfminer.six==20250327
+pdfplumber==0.11.6
+pillow==11.0.0
+propcache==0.3.1
+protobuf==6.30.2
+pycparser==2.22
+pycryptodome==3.22.0
+pydantic==2.11.1
+pydantic-settings==2.8.1
+pydantic_core==2.33.0
+pymilvus==2.5.4
+PyMuPDF==1.25.5
+pypdfium2==4.30.1
+pyreadline3==3.5.4
+python-dateutil==2.9.0.post0
+python-dotenv==1.1.0
+pytz==2025.2
+PyYAML==6.0.2
+regex==2024.11.6
+requests==2.32.3
+requests-toolbelt==1.0.0
+safetensors==0.5.3
+scikit-learn==1.6.1
+scipy==1.15.2
+sentence-transformers==4.0.1
+six==1.17.0
+sniffio==1.3.1
+SQLAlchemy==2.0.40
+sse-starlette==2.2.1
+starlette==0.46.1
+sympy==1.13.1
+tenacity==9.0.0
+threadpoolctl==3.6.0
+tokenizers==0.21.1
+torch==2.5.0+cu124
+torchaudio==2.5.0+cu124
+torchvision==0.20.0+cu124
+tqdm==4.67.1
+transformers==4.50.3
+typing-inspect==0.9.0
+typing-inspection==0.4.0
+typing_extensions==4.12.2
+tzdata==2025.2
+ujson==5.10.0
+urllib3==2.3.0
+uvicorn==0.34.0
+yarl==1.18.3
+zstandard==0.23.0

+ 85 - 0
response_info.py

@@ -0,0 +1,85 @@
+database_delete_update_response_mapping = {
+    "delete_query_error": ("根据id查询出错", 500),
+    "delete_no_result": ("向量库中未查询到对应的数据", 200),
+    "delete_error": ("根据id删除数据失败", 500),
+    "delete_success": ("删除成功", 200),
+    "update_query_error": ("更新数据出错", 500),
+    "update_query_no_result": ("未查询到需要更新的数据", 200),
+    "update_error": ("更新数据时出错", 500),
+    "update_success": ("更新成功", 200),
+    "delete_collection_error": ("删除数据库失败", 500),
+    "delete_collection_success": ("删除数据库成功", 200),
+    "create_collection_error": ("创建数据库失败", 500),
+    "create_collection_success": ("创建数据库成功", 200),
+    "insert_success": ("插入切片成功", 200),
+    "insert_error": ("插入切片失败", 500),
+}
+
+
+def generate_message(result):
+    message, code = database_delete_update_response_mapping.get(result)
+
+    response_dict = {
+        "code": code,
+        "message": message
+    }
+    return response_dict
+
+def generate_response(result, page_num=0, page_size=10):
+    if page_num:
+        if not result:
+            resp_dict = {"code": 200, "rows": [], "total": 0}
+    
+        elif "code" in result[0]:
+            resp_dict = {}
+            resp_dict.update(result[0])
+            resp_dict["rows"] = []
+            resp_dict["message"] = "查询向量库出错"
+            resp_dict["total"] = 0
+
+            # return resp_dict
+        else:
+            rows = []
+            total_len = len(result)
+            skip = int(page_num-1) * int(page_size)
+            iter_result = result[skip:skip+page_size]
+            for i in iter_result:
+                d = {}
+                d["slice_id"] = i.get("chunk_id")
+                d["document_id"] = i.get("doc_id")
+                d["slice_text"] = i.get("content")
+                d["slice_char_len"] = i.get("metadata").get("chunk_len")
+                rows.append(d)
+            resp_dict = {
+                "code": 200,
+                "rows": rows,
+                "total": total_len
+            }
+            
+        return resp_dict
+    else:
+        if not result:
+            resp_dict = {"code": 200, "data": {}}
+    
+        elif "code" in result[0]:
+            resp_dict = {}
+            resp_dict.update(result[0])
+            resp_dict["data"] = {}
+            resp_dict["message"] = "查询向量库出错"
+
+            # return resp_dict
+        else:
+            d = {}
+            for i in result:
+                d["slice_id"] = i.get("chunk_id")
+                d["document_id"] = i.get("doc_id")
+                d["slice_text"] = i.get("content")
+                # rows.append(d)
+            resp_dict = {
+                "code": 200,
+                "data": d,
+                # "total": total_len
+            }
+
+        return resp_dict
+    

+ 0 - 0
utils/__init__.py


BIN
utils/__pycache__/__init__.cpython-310.pyc


BIN
utils/__pycache__/__init__.cpython-311.pyc


BIN
utils/__pycache__/get_logger.cpython-310.pyc


BIN
utils/__pycache__/get_logger.cpython-311.pyc


BIN
utils/__pycache__/upload_file_to_oss.cpython-310.pyc


BIN
utils/__pycache__/upload_file_to_oss.cpython-311.pyc


+ 42 - 0
utils/get_logger.py

@@ -0,0 +1,42 @@
+import logging
+from logging.handlers import TimedRotatingFileHandler
+import os
+
+def setup_logger(file_name):
+    # 获取一个日志记录器
+    logger = logging.getLogger(file_name)
+    
+    # 设置日志级别
+    logger.setLevel(logging.DEBUG)  # 设置最低的日志级别为DEBUG
+
+    # 创建一个文件处理器,并设置日志文件的路径
+    # file_handler = logging.FileHandler(f"./logs/{file_name}.log", encoding="utf-8")
+    if not os.path.exists("./logs"):
+        os.makedirs("./logs")
+    log_file_path = os.path.join("./logs", f"{file_name}.log")
+    file_handler = TimedRotatingFileHandler(
+        filename=log_file_path,
+        when="midnight",       # 每天午夜轮转
+        interval=1,            # 每隔1天轮转一次
+        encoding="utf-8"
+    )
+    
+    # 设置文件处理器的日志级别
+    file_handler.setLevel(logging.DEBUG)
+    
+    # 创建一个控制台处理器(可选,用于同时输出到控制台)
+    console_handler = logging.StreamHandler()
+    console_handler.setLevel(logging.DEBUG)
+    
+    # 创建一个格式化器,并设置日志条目的格式
+    formatter = logging.Formatter('%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(message)s')
+    
+    # 将格式化器添加到处理器
+    file_handler.setFormatter(formatter)
+    console_handler.setFormatter(formatter)
+    
+    # 将处理器添加到日志记录器
+    logger.addHandler(file_handler)
+    logger.addHandler(console_handler)
+    
+    return logger

BIN
utils/simsun.ttc


+ 75 - 0
utils/upload_file_to_oss.py

@@ -0,0 +1,75 @@
+from minio import Minio
+from minio.error import S3Error
+from minio.deleteobjects import DeleteObject
+from config import minio_config
+from utils.get_logger import setup_logger
+
+logger = setup_logger(__name__)
+
+class UploadMinio():
+    def __init__(self):
+        self.minio_endpoint = minio_config.get("minio_endpoint")
+        self.minio_access_key = minio_config.get("minio_access_key")
+        self.minio_secret_key = minio_config.get("minio_secret_key")
+        self.minio_bucket = minio_config.get("minio_bucket")
+        self.flag = minio_config.get("flag")
+        self.minio_client = Minio(self.minio_endpoint,
+                    access_key=self.minio_access_key,
+                    secret_key=self.minio_secret_key,
+                    cert_check=False,
+                    # http_client=http_client,
+                    secure=self.flag)  # 如果使用https,请将secure设置为True
+
+    def upload_file(self, local_file_path, minio_bucket_file):
+        try:
+            # 使用put_object方法将文件上传到MinIO
+            self.minio_client.fput_object(self.minio_bucket, minio_bucket_file, local_file_path)
+        
+            logger.info(f"File {local_file_path} uploaded to MinIO successfully.")
+            return True
+        
+        except S3Error as e:
+            logger.error(f"Error uploading file to MinIO: {e}")
+            return False
+
+        except Exception as e:
+            logger.error(f"报错信息:{e}")
+            return False
+        
+    def upload_io_bytes(self, minio_bucket_file, bytes_obj):
+        try:
+            # 使用put_object方法将文件上传到MinIO
+            self.minio_client.put_object(self.minio_bucket,minio_bucket_file, bytes_obj, bytes_obj.tell())
+        
+            logger.info(f"File {minio_bucket_file} uploaded to MinIO successfully.")
+            return True
+        
+        except S3Error as e:
+            logger.error(f"Error uploading file to MinIO: {e}")
+            return False
+
+        except Exception as e:
+            logger.error(f"报错信息:{e}")
+            return False
+        
+    def delete_doc_id_images(self, knowledge_id, doc_id):
+        try:
+            objects = self.minio_client.list_objects(self.minio_bucket, prefix=f"pdf/{knowledge_id}/{doc_id}", recursive=True)
+
+            objects_to_delete = []
+            for obj in objects:
+                objects_to_delete.append(DeleteObject(obj.object_name))
+                # self.minio_client.remove_object(self.minio_bucket, obj.object_name)
+            error_responses = self.minio_client.remove_objects(self.minio_bucket, objects_to_delete)
+            for error in error_responses:
+                if error:
+                    delete_flag = False 
+                    logger.info("Deletion Error: {}".format(error))
+                    break
+            else:
+                logger.info("Sussess")
+                delete_flag = True
+            return delete_flag
+        except Exception as e:
+            logger.error(f"删除minio图片出错:{e}")
+            return False

+ 182 - 0
val/evaluation_results/detailed_results_20250908_144859.json

@@ -0,0 +1,182 @@
+[
+  {
+    "question": "两港大道快速化工程的总监理工程师是谁?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "两港大道(新四平公路~S2)快速化工程的总监理工程师是范益利。",
+    "expected_answer": "根据监理规划,两港大道快速化工程的总监理工程师是范益利。",
+    "expected_contexts": [
+      "项目总监: 范益利"
+    ],
+    "response_time": 17.820696592330933,
+    "has_error": false
+  },
+  {
+    "question": "该工程的建设单位是哪家公司?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "两港大道快速化工程的建设单位是上海临港新城投资建设有限公司。",
+    "expected_answer": "该工程的建设单位是上海临港新城投资建设有限公司。",
+    "expected_contexts": [
+      "建设单位: 上海临港新城投资建设有限公司"
+    ],
+    "response_time": 6.838666200637817,
+    "has_error": false
+  },
+  {
+    "question": "监理合同中约定的监理服务费是多少?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理合同约定的施工监理服务收费总额为3458万元人民币。",
+    "expected_answer": "监理合同中约定的施工监理服务收费为人民币叁仟肆佰伍拾捌万元整(3458万元)。",
+    "expected_contexts": [
+      "合同金额:人民币叁仟肆佰伍拾捌万元整(含税,合同金额包含平行检测费)(3458万元)。"
+    ],
+    "response_time": 6.133613586425781,
+    "has_error": false
+  },
+  {
+    "question": "监理规划中提到的质量控制目标是什么?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理规划中设定的质量控制目标是实现100%的一次验收合格率,并力争获得上海市市政工程金奖。",
+    "expected_answer": "质量控制目标为一次验收合格率100%,并争创上海市市政工程金奖。",
+    "expected_contexts": [
+      "全部工程的施工质量必须达到施工合同的质量要求。质量目标为一次验收合格率100%,争创上海市市政工程金奖。"
+    ],
+    "response_time": 18.263955116271973,
+    "has_error": false
+  },
+  {
+    "question": "根据监理工作总结,项目的主要施工时间段是什么时候?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "两港大道快速化工程的施工工期为2019年12月20日至2021年6月25日。",
+    "expected_answer": "根据监理工作总结,该工程的工期从2019年12月20日至2021年6月25日结束。",
+    "expected_contexts": [
+      "本工程的工期从2019年12月20日至2021年6月25日结束。"
+    ],
+    "response_time": 18.541946411132812,
+    "has_error": false
+  },
+  {
+    "question": "监理规划中列出的旁站监理的重要部位有哪些?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理规划中明确需要旁站监理的关键部位和工序涵盖了道路、桥梁和排水三大工程,具体包括桩基施工中的钢筋笼下放和混凝土灌注,承台、立柱及盖梁的现浇混凝土,以及小箱梁和钢箱梁的整个架设过程等。",
+    "expected_answer": "旁站监理的重要部位和工序包括:桩基(下钢筋笼、混凝土灌注)、承台/立柱/盖梁现浇(混凝土浇筑)、小箱梁/钢箱梁架设(全过程)等。",
+    "expected_contexts": [
+      "旁站监理的重要部位、工序清单:道路工程、桥梁工程、排水工程。桥梁工程:基础及下部构造,桩基(下钢筋笼、混凝土灌注),承台、立柱、盖梁现浇(混凝土浇筑),上部构造,小箱梁架设(全过程),钢箱梁架设(全过程)。"
+    ],
+    "response_time": 18.381253004074097,
+    "has_error": false
+  },
+  {
+    "question": "在监理工作总结中,提到了哪些质量通病问题?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理工作总结指出的主要质量通病包括防撞墙出现裂缝以及内嵌于立柱和盖梁的落水管发生堵塞。",
+    "expected_answer": "监理工作总结中提到的质量通病问题主要有两个:防撞墙裂(纹)缝和落水管堵塞。",
+    "expected_contexts": [
+      "质量通病方面:(1)防撞墙裂(纹)缝;(2)落水管采用内嵌式,埋入立柱和盖梁的落水管均有堵塞情况的发生。"
+    ],
+    "response_time": 5.749252557754517,
+    "has_error": false
+  },
+  {
+    "question": "监理合同中,如果监理单位提出的合理化建议为建设单位节省了投资,是否有奖励?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "根据监理合同第四十五条,若监理方提出的合理化建议被采纳且为委托方带来投资节省,委托方应根据专用条款的约定给予经济奖励。",
+    "expected_answer": "是的,监理合同第四十五条规定,如果监理单位的合理化建议被采纳并节省了投资,建设单位将参照国家规定给予适当奖励。",
+    "expected_contexts": [
+      "第四十五条 监理人在监理工作过程中提出的合理化建议,使委托人得到了经济效益,委托人应按专用条件中的约定给予经济奖励。"
+    ],
+    "response_time": 5.703543186187744,
+    "has_error": false
+  },
+  {
+    "question": "监理规划中,针对工程特点“大规模立柱、盖梁预制及安装”提出了哪些监理控制重点?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理规划针对大规模预制构件的特点,将监理控制重点放在确保预制拼装的高精度和管理大规模吊装作业的高安全风险上。",
+    "expected_answer": "针对该特点,监理控制的重点内容有:预制拼装精度要求高,需设计专用的定位架和调平系统;以及大规模预制构件吊装带来的高安全风险。",
+    "expected_contexts": [
+      "本工程特点一:大规模立柱、盖梁预制及安装。分析: 本工程主线高架立柱、盖梁采用预制拼装工艺,预制工程量非常大,监理控制的重点内容有:预制拼装精度要求高,需设计专用的定位架和调平系统、预制构件大规模预制构件吊装,安全风险高。"
+    ],
+    "response_time": 5.817278861999512,
+    "has_error": false
+  },
+  {
+    "question": "监理工作总结中,平行检测单位是哪家?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "该项目的监理平行检测工作由上海众材工程检测有限公司负责。",
+    "expected_answer": "监理工作总结中提到的监理平行检测单位是上海众材工程检测有限公司。",
+    "expected_contexts": [
+      "监理平行检测单位:上海众材工程检测有限公司"
+    ],
+    "response_time": 5.812741756439209,
+    "has_error": false
+  },
+  {
+    "question": "监理合同中约定的安全监理费用占总监理费用的比例是多少?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理合同的专用条款明确规定,安全监理费用应占监理总费用的10%。",
+    "expected_answer": "根据监理合同专用条件,安全监理费用占总监理费用的10%。",
+    "expected_contexts": [
+      "监理费用中总价的90%为工程监理费,10%为安全监理费用,监理单位应派专职安全监理具体负责本工程的安全监督。"
+    ],
+    "response_time": 4.993794918060303,
+    "has_error": false
+  },
+  {
+    "question": "监理规划中,工程进度控制的目标是什么?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理规划设定的进度控制目标为:严格按照施工节点计划完成各阶段任务,保证在合同总工期内完成所有工程并顺利通过竣工备案,最终按时向建设单位移交。",
+    "expected_answer": "进度控制目标是按期完成施工节点目标,确保在规定的总工期内完成竣工备案程序,并按建设单位要求的竣工程序向建设单位移交工程。",
+    "expected_contexts": [
+      "进度控制目标:按期完成施工节点目标,确保在规定的总工期内完成竣工备案程序、并按建设单位要求的竣工程序向建设单位移交工程。"
+    ],
+    "response_time": 5.845863342285156,
+    "has_error": false
+  },
+  {
+    "question": "在监理工作总结中,共发出了多少份监理工程师通知单?施工方回复情况如何?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "在监理工作期间,共签发了30份监理工程师通知单,施工方全部进行了回复和整改,执行情况良好。",
+    "expected_answer": "总结中提到,共发出监理工程师通知单30份,施工方回复30份,承包商均能按照指令要求落实整改。",
+    "expected_contexts": [
+      "共发出监理工程师通知单共30份, 施工方回复30份,承包商能按照监理指令的要求落实,执行情况良好。"
+    ],
+    "response_time": 6.829167604446411,
+    "has_error": false
+  },
+  {
+    "question": "两港大道快速化工程的勘察单位是哪家公司?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "该工程的勘察工作由上海勘察设计研究院(集团)有限公司承担。",
+    "expected_answer": "勘察单位是上海勘察设计研究院(集团)有限公司。",
+    "expected_contexts": [
+      "勘察单位: 上海勘察设计研究院(集团)有限公司"
+    ],
+    "response_time": 6.828743934631348,
+    "has_error": false
+  },
+  {
+    "question": "监理合同中对监理人员的现场工作时间有何具体要求?如果总监理工程师未达到要求,有何处罚?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理合同附加协议条款规定,总监理工程师每周必须至少有5天在施工现场,否则将处以每天2000元人民币的罚款。",
+    "expected_answer": "合同要求总监理工程师保证每周不少于5天在现场工作。如果违反,监理人需向委托人承担人民币2000元/天的违约金。",
+    "expected_contexts": [
+      "总监理工程师保证每周不少于5天在现场工作,否则监理人向委托人承担人民币2000元/天的违约金。"
+    ],
+    "response_time": 6.968388557434082,
+    "has_error": false
+  }
+]

+ 182 - 0
val/evaluation_results/detailed_results_20250908_151025.json

@@ -0,0 +1,182 @@
+[
+  {
+    "question": "两港大道快速化工程的总监理工程师是谁?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "两港大道(新四平公路~S2)快速化工程的总监理工程师是范益利。",
+    "expected_answer": "根据监理规划,两港大道快速化工程的总监理工程师是范益利。",
+    "expected_contexts": [
+      "项目总监: 范益利"
+    ],
+    "response_time": 6.406023263931274,
+    "has_error": false
+  },
+  {
+    "question": "该工程的建设单位是哪家公司?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "两港大道快速化工程的建设单位是上海临港新城投资建设有限公司。",
+    "expected_answer": "该工程的建设单位是上海临港新城投资建设有限公司。",
+    "expected_contexts": [
+      "建设单位: 上海临港新城投资建设有限公司"
+    ],
+    "response_time": 5.342723608016968,
+    "has_error": false
+  },
+  {
+    "question": "监理合同中约定的监理服务费是多少?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理合同约定的施工监理服务收费总额为3458万元人民币。",
+    "expected_answer": "监理合同中约定的施工监理服务收费为人民币叁仟肆佰伍拾捌万元整(3458万元)。",
+    "expected_contexts": [
+      "合同金额:人民币叁仟肆佰伍拾捌万元整(含税,合同金额包含平行检测费)(3458万元)。"
+    ],
+    "response_time": 5.33678936958313,
+    "has_error": false
+  },
+  {
+    "question": "监理规划中提到的质量控制目标是什么?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理规划中设定的质量控制目标是实现100%的一次验收合格率,并力争获得上海市市政工程金奖。",
+    "expected_answer": "质量控制目标为一次验收合格率100%,并争创上海市市政工程金奖。",
+    "expected_contexts": [
+      "全部工程的施工质量必须达到施工合同的质量要求。质量目标为一次验收合格率100%,争创上海市市政工程金奖。"
+    ],
+    "response_time": 5.719094276428223,
+    "has_error": false
+  },
+  {
+    "question": "根据监理工作总结,项目的主要施工时间段是什么时候?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "两港大道快速化工程的施工工期为2019年12月20日至2021年6月25日。",
+    "expected_answer": "根据监理工作总结,该工程的工期从2019年12月20日至2021年6月25日结束。",
+    "expected_contexts": [
+      "本工程的工期从2019年12月20日至2021年6月25日结束。"
+    ],
+    "response_time": 5.935399532318115,
+    "has_error": false
+  },
+  {
+    "question": "监理规划中列出的旁站监理的重要部位有哪些?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理规划中明确需要旁站监理的关键部位和工序涵盖了道路、桥梁和排水三大工程,具体包括桩基施工中的钢筋笼下放和混凝土灌注,承台、立柱及盖梁的现浇混凝土,以及小箱梁和钢箱梁的整个架设过程等。",
+    "expected_answer": "旁站监理的重要部位和工序包括:桩基(下钢筋笼、混凝土灌注)、承台/立柱/盖梁现浇(混凝土浇筑)、小箱梁/钢箱梁架设(全过程)等。",
+    "expected_contexts": [
+      "旁站监理的重要部位、工序清单:道路工程、桥梁工程、排水工程。桥梁工程:基础及下部构造,桩基(下钢筋笼、混凝土灌注),承台、立柱、盖梁现浇(混凝土浇筑),上部构造,小箱梁架设(全过程),钢箱梁架设(全过程)。"
+    ],
+    "response_time": 6.01474928855896,
+    "has_error": false
+  },
+  {
+    "question": "在监理工作总结中,提到了哪些质量通病问题?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理工作总结指出的主要质量通病包括防撞墙出现裂缝以及内嵌于立柱和盖梁的落水管发生堵塞。",
+    "expected_answer": "监理工作总结中提到的质量通病问题主要有两个:防撞墙裂(纹)缝和落水管堵塞。",
+    "expected_contexts": [
+      "质量通病方面:(1)防撞墙裂(纹)缝;(2)落水管采用内嵌式,埋入立柱和盖梁的落水管均有堵塞情况的发生。"
+    ],
+    "response_time": 7.024769306182861,
+    "has_error": false
+  },
+  {
+    "question": "监理合同中,如果监理单位提出的合理化建议为建设单位节省了投资,是否有奖励?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "根据监理合同第四十五条,若监理方提出的合理化建议被采纳且为委托方带来投资节省,委托方应根据专用条款的约定给予经济奖励。",
+    "expected_answer": "是的,监理合同第四十五条规定,如果监理单位的合理化建议被采纳并节省了投资,建设单位将参照国家规定给予适当奖励。",
+    "expected_contexts": [
+      "第四十五条 监理人在监理工作过程中提出的合理化建议,使委托人得到了经济效益,委托人应按专用条件中的约定给予经济奖励。"
+    ],
+    "response_time": 6.7044312953948975,
+    "has_error": false
+  },
+  {
+    "question": "监理规划中,针对工程特点“大规模立柱、盖梁预制及安装”提出了哪些监理控制重点?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理规划针对大规模预制构件的特点,将监理控制重点放在确保预制拼装的高精度和管理大规模吊装作业的高安全风险上。",
+    "expected_answer": "针对该特点,监理控制的重点内容有:预制拼装精度要求高,需设计专用的定位架和调平系统;以及大规模预制构件吊装带来的高安全风险。",
+    "expected_contexts": [
+      "本工程特点一:大规模立柱、盖梁预制及安装。分析: 本工程主线高架立柱、盖梁采用预制拼装工艺,预制工程量非常大,监理控制的重点内容有:预制拼装精度要求高,需设计专用的定位架和调平系统、预制构件大规模预制构件吊装,安全风险高。"
+    ],
+    "response_time": 7.855881452560425,
+    "has_error": false
+  },
+  {
+    "question": "监理工作总结中,平行检测单位是哪家?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "该项目的监理平行检测工作由上海众材工程检测有限公司负责。",
+    "expected_answer": "监理工作总结中提到的监理平行检测单位是上海众材工程检测有限公司。",
+    "expected_contexts": [
+      "监理平行检测单位:上海众材工程检测有限公司"
+    ],
+    "response_time": 6.30465841293335,
+    "has_error": false
+  },
+  {
+    "question": "监理合同中约定的安全监理费用占总监理费用的比例是多少?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理合同的专用条款明确规定,安全监理费用应占监理总费用的10%。",
+    "expected_answer": "根据监理合同专用条件,安全监理费用占总监理费用的10%。",
+    "expected_contexts": [
+      "监理费用中总价的90%为工程监理费,10%为安全监理费用,监理单位应派专职安全监理具体负责本工程的安全监督。"
+    ],
+    "response_time": 6.658929347991943,
+    "has_error": false
+  },
+  {
+    "question": "监理规划中,工程进度控制的目标是什么?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理规划设定的进度控制目标为:严格按照施工节点计划完成各阶段任务,保证在合同总工期内完成所有工程并顺利通过竣工备案,最终按时向建设单位移交。",
+    "expected_answer": "进度控制目标是按期完成施工节点目标,确保在规定的总工期内完成竣工备案程序,并按建设单位要求的竣工程序向建设单位移交工程。",
+    "expected_contexts": [
+      "进度控制目标:按期完成施工节点目标,确保在规定的总工期内完成竣工备案程序、并按建设单位要求的竣工程序向建设单位移交工程。"
+    ],
+    "response_time": 6.6157426834106445,
+    "has_error": false
+  },
+  {
+    "question": "在监理工作总结中,共发出了多少份监理工程师通知单?施工方回复情况如何?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "在监理工作期间,共签发了30份监理工程师通知单,施工方全部进行了回复和整改,执行情况良好。",
+    "expected_answer": "总结中提到,共发出监理工程师通知单30份,施工方回复30份,承包商均能按照指令要求落实整改。",
+    "expected_contexts": [
+      "共发出监理工程师通知单共30份, 施工方回复30份,承包商能按照监理指令的要求落实,执行情况良好。"
+    ],
+    "response_time": 7.517377853393555,
+    "has_error": false
+  },
+  {
+    "question": "两港大道快速化工程的勘察单位是哪家公司?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "该工程的勘察工作由上海勘察设计研究院(集团)有限公司承担。",
+    "expected_answer": "勘察单位是上海勘察设计研究院(集团)有限公司。",
+    "expected_contexts": [
+      "勘察单位: 上海勘察设计研究院(集团)有限公司"
+    ],
+    "response_time": 7.150101661682129,
+    "has_error": false
+  },
+  {
+    "question": "监理合同中对监理人员的现场工作时间有何具体要求?如果总监理工程师未达到要求,有何处罚?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "监理合同附加协议条款规定,总监理工程师每周必须至少有5天在施工现场,否则将处以每天2000元人民币的罚款。",
+    "expected_answer": "合同要求总监理工程师保证每周不少于5天在现场工作。如果违反,监理人需向委托人承担人民币2000元/天的违约金。",
+    "expected_contexts": [
+      "总监理工程师保证每周不少于5天在现场工作,否则监理人向委托人承担人民币2000元/天的违约金。"
+    ],
+    "response_time": 7.4802024364471436,
+    "has_error": false
+  }
+]

+ 122 - 0
val/evaluation_results/detailed_results_20250908_151739.json

@@ -0,0 +1,122 @@
+[
+  {
+    "question": "公司对于短期出差的住宿标准是如何规定的?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "短期出差的住宿标准是:一线城市每晚300元,其他城市每晚250元。",
+    "expected_answer": "根据出差管理制度,短期出差在一线城市住宿标准为300元/晚,在其他城市为250元/晚。",
+    "expected_contexts": [
+      "城市分类,短期出差,中长期出差,备注\r\n一线城市,标间: 300 元,当地租房为优先,如客户提供住宿,优先选择\r\n其他城市,标间: 250 元,当地租房为优先,如客户提供住宿,优先选择"
+    ],
+    "response_time": 6.453280925750732,
+    "has_error": false
+  },
+  {
+    "question": "出差的交通费用报销有什么限制?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "出差报销的交通费上限为公共交通和出租车费用总和的120%。",
+    "expected_answer": "出差交通费用的报销上限是公共交通和出租车总额的120%,超出部分需要自费。",
+    "expected_contexts": [
+      "不限制出差人员的出行方式,以上公共交通 + 出租车的总额的 120% 作为出差报销上限,超额部分自费。"
+    ],
+    "response_time": 8.120678424835205,
+    "has_error": false
+  },
+  {
+    "question": "如何计算出差补助金额?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "出差补助的计算方式为:出差补助乘以实际工作日。",
+    "expected_answer": "出差补助金额的计算方法是:出差补助标准乘以实际工作日。",
+    "expected_contexts": [
+      "计算方法:出差补助 * 实际工作日 = 本次应发出差补助。"
+    ],
+    "response_time": 7.363526821136475,
+    "has_error": false
+  },
+  {
+    "question": "《出差管理制度》何时开始实施?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "该制度自2025年7月1日开始执行。",
+    "expected_answer": "本制度自2025年7月1日起实施。",
+    "expected_contexts": [
+      "本制度自2025年7月1日起实施。"
+    ],
+    "response_time": 6.7273571491241455,
+    "has_error": false
+  },
+  {
+    "question": "如果出差地点是日本,T11职级的员工每天能获得多少出差补助?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "在日本出差时,T11-T15职级的员工每天补助为7500日元。",
+    "expected_answer": "如果出差地点是日本,T11职级的员工每天能获得7500日元的出差补助。",
+    "expected_contexts": [
+      "出差日本按如下方案执行\r\n\r\n职级,按实际工作日结算,汇率\r\nT6-T10,5000 日元 / 工作日,0.05\r\nT11-T15,7500 日元 / 工作日,0.05"
+    ],
+    "response_time": 6.635847806930542,
+    "has_error": false
+  },
+  {
+    "question": "如果客户承担了出差费用,公司还需要额外支付吗?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "如果出差费用由客户承担并直接支付给员工,公司将不再重复支付。",
+    "expected_answer": "如果客户承担了出差费用及补贴并直接支付给员工,公司将不再承担相关费用。",
+    "expected_contexts": [
+      "客户承担出差费用及补贴的,直接支付给员工的,我司不再承担相关费用。"
+    ],
+    "response_time": 6.905952453613281,
+    "has_error": false
+  },
+  {
+    "question": "《出差管理制度》中规定的“其他城市”是指哪些地方?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "其他城市是指北京、上海、广州、深圳以外的所有城市。",
+    "expected_answer": "在《出差管理制度》中,“其他城市”指的是一线城市(北京、上海、广州、深圳)以外的城市。",
+    "expected_contexts": [
+      "名词,解释\r\nBASE 地,劳动合同签署的工作地或居住地\r\n一线城市,北京、上海、广州、深圳\r\n其他城市,一线城市以外"
+    ],
+    "response_time": 6.276569843292236,
+    "has_error": false
+  },
+  {
+    "question": "出差补助的发放流程是怎样的?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "员工通过PAPB系统提交申请,公司根据天数核算补助金额,然后财务直接发放到员工账户。",
+    "expected_answer": "员工需要在公司内部PAPB系统填写出差申请,公司会根据工作天数核定补贴金额,然后由财务部门将出差补助发放到员工账户。",
+    "expected_contexts": [
+      "员工自行登录公司内部 PAPB 系统填写完整的出差申请,出差补助无需提供发票,公司将根据出差的工作天数核定补贴金额,财务将出差补助发放到员工账户。"
+    ],
+    "response_time": 6.887280464172363,
+    "has_error": false
+  },
+  {
+    "question": "出差人员在什么情况下可以选择乘坐出租车?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "在时间紧急、安全或行李较多等特殊情况,以及加班错过末班车时,可以乘坐出租车。",
+    "expected_answer": "在特殊情况下(如时间、安全、行李等),出差人员可以选择乘坐出租车往返于项目地和酒店,或者在加班错过末班车时申请出租车。",
+    "expected_contexts": [
+      "特殊情况下(时间,安全,行李等情况下)出租车形式往返\r\n1. Base 地或中转站到机场 / 高铁往返(限同城)\r\n2. 项目地到酒店或宿舍、居住地往返(限同城)\r\n3. 加班错过末班车的情况下向 PM 申请(限同城)"
+    ],
+    "response_time": 5.919975280761719,
+    "has_error": false
+  },
+  {
+    "question": "日本以外的其他亚洲国家出差补助是多少?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "在日本以外的其他亚洲国家出差,每天的出差补助为250元。",
+    "expected_answer": "除了日本之外的其他亚洲国家,出差补助统一为250元/工作日。",
+    "expected_contexts": [
+      "出差除日本外的其他亚洲国家,统一按 250 元 / 工作日结算。"
+    ],
+    "response_time": 5.9771270751953125,
+    "has_error": false
+  }
+]

+ 122 - 0
val/evaluation_results/detailed_results_20250908_152516.json

@@ -0,0 +1,122 @@
+[
+  {
+    "question": "公司对于短期出差的住宿标准是如何规定的?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "短期出差的住宿标准是:一线城市每晚300元,其他城市每晚250元。",
+    "expected_answer": "根据出差管理制度,短期出差在一线城市住宿标准为300元/晚,在其他城市为250元/晚。",
+    "expected_contexts": [
+      "城市分类,短期出差,中长期出差,备注\r\n一线城市,标间: 300 元,当地租房为优先,如客户提供住宿,优先选择\r\n其他城市,标间: 250 元,当地租房为优先,如客户提供住宿,优先选择"
+    ],
+    "response_time": 6.1450488567352295,
+    "has_error": false
+  },
+  {
+    "question": "出差的交通费用报销有什么限制?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "出差报销的交通费上限为公共交通和出租车费用总和的120%。",
+    "expected_answer": "出差交通费用的报销上限是公共交通和出租车总额的120%,超出部分需要自费。",
+    "expected_contexts": [
+      "不限制出差人员的出行方式,以上公共交通 + 出租车的总额的 120% 作为出差报销上限,超额部分自费。"
+    ],
+    "response_time": 6.456425905227661,
+    "has_error": false
+  },
+  {
+    "question": "如何计算出差补助金额?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "出差补助的计算方式为:出差补助乘以实际工作日。",
+    "expected_answer": "出差补助金额的计算方法是:出差补助标准乘以实际工作日。",
+    "expected_contexts": [
+      "计算方法:出差补助 * 实际工作日 = 本次应发出差补助。"
+    ],
+    "response_time": 6.747356653213501,
+    "has_error": false
+  },
+  {
+    "question": "《出差管理制度》何时开始实施?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "该制度自2025年7月1日开始执行。",
+    "expected_answer": "本制度自2025年7月1日起实施。",
+    "expected_contexts": [
+      "本制度自2025年7月1日起实施。"
+    ],
+    "response_time": 5.753298282623291,
+    "has_error": false
+  },
+  {
+    "question": "如果出差地点是日本,T11职级的员工每天能获得多少出差补助?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "在日本出差时,T11-T15职级的员工每天补助为7500日元。",
+    "expected_answer": "如果出差地点是日本,T11职级的员工每天能获得7500日元的出差补助。",
+    "expected_contexts": [
+      "出差日本按如下方案执行\r\n\r\n职级,按实际工作日结算,汇率\r\nT6-T10,5000 日元 / 工作日,0.05\r\nT11-T15,7500 日元 / 工作日,0.05"
+    ],
+    "response_time": 5.22356104850769,
+    "has_error": false
+  },
+  {
+    "question": "如果客户承担了出差费用,公司还需要额外支付吗?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "如果出差费用由客户承担并直接支付给员工,公司将不再重复支付。",
+    "expected_answer": "如果客户承担了出差费用及补贴并直接支付给员工,公司将不再承担相关费用。",
+    "expected_contexts": [
+      "客户承担出差费用及补贴的,直接支付给员工的,我司不再承担相关费用。"
+    ],
+    "response_time": 5.627553224563599,
+    "has_error": false
+  },
+  {
+    "question": "《出差管理制度》中规定的“其他城市”是指哪些地方?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "其他城市是指北京、上海、广州、深圳以外的所有城市。",
+    "expected_answer": "在《出差管理制度》中,“其他城市”指的是一线城市(北京、上海、广州、深圳)以外的城市。",
+    "expected_contexts": [
+      "名词,解释\r\nBASE 地,劳动合同签署的工作地或居住地\r\n一线城市,北京、上海、广州、深圳\r\n其他城市,一线城市以外"
+    ],
+    "response_time": 6.771915912628174,
+    "has_error": false
+  },
+  {
+    "question": "出差补助的发放流程是怎样的?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "员工通过PAPB系统提交申请,公司根据天数核算补助金额,然后财务直接发放到员工账户。",
+    "expected_answer": "员工需要在公司内部PAPB系统填写出差申请,公司会根据工作天数核定补贴金额,然后由财务部门将出差补助发放到员工账户。",
+    "expected_contexts": [
+      "员工自行登录公司内部 PAPB 系统填写完整的出差申请,出差补助无需提供发票,公司将根据出差的工作天数核定补贴金额,财务将出差补助发放到员工账户。"
+    ],
+    "response_time": 5.367432594299316,
+    "has_error": false
+  },
+  {
+    "question": "出差人员在什么情况下可以选择乘坐出租车?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "在时间紧急、安全或行李较多等特殊情况,以及加班错过末班车时,可以乘坐出租车。",
+    "expected_answer": "在特殊情况下(如时间、安全、行李等),出差人员可以选择乘坐出租车往返于项目地和酒店,或者在加班错过末班车时申请出租车。",
+    "expected_contexts": [
+      "特殊情况下(时间,安全,行李等情况下)出租车形式往返\r\n1. Base 地或中转站到机场 / 高铁往返(限同城)\r\n2. 项目地到酒店或宿舍、居住地往返(限同城)\r\n3. 加班错过末班车的情况下向 PM 申请(限同城)"
+    ],
+    "response_time": 6.906524658203125,
+    "has_error": false
+  },
+  {
+    "question": "日本以外的其他亚洲国家出差补助是多少?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "在日本以外的其他亚洲国家出差,每天的出差补助为250元。",
+    "expected_answer": "除了日本之外的其他亚洲国家,出差补助统一为250元/工作日。",
+    "expected_contexts": [
+      "出差除日本外的其他亚洲国家,统一按 250 元 / 工作日结算。"
+    ],
+    "response_time": 4.708780288696289,
+    "has_error": false
+  }
+]

+ 122 - 0
val/evaluation_results/detailed_results_20250908_153050.json

@@ -0,0 +1,122 @@
+[
+  {
+    "question": "公司对于短期出差的住宿标准是如何规定的?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "短期出差的住宿标准是:一线城市每晚300元,其他城市每晚250元。",
+    "expected_answer": "根据出差管理制度,短期出差在一线城市住宿标准为300元/晚,在其他城市为250元/晚。",
+    "expected_contexts": [
+      "城市分类,短期出差,中长期出差,备注\r\n一线城市,标间: 300 元,当地租房为优先,如客户提供住宿,优先选择\r\n其他城市,标间: 250 元,当地租房为优先,如客户提供住宿,优先选择"
+    ],
+    "response_time": 5.386599540710449,
+    "has_error": false
+  },
+  {
+    "question": "出差的交通费用报销有什么限制?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "出差报销的交通费上限为公共交通和出租车费用总和的120%。",
+    "expected_answer": "出差交通费用的报销上限是公共交通和出租车总额的120%,超出部分需要自费。",
+    "expected_contexts": [
+      "不限制出差人员的出行方式,以上公共交通 + 出租车的总额的 120% 作为出差报销上限,超额部分自费。"
+    ],
+    "response_time": 5.677712678909302,
+    "has_error": false
+  },
+  {
+    "question": "如何计算出差补助金额?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "出差补助的计算方式为:出差补助乘以实际工作日。",
+    "expected_answer": "出差补助金额的计算方法是:出差补助标准乘以实际工作日。",
+    "expected_contexts": [
+      "计算方法:出差补助 * 实际工作日 = 本次应发出差补助。"
+    ],
+    "response_time": 5.332693099975586,
+    "has_error": false
+  },
+  {
+    "question": "《出差管理制度》何时开始实施?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "该制度自2025年7月1日开始执行。",
+    "expected_answer": "本制度自2025年7月1日起实施。",
+    "expected_contexts": [
+      "本制度自2025年7月1日起实施。"
+    ],
+    "response_time": 6.091648578643799,
+    "has_error": false
+  },
+  {
+    "question": "如果出差地点是日本,T11职级的员工每天能获得多少出差补助?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "在日本出差时,T11-T15职级的员工每天补助为7500日元。",
+    "expected_answer": "如果出差地点是日本,T11职级的员工每天能获得7500日元的出差补助。",
+    "expected_contexts": [
+      "出差日本按如下方案执行\r\n\r\n职级,按实际工作日结算,汇率\r\nT6-T10,5000 日元 / 工作日,0.05\r\nT11-T15,7500 日元 / 工作日,0.05"
+    ],
+    "response_time": 6.409893751144409,
+    "has_error": false
+  },
+  {
+    "question": "如果客户承担了出差费用,公司还需要额外支付吗?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "如果出差费用由客户承担并直接支付给员工,公司将不再重复支付。",
+    "expected_answer": "如果客户承担了出差费用及补贴并直接支付给员工,公司将不再承担相关费用。",
+    "expected_contexts": [
+      "客户承担出差费用及补贴的,直接支付给员工的,我司不再承担相关费用。"
+    ],
+    "response_time": 16.947388172149658,
+    "has_error": false
+  },
+  {
+    "question": "《出差管理制度》中规定的“其他城市”是指哪些地方?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "其他城市是指北京、上海、广州、深圳以外的所有城市。",
+    "expected_answer": "在《出差管理制度》中,“其他城市”指的是一线城市(北京、上海、广州、深圳)以外的城市。",
+    "expected_contexts": [
+      "名词,解释\r\nBASE 地,劳动合同签署的工作地或居住地\r\n一线城市,北京、上海、广州、深圳\r\n其他城市,一线城市以外"
+    ],
+    "response_time": 5.92538857460022,
+    "has_error": false
+  },
+  {
+    "question": "出差补助的发放流程是怎样的?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "员工通过PAPB系统提交申请,公司根据天数核算补助金额,然后财务直接发放到员工账户。",
+    "expected_answer": "员工需要在公司内部PAPB系统填写出差申请,公司会根据工作天数核定补贴金额,然后由财务部门将出差补助发放到员工账户。",
+    "expected_contexts": [
+      "员工自行登录公司内部 PAPB 系统填写完整的出差申请,出差补助无需提供发票,公司将根据出差的工作天数核定补贴金额,财务将出差补助发放到员工账户。"
+    ],
+    "response_time": 7.455443620681763,
+    "has_error": false
+  },
+  {
+    "question": "出差人员在什么情况下可以选择乘坐出租车?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "在时间紧急、安全或行李较多等特殊情况,以及加班错过末班车时,可以乘坐出租车。",
+    "expected_answer": "在特殊情况下(如时间、安全、行李等),出差人员可以选择乘坐出租车往返于项目地和酒店,或者在加班错过末班车时申请出租车。",
+    "expected_contexts": [
+      "特殊情况下(时间,安全,行李等情况下)出租车形式往返\r\n1. Base 地或中转站到机场 / 高铁往返(限同城)\r\n2. 项目地到酒店或宿舍、居住地往返(限同城)\r\n3. 加班错过末班车的情况下向 PM 申请(限同城)"
+    ],
+    "response_time": 4.789813280105591,
+    "has_error": false
+  },
+  {
+    "question": "日本以外的其他亚洲国家出差补助是多少?",
+    "predicted_answer": "",
+    "predicted_contexts": [],
+    "ground_truth": "在日本以外的其他亚洲国家出差,每天的出差补助为250元。",
+    "expected_answer": "除了日本之外的其他亚洲国家,出差补助统一为250元/工作日。",
+    "expected_contexts": [
+      "出差除日本外的其他亚洲国家,统一按 250 元 / 工作日结算。"
+    ],
+    "response_time": 7.320075511932373,
+    "has_error": false
+  }
+]

+ 75 - 0
val/evaluation_results/metrics_20250908_144859.json

@@ -0,0 +1,75 @@
+{
+  "timestamp": "2025-09-08T14:48:59.419044",
+  "config": {
+    "rag_api": {
+      "url": "http://localhost:6000/rag/chat",
+      "timeout": 60,
+      "max_retries": 3,
+      "retry_delay": 1
+    },
+    "rag_request": {
+      "appId": "2924812721300312064",
+      "desc": "高井信息员工手册,出差自律制度等",
+      "isDeepThink": "N",
+      "knowledgeIds": [
+        "a2963496869283893248",
+        "a2963501316240183296"
+      ],
+      "knowledgeInfo": "{\"param_desc\":\"strict\",\"show_recall_result\":true,\"recall_method\":\"embedding\",\"rerank_status\":true,\"rerank_model_name\":\"rerank\",\"slice_config_type\":\"customized\",\"rerank_index_type_list\":[{\"index_type_id\":0,\"knowledge_id\":[\"a2924802310568022016\"]}],\"recall_index_type_list\":[{\"index_type_id\":0,\"knowledge_id\":[\"a2924802310568022016\"]}]}",
+      "maxToken": 8192,
+      "model": "DeepSeek-R1-Distill-Qwen-14B",
+      "name": "高井信息公司管理制度",
+      "params": {},
+      "prompt": "你是一位知识检索助手,你必须并且只能从我发送的众多知识片段中寻找能够解决用户输入问题的最优答案,并且在执行任务的过程中严格执行规定的要求。\n\n知识片段如下:\n{{知识}}\n\n规定要求:\n- 找到答案就仅使用知识片段中的原文回答用户的提问;\n- 找不到答案就用自身知识并且告诉用户该信息不是来自文档;\n- 所引用的文本片段中所包含的示意图占位符必须进行返回,占位符格式参考:【示意图序号_编号】\n  - 严禁输出任何知识片段中不存在的示意图占位符;\n  - 输出的内容必须删除其中包含的任何图注、序号等信息。例如:\"进入登录页面(图1.1)\"需要从文字中删除图序,回复效果为:\"进入登录页面\";\"如图所示1.1\",回复效果为:\"如图所示\";\n- 格式规范\n  - 文档中会出现包含表格的情况,表格是以图片标识符的形式呈现,表格中缺失数据时候返回空单元格;\n  - 如果需要用到表格中的数据,以markdown格式输出表格中的数据;\n  - 避免使用代码块语法回复信息;\n  - 回复的开头语不要输出诸如:\"我想\",\"我认为\",\"think\"等相关语义的文本。\n\n严格执行规定要求,不要复述问题,直接开始回答。\n\n用户输入问题:\n{{用户}}",
+      "status": "3",
+      "temperature": "0.01",
+      "topP": "0.5",
+      "typeId": 40,
+      "embeddingId": "multilingual-e5-large-instruct"
+    },
+    "evaluation": {
+      "val_data_path": "val_data.json",
+      "batch_size": 3,
+      "output_dir": "evaluation_results",
+      "save_csv": true
+    }
+  },
+  "metrics": {
+    "total_questions": 15,
+    "answered_questions": 0,
+    "answer_rate": 0.0,
+    "context_retrieval_rate": 0.0,
+    "error_rate": 0.0,
+    "exact_match_rate": 0.0,
+    "partial_match_rate": 0.0,
+    "semantic_match_rate": 0.0,
+    "avg_response_time": 9.368593708674114,
+    "total_evaluation_time": 60.65332102775574,
+    "questions_per_second": 0.2473071506362497
+  },
+  "stats": {
+    "total_questions": 15,
+    "successful_calls": 0,
+    "failed_calls": 0,
+    "empty_answers": 15,
+    "response_times": [
+      6.133613586425781,
+      6.838666200637817,
+      17.820696592330933,
+      18.263955116271973,
+      18.381253004074097,
+      18.541946411132812,
+      5.703543186187744,
+      5.749252557754517,
+      5.817278861999512,
+      4.993794918060303,
+      5.812741756439209,
+      5.845863342285156,
+      6.829167604446411,
+      6.828743934631348,
+      6.968388557434082
+    ],
+    "start_time": 1757314078.7646284,
+    "end_time": 1757314139.4179494
+  }
+}

+ 76 - 0
val/evaluation_results/metrics_20250908_151025.json

@@ -0,0 +1,76 @@
+{
+  "timestamp": "2025-09-08T15:10:25.004689",
+  "config": {
+    "rag_api": {
+      "url": "http://localhost:6000/rag/chat",
+      "timeout": 60,
+      "max_retries": 3,
+      "retry_delay": 1
+    },
+    "rag_request": {
+      "appId": "2924812721300312064",
+      "desc": "高井信息员工手册,出差自律制度等",
+      "isDeepThink": "N",
+      "knowledgeIds": [
+        "a2963496869283893248",
+        "a2963496869283893248",
+        "a2963501316240183296"
+      ],
+      "knowledgeInfo": "{\"param_desc\":\"strict\",\"show_recall_result\":true,\"recall_method\":\"embedding\",\"rerank_status\":true,\"rerank_model_name\":\"rerank\",\"slice_config_type\":\"customized\",\"rerank_index_type_list\":[{\"index_type_id\":0,\"knowledge_id\":[\"a2924802310568022016\"]}],\"recall_index_type_list\":[{\"index_type_id\":0,\"knowledge_id\":[\"a2924802310568022016\"]}]}",
+      "maxToken": 8192,
+      "model": "DeepSeek-R1-Distill-Qwen-14B",
+      "name": "高井信息公司管理制度",
+      "params": {},
+      "prompt": "你是一位知识检索助手,你必须并且只能从我发送的众多知识片段中寻找能够解决用户输入问题的最优答案,并且在执行任务的过程中严格执行规定的要求。\n\n知识片段如下:\n{{知识}}\n\n规定要求:\n- 找到答案就仅使用知识片段中的原文回答用户的提问;\n- 找不到答案就用自身知识并且告诉用户该信息不是来自文档;\n- 所引用的文本片段中所包含的示意图占位符必须进行返回,占位符格式参考:【示意图序号_编号】\n  - 严禁输出任何知识片段中不存在的示意图占位符;\n  - 输出的内容必须删除其中包含的任何图注、序号等信息。例如:\"进入登录页面(图1.1)\"需要从文字中删除图序,回复效果为:\"进入登录页面\";\"如图所示1.1\",回复效果为:\"如图所示\";\n- 格式规范\n  - 文档中会出现包含表格的情况,表格是以图片标识符的形式呈现,表格中缺失数据时候返回空单元格;\n  - 如果需要用到表格中的数据,以markdown格式输出表格中的数据;\n  - 避免使用代码块语法回复信息;\n  - 回复的开头语不要输出诸如:\"我想\",\"我认为\",\"think\"等相关语义的文本。\n\n严格执行规定要求,不要复述问题,直接开始回答。\n\n用户输入问题:\n{{用户}}",
+      "status": "3",
+      "temperature": "0.01",
+      "topP": "0.5",
+      "typeId": 40,
+      "embeddingId": "multilingual-e5-large-instruct"
+    },
+    "evaluation": {
+      "val_data_path": "val_data.json",
+      "batch_size": 3,
+      "output_dir": "evaluation_results",
+      "save_csv": true
+    }
+  },
+  "metrics": {
+    "total_questions": 15,
+    "answered_questions": 0,
+    "answer_rate": 0.0,
+    "context_retrieval_rate": 0.0,
+    "error_rate": 0.0,
+    "exact_match_rate": 0.0,
+    "partial_match_rate": 0.0,
+    "semantic_match_rate": 0.0,
+    "avg_response_time": 6.537791585922241,
+    "total_evaluation_time": 39.194788455963135,
+    "questions_per_second": 0.3827039407765418
+  },
+  "stats": {
+    "total_questions": 15,
+    "successful_calls": 0,
+    "failed_calls": 0,
+    "empty_answers": 15,
+    "response_times": [
+      5.33678936958313,
+      5.342723608016968,
+      6.406023263931274,
+      5.719094276428223,
+      5.935399532318115,
+      6.01474928855896,
+      6.7044312953948975,
+      7.024769306182861,
+      7.855881452560425,
+      6.30465841293335,
+      6.6157426834106445,
+      6.658929347991943,
+      7.150101661682129,
+      7.4802024364471436,
+      7.517377853393555
+    ],
+    "start_time": 1757315385.8088439,
+    "end_time": 1757315425.0036323
+  }
+}

+ 71 - 0
val/evaluation_results/metrics_20250908_151739.json

@@ -0,0 +1,71 @@
+{
+  "timestamp": "2025-09-08T15:17:39.534424",
+  "config": {
+    "rag_api": {
+      "url": "http://localhost:6000/rag/chat",
+      "timeout": 60,
+      "max_retries": 3,
+      "retry_delay": 1
+    },
+    "rag_request": {
+      "appId": "2924812721300312064",
+      "desc": "高井信息员工手册,出差自律制度等",
+      "isDeepThink": "N",
+      "knowledgeIds": [
+        "a2963496869283893248",
+        "a2963496869283893248",
+        "a2963501316240183296"
+      ],
+      "knowledgeInfo": "{\"param_desc\":\"strict\",\"show_recall_result\":true,\"recall_method\":\"embedding\",\"rerank_status\":true,\"rerank_model_name\":\"rerank\",\"slice_config_type\":\"customized\",\"rerank_index_type_list\":[{\"index_type_id\":0,\"knowledge_id\":[\"a2924802310568022016\"]}],\"recall_index_type_list\":[{\"index_type_id\":0,\"knowledge_id\":[\"a2924802310568022016\"]}]}",
+      "maxToken": 8192,
+      "model": "DeepSeek-R1-Distill-Qwen-14B",
+      "name": "高井信息公司管理制度",
+      "params": {},
+      "prompt": "你是一位知识检索助手,你必须并且只能从我发送的众多知识片段中寻找能够解决用户输入问题的最优答案,并且在执行任务的过程中严格执行规定的要求。\n\n知识片段如下:\n{{知识}}\n\n规定要求:\n- 找到答案就仅使用知识片段中的原文回答用户的提问;\n- 找不到答案就用自身知识并且告诉用户该信息不是来自文档;\n- 所引用的文本片段中所包含的示意图占位符必须进行返回,占位符格式参考:【示意图序号_编号】\n  - 严禁输出任何知识片段中不存在的示意图占位符;\n  - 输出的内容必须删除其中包含的任何图注、序号等信息。例如:\"进入登录页面(图1.1)\"需要从文字中删除图序,回复效果为:\"进入登录页面\";\"如图所示1.1\",回复效果为:\"如图所示\";\n- 格式规范\n  - 文档中会出现包含表格的情况,表格是以图片标识符的形式呈现,表格中缺失数据时候返回空单元格;\n  - 如果需要用到表格中的数据,以markdown格式输出表格中的数据;\n  - 避免使用代码块语法回复信息;\n  - 回复的开头语不要输出诸如:\"我想\",\"我认为\",\"think\"等相关语义的文本。\n\n严格执行规定要求,不要复述问题,直接开始回答。\n\n用户输入问题:\n{{用户}}",
+      "status": "3",
+      "temperature": "0.01",
+      "topP": "0.5",
+      "typeId": 40,
+      "embeddingId": "multilingual-e5-large-instruct"
+    },
+    "evaluation": {
+      "val_data_path": "val_data.json",
+      "batch_size": 3,
+      "output_dir": "evaluation_results",
+      "save_csv": true
+    }
+  },
+  "metrics": {
+    "total_questions": 10,
+    "answered_questions": 0,
+    "answer_rate": 0.0,
+    "context_retrieval_rate": 0.0,
+    "error_rate": 0.0,
+    "exact_match_rate": 0.0,
+    "partial_match_rate": 0.0,
+    "semantic_match_rate": 0.0,
+    "avg_response_time": 6.726759624481201,
+    "total_evaluation_time": 31.489181518554688,
+    "questions_per_second": 0.31756938471416285
+  },
+  "stats": {
+    "total_questions": 10,
+    "successful_calls": 0,
+    "failed_calls": 0,
+    "empty_answers": 10,
+    "response_times": [
+      6.453280925750732,
+      7.363526821136475,
+      8.120678424835205,
+      6.635847806930542,
+      6.7273571491241455,
+      6.905952453613281,
+      5.919975280761719,
+      6.276569843292236,
+      6.887280464172363,
+      5.9771270751953125
+    ],
+    "start_time": 1757315828.0440273,
+    "end_time": 1757315859.5332088
+  }
+}

+ 70 - 0
val/evaluation_results/metrics_20250908_152516.json

@@ -0,0 +1,70 @@
+{
+  "timestamp": "2025-09-08T15:25:16.915801",
+  "config": {
+    "rag_api": {
+      "url": "http://localhost:6000/rag/chat",
+      "timeout": 60,
+      "max_retries": 3,
+      "retry_delay": 1
+    },
+    "rag_request": {
+      "appId": "2924812721300312064",
+      "desc": "高井信息员工手册,出差自律制度等",
+      "isDeepThink": "N",
+      "knowledgeIds": [
+        "a2963496869283893248",
+        "a2963501316240183296"
+      ],
+      "knowledgeInfo": "{\"param_desc\":\"strict\",\"show_recall_result\":true,\"recall_method\":\"embedding\",\"rerank_status\":true,\"rerank_model_name\":\"rerank\",\"slice_config_type\":\"customized\",\"rerank_index_type_list\":[{\"index_type_id\":0,\"knowledge_id\":[\"a2924802310568022016\"]}],\"recall_index_type_list\":[{\"index_type_id\":0,\"knowledge_id\":[\"a2924802310568022016\"]}]}",
+      "maxToken": 8192,
+      "model": "DeepSeek-R1-Distill-Qwen-14B",
+      "name": "高井信息公司管理制度",
+      "params": {},
+      "prompt": "你是一位知识检索助手,你必须并且只能从我发送的众多知识片段中寻找能够解决用户输入问题的最优答案,并且在执行任务的过程中严格执行规定的要求。\n\n知识片段如下:\n{{知识}}\n\n规定要求:\n- 找到答案就仅使用知识片段中的原文回答用户的提问;\n- 找不到答案就用自身知识并且告诉用户该信息不是来自文档;\n- 所引用的文本片段中所包含的示意图占位符必须进行返回,占位符格式参考:【示意图序号_编号】\n  - 严禁输出任何知识片段中不存在的示意图占位符;\n  - 输出的内容必须删除其中包含的任何图注、序号等信息。例如:\"进入登录页面(图1.1)\"需要从文字中删除图序,回复效果为:\"进入登录页面\";\"如图所示1.1\",回复效果为:\"如图所示\";\n- 格式规范\n  - 文档中会出现包含表格的情况,表格是以图片标识符的形式呈现,表格中缺失数据时候返回空单元格;\n  - 如果需要用到表格中的数据,以markdown格式输出表格中的数据;\n  - 避免使用代码块语法回复信息;\n  - 回复的开头语不要输出诸如:\"我想\",\"我认为\",\"think\"等相关语义的文本。\n\n严格执行规定要求,不要复述问题,直接开始回答。\n\n用户输入问题:\n{{用户}}",
+      "status": "3",
+      "temperature": "0.01",
+      "topP": "0.5",
+      "typeId": 40,
+      "embeddingId": "multilingual-e5-large-instruct"
+    },
+    "evaluation": {
+      "val_data_path": "val_data.json",
+      "batch_size": 3,
+      "output_dir": "evaluation_results",
+      "save_csv": true
+    }
+  },
+  "metrics": {
+    "total_questions": 10,
+    "answered_questions": 0,
+    "answer_rate": 0.0,
+    "context_retrieval_rate": 0.0,
+    "error_rate": 0.0,
+    "exact_match_rate": 0.0,
+    "partial_match_rate": 0.0,
+    "semantic_match_rate": 0.0,
+    "avg_response_time": 5.970789742469788,
+    "total_evaluation_time": 27.644086122512817,
+    "questions_per_second": 0.3617410232221853
+  },
+  "stats": {
+    "total_questions": 10,
+    "successful_calls": 0,
+    "failed_calls": 0,
+    "empty_answers": 10,
+    "response_times": [
+      6.1450488567352295,
+      6.456425905227661,
+      6.747356653213501,
+      5.22356104850769,
+      5.627553224563599,
+      5.753298282623291,
+      5.367432594299316,
+      6.771915912628174,
+      6.906524658203125,
+      4.708780288696289
+    ],
+    "start_time": 1757316289.2706847,
+    "end_time": 1757316316.9147708
+  }
+}

+ 70 - 0
val/evaluation_results/metrics_20250908_153050.json

@@ -0,0 +1,70 @@
+{
+  "timestamp": "2025-09-08T15:30:50.650252",
+  "config": {
+    "rag_api": {
+      "url": "http://localhost:6000/rag/chat",
+      "timeout": 60,
+      "max_retries": 3,
+      "retry_delay": 1
+    },
+    "rag_request": {
+      "appId": "2924812721300312064",
+      "desc": "高井信息员工手册,出差自律制度等",
+      "isDeepThink": "N",
+      "knowledgeIds": [
+        "a2963496869283893248",
+        "a2963501316240183296"
+      ],
+      "knowledgeInfo": "{\"param_desc\":\"strict\",\"show_recall_result\":true,\"recall_method\":\"embedding\",\"rerank_status\":true,\"rerank_model_name\":\"rerank\",\"slice_config_type\":\"customized\",\"rerank_index_type_list\":[{\"index_type_id\":0,\"knowledge_id\":[\"a2924802310568022016\"]}],\"recall_index_type_list\":[{\"index_type_id\":0,\"knowledge_id\":[\"a2924802310568022016\"]}]}",
+      "maxToken": 8192,
+      "model": "DeepSeek-R1-Distill-Qwen-14B",
+      "name": "高井信息公司管理制度",
+      "params": {},
+      "prompt": "你是一位知识检索助手,你必须并且只能从我发送的众多知识片段中寻找能够解决用户输入问题的最优答案,并且在执行任务的过程中严格执行规定的要求。\n\n知识片段如下:\n{{知识}}\n\n规定要求:\n- 找到答案就仅使用知识片段中的原文回答用户的提问;\n- 找不到答案就用自身知识并且告诉用户该信息不是来自文档;\n- 所引用的文本片段中所包含的示意图占位符必须进行返回,占位符格式参考:【示意图序号_编号】\n  - 严禁输出任何知识片段中不存在的示意图占位符;\n  - 输出的内容必须删除其中包含的任何图注、序号等信息。例如:\"进入登录页面(图1.1)\"需要从文字中删除图序,回复效果为:\"进入登录页面\";\"如图所示1.1\",回复效果为:\"如图所示\";\n- 格式规范\n  - 文档中会出现包含表格的情况,表格是以图片标识符的形式呈现,表格中缺失数据时候返回空单元格;\n  - 如果需要用到表格中的数据,以markdown格式输出表格中的数据;\n  - 避免使用代码块语法回复信息;\n  - 回复的开头语不要输出诸如:\"我想\",\"我认为\",\"think\"等相关语义的文本。\n\n严格执行规定要求,不要复述问题,直接开始回答。\n\n用户输入问题:\n{{用户}}",
+      "status": "3",
+      "temperature": "0.01",
+      "topP": "0.5",
+      "typeId": 40,
+      "embeddingId": "multilingual-e5-large-instruct"
+    },
+    "evaluation": {
+      "val_data_path": "val_data.json",
+      "batch_size": 3,
+      "output_dir": "evaluation_results",
+      "save_csv": true
+    }
+  },
+  "metrics": {
+    "total_questions": 10,
+    "answered_questions": 0,
+    "answer_rate": 0.0,
+    "context_retrieval_rate": 0.0,
+    "error_rate": 0.0,
+    "exact_match_rate": 0.0,
+    "partial_match_rate": 0.0,
+    "semantic_match_rate": 0.0,
+    "avg_response_time": 7.133665680885315,
+    "total_evaluation_time": 41.05029892921448,
+    "questions_per_second": 0.243603585378114
+  },
+  "stats": {
+    "total_questions": 10,
+    "successful_calls": 0,
+    "failed_calls": 0,
+    "empty_answers": 10,
+    "response_times": [
+      5.332693099975586,
+      5.386599540710449,
+      5.677712678909302,
+      6.091648578643799,
+      6.409893751144409,
+      16.947388172149658,
+      4.789813280105591,
+      5.92538857460022,
+      7.455443620681763,
+      7.320075511932373
+    ],
+    "start_time": 1757316609.5989635,
+    "end_time": 1757316650.6492624
+  }
+}

+ 16 - 0
val/evaluation_results/results_20250908_144859.csv

@@ -0,0 +1,16 @@
+question,predicted_answer,predicted_contexts,ground_truth,expected_answer,expected_contexts,response_time,has_error
+两港大道快速化工程的总监理工程师是谁?,,[],两港大道(新四平公路~S2)快速化工程的总监理工程师是范益利。,根据监理规划,两港大道快速化工程的总监理工程师是范益利。,['项目总监: 范益利'],17.820696592330933,False
+该工程的建设单位是哪家公司?,,[],两港大道快速化工程的建设单位是上海临港新城投资建设有限公司。,该工程的建设单位是上海临港新城投资建设有限公司。,['建设单位: 上海临港新城投资建设有限公司'],6.838666200637817,False
+监理合同中约定的监理服务费是多少?,,[],监理合同约定的施工监理服务收费总额为3458万元人民币。,监理合同中约定的施工监理服务收费为人民币叁仟肆佰伍拾捌万元整(3458万元)。,['合同金额:人民币叁仟肆佰伍拾捌万元整(含税,合同金额包含平行检测费)(3458万元)。'],6.133613586425781,False
+监理规划中提到的质量控制目标是什么?,,[],监理规划中设定的质量控制目标是实现100%的一次验收合格率,并力争获得上海市市政工程金奖。,质量控制目标为一次验收合格率100%,并争创上海市市政工程金奖。,['全部工程的施工质量必须达到施工合同的质量要求。质量目标为一次验收合格率100%,争创上海市市政工程金奖。'],18.263955116271973,False
+根据监理工作总结,项目的主要施工时间段是什么时候?,,[],两港大道快速化工程的施工工期为2019年12月20日至2021年6月25日。,根据监理工作总结,该工程的工期从2019年12月20日至2021年6月25日结束。,['本工程的工期从2019年12月20日至2021年6月25日结束。'],18.541946411132812,False
+监理规划中列出的旁站监理的重要部位有哪些?,,[],监理规划中明确需要旁站监理的关键部位和工序涵盖了道路、桥梁和排水三大工程,具体包括桩基施工中的钢筋笼下放和混凝土灌注,承台、立柱及盖梁的现浇混凝土,以及小箱梁和钢箱梁的整个架设过程等。,旁站监理的重要部位和工序包括:桩基(下钢筋笼、混凝土灌注)、承台/立柱/盖梁现浇(混凝土浇筑)、小箱梁/钢箱梁架设(全过程)等。,['旁站监理的重要部位、工序清单:道路工程、桥梁工程、排水工程。桥梁工程:基础及下部构造,桩基(下钢筋笼、混凝土灌注),承台、立柱、盖梁现浇(混凝土浇筑),上部构造,小箱梁架设(全过程),钢箱梁架设(全过程)。'],18.381253004074097,False
+在监理工作总结中,提到了哪些质量通病问题?,,[],监理工作总结指出的主要质量通病包括防撞墙出现裂缝以及内嵌于立柱和盖梁的落水管发生堵塞。,监理工作总结中提到的质量通病问题主要有两个:防撞墙裂(纹)缝和落水管堵塞。,['质量通病方面:(1)防撞墙裂(纹)缝;(2)落水管采用内嵌式,埋入立柱和盖梁的落水管均有堵塞情况的发生。'],5.749252557754517,False
+监理合同中,如果监理单位提出的合理化建议为建设单位节省了投资,是否有奖励?,,[],根据监理合同第四十五条,若监理方提出的合理化建议被采纳且为委托方带来投资节省,委托方应根据专用条款的约定给予经济奖励。,是的,监理合同第四十五条规定,如果监理单位的合理化建议被采纳并节省了投资,建设单位将参照国家规定给予适当奖励。,['第四十五条 监理人在监理工作过程中提出的合理化建议,使委托人得到了经济效益,委托人应按专用条件中的约定给予经济奖励。'],5.703543186187744,False
+监理规划中,针对工程特点“大规模立柱、盖梁预制及安装”提出了哪些监理控制重点?,,[],监理规划针对大规模预制构件的特点,将监理控制重点放在确保预制拼装的高精度和管理大规模吊装作业的高安全风险上。,针对该特点,监理控制的重点内容有:预制拼装精度要求高,需设计专用的定位架和调平系统;以及大规模预制构件吊装带来的高安全风险。,['本工程特点一:大规模立柱、盖梁预制及安装。分析: 本工程主线高架立柱、盖梁采用预制拼装工艺,预制工程量非常大,监理控制的重点内容有:预制拼装精度要求高,需设计专用的定位架和调平系统、预制构件大规模预制构件吊装,安全风险高。'],5.817278861999512,False
+监理工作总结中,平行检测单位是哪家?,,[],该项目的监理平行检测工作由上海众材工程检测有限公司负责。,监理工作总结中提到的监理平行检测单位是上海众材工程检测有限公司。,['监理平行检测单位:上海众材工程检测有限公司'],5.812741756439209,False
+监理合同中约定的安全监理费用占总监理费用的比例是多少?,,[],监理合同的专用条款明确规定,安全监理费用应占监理总费用的10%。,根据监理合同专用条件,安全监理费用占总监理费用的10%。,['监理费用中总价的90%为工程监理费,10%为安全监理费用,监理单位应派专职安全监理具体负责本工程的安全监督。'],4.993794918060303,False
+监理规划中,工程进度控制的目标是什么?,,[],监理规划设定的进度控制目标为:严格按照施工节点计划完成各阶段任务,保证在合同总工期内完成所有工程并顺利通过竣工备案,最终按时向建设单位移交。,进度控制目标是按期完成施工节点目标,确保在规定的总工期内完成竣工备案程序,并按建设单位要求的竣工程序向建设单位移交工程。,['进度控制目标:按期完成施工节点目标,确保在规定的总工期内完成竣工备案程序、并按建设单位要求的竣工程序向建设单位移交工程。'],5.845863342285156,False
+在监理工作总结中,共发出了多少份监理工程师通知单?施工方回复情况如何?,,[],在监理工作期间,共签发了30份监理工程师通知单,施工方全部进行了回复和整改,执行情况良好。,总结中提到,共发出监理工程师通知单30份,施工方回复30份,承包商均能按照指令要求落实整改。,"['共发出监理工程师通知单共30份, 施工方回复30份,承包商能按照监理指令的要求落实,执行情况良好。']",6.829167604446411,False
+两港大道快速化工程的勘察单位是哪家公司?,,[],该工程的勘察工作由上海勘察设计研究院(集团)有限公司承担。,勘察单位是上海勘察设计研究院(集团)有限公司。,['勘察单位: 上海勘察设计研究院(集团)有限公司'],6.828743934631348,False
+监理合同中对监理人员的现场工作时间有何具体要求?如果总监理工程师未达到要求,有何处罚?,,[],监理合同附加协议条款规定,总监理工程师每周必须至少有5天在施工现场,否则将处以每天2000元人民币的罚款。,合同要求总监理工程师保证每周不少于5天在现场工作。如果违反,监理人需向委托人承担人民币2000元/天的违约金。,['总监理工程师保证每周不少于5天在现场工作,否则监理人向委托人承担人民币2000元/天的违约金。'],6.968388557434082,False

+ 16 - 0
val/evaluation_results/results_20250908_151025.csv

@@ -0,0 +1,16 @@
+question,predicted_answer,predicted_contexts,ground_truth,expected_answer,expected_contexts,response_time,has_error
+两港大道快速化工程的总监理工程师是谁?,,[],两港大道(新四平公路~S2)快速化工程的总监理工程师是范益利。,根据监理规划,两港大道快速化工程的总监理工程师是范益利。,['项目总监: 范益利'],6.406023263931274,False
+该工程的建设单位是哪家公司?,,[],两港大道快速化工程的建设单位是上海临港新城投资建设有限公司。,该工程的建设单位是上海临港新城投资建设有限公司。,['建设单位: 上海临港新城投资建设有限公司'],5.342723608016968,False
+监理合同中约定的监理服务费是多少?,,[],监理合同约定的施工监理服务收费总额为3458万元人民币。,监理合同中约定的施工监理服务收费为人民币叁仟肆佰伍拾捌万元整(3458万元)。,['合同金额:人民币叁仟肆佰伍拾捌万元整(含税,合同金额包含平行检测费)(3458万元)。'],5.33678936958313,False
+监理规划中提到的质量控制目标是什么?,,[],监理规划中设定的质量控制目标是实现100%的一次验收合格率,并力争获得上海市市政工程金奖。,质量控制目标为一次验收合格率100%,并争创上海市市政工程金奖。,['全部工程的施工质量必须达到施工合同的质量要求。质量目标为一次验收合格率100%,争创上海市市政工程金奖。'],5.719094276428223,False
+根据监理工作总结,项目的主要施工时间段是什么时候?,,[],两港大道快速化工程的施工工期为2019年12月20日至2021年6月25日。,根据监理工作总结,该工程的工期从2019年12月20日至2021年6月25日结束。,['本工程的工期从2019年12月20日至2021年6月25日结束。'],5.935399532318115,False
+监理规划中列出的旁站监理的重要部位有哪些?,,[],监理规划中明确需要旁站监理的关键部位和工序涵盖了道路、桥梁和排水三大工程,具体包括桩基施工中的钢筋笼下放和混凝土灌注,承台、立柱及盖梁的现浇混凝土,以及小箱梁和钢箱梁的整个架设过程等。,旁站监理的重要部位和工序包括:桩基(下钢筋笼、混凝土灌注)、承台/立柱/盖梁现浇(混凝土浇筑)、小箱梁/钢箱梁架设(全过程)等。,['旁站监理的重要部位、工序清单:道路工程、桥梁工程、排水工程。桥梁工程:基础及下部构造,桩基(下钢筋笼、混凝土灌注),承台、立柱、盖梁现浇(混凝土浇筑),上部构造,小箱梁架设(全过程),钢箱梁架设(全过程)。'],6.01474928855896,False
+在监理工作总结中,提到了哪些质量通病问题?,,[],监理工作总结指出的主要质量通病包括防撞墙出现裂缝以及内嵌于立柱和盖梁的落水管发生堵塞。,监理工作总结中提到的质量通病问题主要有两个:防撞墙裂(纹)缝和落水管堵塞。,['质量通病方面:(1)防撞墙裂(纹)缝;(2)落水管采用内嵌式,埋入立柱和盖梁的落水管均有堵塞情况的发生。'],7.024769306182861,False
+监理合同中,如果监理单位提出的合理化建议为建设单位节省了投资,是否有奖励?,,[],根据监理合同第四十五条,若监理方提出的合理化建议被采纳且为委托方带来投资节省,委托方应根据专用条款的约定给予经济奖励。,是的,监理合同第四十五条规定,如果监理单位的合理化建议被采纳并节省了投资,建设单位将参照国家规定给予适当奖励。,['第四十五条 监理人在监理工作过程中提出的合理化建议,使委托人得到了经济效益,委托人应按专用条件中的约定给予经济奖励。'],6.7044312953948975,False
+监理规划中,针对工程特点“大规模立柱、盖梁预制及安装”提出了哪些监理控制重点?,,[],监理规划针对大规模预制构件的特点,将监理控制重点放在确保预制拼装的高精度和管理大规模吊装作业的高安全风险上。,针对该特点,监理控制的重点内容有:预制拼装精度要求高,需设计专用的定位架和调平系统;以及大规模预制构件吊装带来的高安全风险。,['本工程特点一:大规模立柱、盖梁预制及安装。分析: 本工程主线高架立柱、盖梁采用预制拼装工艺,预制工程量非常大,监理控制的重点内容有:预制拼装精度要求高,需设计专用的定位架和调平系统、预制构件大规模预制构件吊装,安全风险高。'],7.855881452560425,False
+监理工作总结中,平行检测单位是哪家?,,[],该项目的监理平行检测工作由上海众材工程检测有限公司负责。,监理工作总结中提到的监理平行检测单位是上海众材工程检测有限公司。,['监理平行检测单位:上海众材工程检测有限公司'],6.30465841293335,False
+监理合同中约定的安全监理费用占总监理费用的比例是多少?,,[],监理合同的专用条款明确规定,安全监理费用应占监理总费用的10%。,根据监理合同专用条件,安全监理费用占总监理费用的10%。,['监理费用中总价的90%为工程监理费,10%为安全监理费用,监理单位应派专职安全监理具体负责本工程的安全监督。'],6.658929347991943,False
+监理规划中,工程进度控制的目标是什么?,,[],监理规划设定的进度控制目标为:严格按照施工节点计划完成各阶段任务,保证在合同总工期内完成所有工程并顺利通过竣工备案,最终按时向建设单位移交。,进度控制目标是按期完成施工节点目标,确保在规定的总工期内完成竣工备案程序,并按建设单位要求的竣工程序向建设单位移交工程。,['进度控制目标:按期完成施工节点目标,确保在规定的总工期内完成竣工备案程序、并按建设单位要求的竣工程序向建设单位移交工程。'],6.6157426834106445,False
+在监理工作总结中,共发出了多少份监理工程师通知单?施工方回复情况如何?,,[],在监理工作期间,共签发了30份监理工程师通知单,施工方全部进行了回复和整改,执行情况良好。,总结中提到,共发出监理工程师通知单30份,施工方回复30份,承包商均能按照指令要求落实整改。,"['共发出监理工程师通知单共30份, 施工方回复30份,承包商能按照监理指令的要求落实,执行情况良好。']",7.517377853393555,False
+两港大道快速化工程的勘察单位是哪家公司?,,[],该工程的勘察工作由上海勘察设计研究院(集团)有限公司承担。,勘察单位是上海勘察设计研究院(集团)有限公司。,['勘察单位: 上海勘察设计研究院(集团)有限公司'],7.150101661682129,False
+监理合同中对监理人员的现场工作时间有何具体要求?如果总监理工程师未达到要求,有何处罚?,,[],监理合同附加协议条款规定,总监理工程师每周必须至少有5天在施工现场,否则将处以每天2000元人民币的罚款。,合同要求总监理工程师保证每周不少于5天在现场工作。如果违反,监理人需向委托人承担人民币2000元/天的违约金。,['总监理工程师保证每周不少于5天在现场工作,否则监理人向委托人承担人民币2000元/天的违约金。'],7.4802024364471436,False

+ 11 - 0
val/evaluation_results/results_20250908_151739.csv

@@ -0,0 +1,11 @@
+question,predicted_answer,predicted_contexts,ground_truth,expected_answer,expected_contexts,response_time,has_error
+公司对于短期出差的住宿标准是如何规定的?,,[],短期出差的住宿标准是:一线城市每晚300元,其他城市每晚250元。,根据出差管理制度,短期出差在一线城市住宿标准为300元/晚,在其他城市为250元/晚。,"['城市分类,短期出差,中长期出差,备注\r\n一线城市,标间: 300 元,当地租房为优先,如客户提供住宿,优先选择\r\n其他城市,标间: 250 元,当地租房为优先,如客户提供住宿,优先选择']",6.453280925750732,False
+出差的交通费用报销有什么限制?,,[],出差报销的交通费上限为公共交通和出租车费用总和的120%。,出差交通费用的报销上限是公共交通和出租车总额的120%,超出部分需要自费。,['不限制出差人员的出行方式,以上公共交通 + 出租车的总额的 120% 作为出差报销上限,超额部分自费。'],8.120678424835205,False
+如何计算出差补助金额?,,[],出差补助的计算方式为:出差补助乘以实际工作日。,出差补助金额的计算方法是:出差补助标准乘以实际工作日。,['计算方法:出差补助 * 实际工作日 = 本次应发出差补助。'],7.363526821136475,False
+《出差管理制度》何时开始实施?,,[],该制度自2025年7月1日开始执行。,本制度自2025年7月1日起实施。,['本制度自2025年7月1日起实施。'],6.7273571491241455,False
+如果出差地点是日本,T11职级的员工每天能获得多少出差补助?,,[],在日本出差时,T11-T15职级的员工每天补助为7500日元。,如果出差地点是日本,T11职级的员工每天能获得7500日元的出差补助。,"['出差日本按如下方案执行\r\n\r\n职级,按实际工作日结算,汇率\r\nT6-T10,5000 日元 / 工作日,0.05\r\nT11-T15,7500 日元 / 工作日,0.05']",6.635847806930542,False
+如果客户承担了出差费用,公司还需要额外支付吗?,,[],如果出差费用由客户承担并直接支付给员工,公司将不再重复支付。,如果客户承担了出差费用及补贴并直接支付给员工,公司将不再承担相关费用。,['客户承担出差费用及补贴的,直接支付给员工的,我司不再承担相关费用。'],6.905952453613281,False
+《出差管理制度》中规定的“其他城市”是指哪些地方?,,[],其他城市是指北京、上海、广州、深圳以外的所有城市。,在《出差管理制度》中,“其他城市”指的是一线城市(北京、上海、广州、深圳)以外的城市。,"['名词,解释\r\nBASE 地,劳动合同签署的工作地或居住地\r\n一线城市,北京、上海、广州、深圳\r\n其他城市,一线城市以外']",6.276569843292236,False
+出差补助的发放流程是怎样的?,,[],员工通过PAPB系统提交申请,公司根据天数核算补助金额,然后财务直接发放到员工账户。,员工需要在公司内部PAPB系统填写出差申请,公司会根据工作天数核定补贴金额,然后由财务部门将出差补助发放到员工账户。,['员工自行登录公司内部 PAPB 系统填写完整的出差申请,出差补助无需提供发票,公司将根据出差的工作天数核定补贴金额,财务将出差补助发放到员工账户。'],6.887280464172363,False
+出差人员在什么情况下可以选择乘坐出租车?,,[],在时间紧急、安全或行李较多等特殊情况,以及加班错过末班车时,可以乘坐出租车。,在特殊情况下(如时间、安全、行李等),出差人员可以选择乘坐出租车往返于项目地和酒店,或者在加班错过末班车时申请出租车。,['特殊情况下(时间,安全,行李等情况下)出租车形式往返\r\n1. Base 地或中转站到机场 / 高铁往返(限同城)\r\n2. 项目地到酒店或宿舍、居住地往返(限同城)\r\n3. 加班错过末班车的情况下向 PM 申请(限同城)'],5.919975280761719,False
+日本以外的其他亚洲国家出差补助是多少?,,[],在日本以外的其他亚洲国家出差,每天的出差补助为250元。,除了日本之外的其他亚洲国家,出差补助统一为250元/工作日。,['出差除日本外的其他亚洲国家,统一按 250 元 / 工作日结算。'],5.9771270751953125,False

+ 11 - 0
val/evaluation_results/results_20250908_152516.csv

@@ -0,0 +1,11 @@
+question,predicted_answer,predicted_contexts,ground_truth,expected_answer,expected_contexts,response_time,has_error
+公司对于短期出差的住宿标准是如何规定的?,,[],短期出差的住宿标准是:一线城市每晚300元,其他城市每晚250元。,根据出差管理制度,短期出差在一线城市住宿标准为300元/晚,在其他城市为250元/晚。,"['城市分类,短期出差,中长期出差,备注\r\n一线城市,标间: 300 元,当地租房为优先,如客户提供住宿,优先选择\r\n其他城市,标间: 250 元,当地租房为优先,如客户提供住宿,优先选择']",6.1450488567352295,False
+出差的交通费用报销有什么限制?,,[],出差报销的交通费上限为公共交通和出租车费用总和的120%。,出差交通费用的报销上限是公共交通和出租车总额的120%,超出部分需要自费。,['不限制出差人员的出行方式,以上公共交通 + 出租车的总额的 120% 作为出差报销上限,超额部分自费。'],6.456425905227661,False
+如何计算出差补助金额?,,[],出差补助的计算方式为:出差补助乘以实际工作日。,出差补助金额的计算方法是:出差补助标准乘以实际工作日。,['计算方法:出差补助 * 实际工作日 = 本次应发出差补助。'],6.747356653213501,False
+《出差管理制度》何时开始实施?,,[],该制度自2025年7月1日开始执行。,本制度自2025年7月1日起实施。,['本制度自2025年7月1日起实施。'],5.753298282623291,False
+如果出差地点是日本,T11职级的员工每天能获得多少出差补助?,,[],在日本出差时,T11-T15职级的员工每天补助为7500日元。,如果出差地点是日本,T11职级的员工每天能获得7500日元的出差补助。,"['出差日本按如下方案执行\r\n\r\n职级,按实际工作日结算,汇率\r\nT6-T10,5000 日元 / 工作日,0.05\r\nT11-T15,7500 日元 / 工作日,0.05']",5.22356104850769,False
+如果客户承担了出差费用,公司还需要额外支付吗?,,[],如果出差费用由客户承担并直接支付给员工,公司将不再重复支付。,如果客户承担了出差费用及补贴并直接支付给员工,公司将不再承担相关费用。,['客户承担出差费用及补贴的,直接支付给员工的,我司不再承担相关费用。'],5.627553224563599,False
+《出差管理制度》中规定的“其他城市”是指哪些地方?,,[],其他城市是指北京、上海、广州、深圳以外的所有城市。,在《出差管理制度》中,“其他城市”指的是一线城市(北京、上海、广州、深圳)以外的城市。,"['名词,解释\r\nBASE 地,劳动合同签署的工作地或居住地\r\n一线城市,北京、上海、广州、深圳\r\n其他城市,一线城市以外']",6.771915912628174,False
+出差补助的发放流程是怎样的?,,[],员工通过PAPB系统提交申请,公司根据天数核算补助金额,然后财务直接发放到员工账户。,员工需要在公司内部PAPB系统填写出差申请,公司会根据工作天数核定补贴金额,然后由财务部门将出差补助发放到员工账户。,['员工自行登录公司内部 PAPB 系统填写完整的出差申请,出差补助无需提供发票,公司将根据出差的工作天数核定补贴金额,财务将出差补助发放到员工账户。'],5.367432594299316,False
+出差人员在什么情况下可以选择乘坐出租车?,,[],在时间紧急、安全或行李较多等特殊情况,以及加班错过末班车时,可以乘坐出租车。,在特殊情况下(如时间、安全、行李等),出差人员可以选择乘坐出租车往返于项目地和酒店,或者在加班错过末班车时申请出租车。,['特殊情况下(时间,安全,行李等情况下)出租车形式往返\r\n1. Base 地或中转站到机场 / 高铁往返(限同城)\r\n2. 项目地到酒店或宿舍、居住地往返(限同城)\r\n3. 加班错过末班车的情况下向 PM 申请(限同城)'],6.906524658203125,False
+日本以外的其他亚洲国家出差补助是多少?,,[],在日本以外的其他亚洲国家出差,每天的出差补助为250元。,除了日本之外的其他亚洲国家,出差补助统一为250元/工作日。,['出差除日本外的其他亚洲国家,统一按 250 元 / 工作日结算。'],4.708780288696289,False

+ 11 - 0
val/evaluation_results/results_20250908_153050.csv

@@ -0,0 +1,11 @@
+question,predicted_answer,predicted_contexts,ground_truth,expected_answer,expected_contexts,response_time,has_error
+公司对于短期出差的住宿标准是如何规定的?,,[],短期出差的住宿标准是:一线城市每晚300元,其他城市每晚250元。,根据出差管理制度,短期出差在一线城市住宿标准为300元/晚,在其他城市为250元/晚。,"['城市分类,短期出差,中长期出差,备注\r\n一线城市,标间: 300 元,当地租房为优先,如客户提供住宿,优先选择\r\n其他城市,标间: 250 元,当地租房为优先,如客户提供住宿,优先选择']",5.386599540710449,False
+出差的交通费用报销有什么限制?,,[],出差报销的交通费上限为公共交通和出租车费用总和的120%。,出差交通费用的报销上限是公共交通和出租车总额的120%,超出部分需要自费。,['不限制出差人员的出行方式,以上公共交通 + 出租车的总额的 120% 作为出差报销上限,超额部分自费。'],5.677712678909302,False
+如何计算出差补助金额?,,[],出差补助的计算方式为:出差补助乘以实际工作日。,出差补助金额的计算方法是:出差补助标准乘以实际工作日。,['计算方法:出差补助 * 实际工作日 = 本次应发出差补助。'],5.332693099975586,False
+《出差管理制度》何时开始实施?,,[],该制度自2025年7月1日开始执行。,本制度自2025年7月1日起实施。,['本制度自2025年7月1日起实施。'],6.091648578643799,False
+如果出差地点是日本,T11职级的员工每天能获得多少出差补助?,,[],在日本出差时,T11-T15职级的员工每天补助为7500日元。,如果出差地点是日本,T11职级的员工每天能获得7500日元的出差补助。,"['出差日本按如下方案执行\r\n\r\n职级,按实际工作日结算,汇率\r\nT6-T10,5000 日元 / 工作日,0.05\r\nT11-T15,7500 日元 / 工作日,0.05']",6.409893751144409,False
+如果客户承担了出差费用,公司还需要额外支付吗?,,[],如果出差费用由客户承担并直接支付给员工,公司将不再重复支付。,如果客户承担了出差费用及补贴并直接支付给员工,公司将不再承担相关费用。,['客户承担出差费用及补贴的,直接支付给员工的,我司不再承担相关费用。'],16.947388172149658,False
+《出差管理制度》中规定的“其他城市”是指哪些地方?,,[],其他城市是指北京、上海、广州、深圳以外的所有城市。,在《出差管理制度》中,“其他城市”指的是一线城市(北京、上海、广州、深圳)以外的城市。,"['名词,解释\r\nBASE 地,劳动合同签署的工作地或居住地\r\n一线城市,北京、上海、广州、深圳\r\n其他城市,一线城市以外']",5.92538857460022,False
+出差补助的发放流程是怎样的?,,[],员工通过PAPB系统提交申请,公司根据天数核算补助金额,然后财务直接发放到员工账户。,员工需要在公司内部PAPB系统填写出差申请,公司会根据工作天数核定补贴金额,然后由财务部门将出差补助发放到员工账户。,['员工自行登录公司内部 PAPB 系统填写完整的出差申请,出差补助无需提供发票,公司将根据出差的工作天数核定补贴金额,财务将出差补助发放到员工账户。'],7.455443620681763,False
+出差人员在什么情况下可以选择乘坐出租车?,,[],在时间紧急、安全或行李较多等特殊情况,以及加班错过末班车时,可以乘坐出租车。,在特殊情况下(如时间、安全、行李等),出差人员可以选择乘坐出租车往返于项目地和酒店,或者在加班错过末班车时申请出租车。,['特殊情况下(时间,安全,行李等情况下)出租车形式往返\r\n1. Base 地或中转站到机场 / 高铁往返(限同城)\r\n2. 项目地到酒店或宿舍、居住地往返(限同城)\r\n3. 加班错过末班车的情况下向 PM 申请(限同城)'],4.789813280105591,False
+日本以外的其他亚洲国家出差补助是多少?,,[],在日本以外的其他亚洲国家出差,每天的出差补助为250元。,除了日本之外的其他亚洲国家,出差补助统一为250元/工作日。,['出差除日本外的其他亚洲国家,统一按 250 元 / 工作日结算。'],7.320075511932373,False

+ 29 - 0
val/logs/rag_evaluation_20250909_101538.txt

@@ -0,0 +1,29 @@
+============================================================
+RAG系统评估结果报告
+============================================================
+评估时间: 2025-09-09 10:15:38
+总问题数: 2
+正确回答数: 1
+正确率: 50.00%
+平均得分: 0.50
+准确阈值: 0.8
+============================================================
+
+详细评估日志:
+------------------------------------------------------------
+
+[1] 评估时间: 2025-09-09 10:15:20
+问题: 试用期介绍
+期望答案: 每一位新加入公司的成员都需经过一定期间的试用期,试用期期限将依法确定,并在《劳动合同》中有明确说明。试用期满前,直接主管经理会对员工试用期表现作出评定,填写“员工试用期考核表”,确定试用结果。在试用期间,如果员工被证明不符合录用条件的,公司有权解除劳动合同。
+实际答案: 每一位新加入公司的成员都需经过一定期间的试用期,试用期期限将依法确定,并在《劳动合同》中有明确说明。试用期满前,直接主管经理会对员工试用期表现作出评定,填写“员工试用期考核表”,确定试用结果。在试用期间,如果员工被证明不符合录用条件的,公司有权解除劳动合同。
+评分: 1.0
+是否正确: ✓
+------------------------------------------------------------
+
+[2] 评估时间: 2025-09-09 10:15:20
+问题: 公司的工作制度
+期望答案: 早晨及午餐后按时上班,是公司的规章制度之一。不能按时上班的员工,有义务尽快预先通知上级,说明缺勤理由和预计上班时间。如不事先通知(除紧急事件外)并获批准而缺勤,则视为旷工。不事先通知且事后无正当理由连续缺勤三日或以上者,即构成重大违纪行为。公司有权对其做出辞退处理决定。
+实际答案: 个人工作台为员工日常工作平台,由综合办公系统、人力资源管理系统、知识管理系统、业务系统、预算费控系统等组成。主要包含公文、会议预定、印章申请、请假、加班等日常办公事务管理。【示意图序号_a2963501655592796160_3】
+评分: 0.0
+是否正确: ✗
+------------------------------------------------------------

+ 34 - 0
val/logs/rag_evaluation_20250909_102248.txt

@@ -0,0 +1,34 @@
+============================================================
+RAG系统评估结果报告
+============================================================
+评估时间: 2025-09-09 10:22:48
+总问题数: 3
+正确回答数: 0
+正确率: 0.00%
+平均得分: 0.22
+准确阈值: 0.9
+============================================================
+
+详细评估日志:
+------------------------------------------------------------
+
+[1] 评估时间: 2025-09-09 10:22:44
+问题: 试用期介绍
+期望答案: 每一位新加入公司的成员都需经过一定期间的试用期,试用期期限将依法确定,并在《劳动合同》中有明确说明。试用期满前,直接主管经理会对员工试用期表现作出评定,填写“员工试用期考核表”,确定试用结果。在试用期间,如果员工被证明不符合录用条件的,公司有权解除劳动合同。
+实际答案: 试用期结束后,双方可以根据劳动法的规定提前30天书面通知或以等同于通知的其他方式,解除劳动关系。
+评分: 0.35
+------------------------------------------------------------
+
+[2] 评估时间: 2025-09-09 10:22:46
+问题: 公司的休假制度
+期望答案: (1)由本人填写请假单申请休假; (2)由直属经理批准; (3)人事部接到审批后的请假单后,方可休假。
+实际答案: 公司的休假制度一律按照上海市规定执行。任何连续超过5天的假期,都需得到间接上司的审批,审批通过后方可休假。以上假期规定仅仅用于中国境内,日本子公司根据当地法律法规另行规定。
+评分: 0.15
+------------------------------------------------------------
+
+[3] 评估时间: 2025-09-09 10:22:48
+问题: 公司的工作制度
+期望答案: 早晨及午餐后按时上班,是公司的规章制度之一。不能按时上班的员工,有义务尽快预先通知上级,说明缺勤理由和预计上班时间。如不事先通知(除紧急事件外)并获批准而缺勤,则视为旷工。不事先通知且事后无正当理由连续缺勤三日或以上者,即构成重大违纪行为。公司有权对其做出辞退处理决定。
+实际答案: 公司的工作制度分为定时工作时间和综合工作时间两种。正常办公时间为:星期一至星期五  上午上班时间 9:00-12:00下午上班时间 13:00-18:00午休时间 12:00-13:00根据公司的业务需要,某些岗位员工的工作时间可能会不同于正常工作时间。以下情况实行综合工时工作制:「工作结果无法按标准工作时间衡量丨需要机动工作时间「由于生产经营特点、工作特殊需要或岗位性质适用综合工时工作制的员工包括但不限于销售人员、技术开发人员、驾驶员、中高级管理人员。
+评分: 0.15
+------------------------------------------------------------

+ 34 - 0
val/logs/rag_evaluation_20250909_104043.txt

@@ -0,0 +1,34 @@
+============================================================
+RAG系统评估结果报告
+============================================================
+评估时间: 2025-09-09 10:40:43
+总问题数: 3
+正确回答数: 0
+正确率: 0.00%
+平均得分: 0.05
+准确阈值: 0.9
+============================================================
+
+详细评估日志:
+------------------------------------------------------------
+
+[1] 评估时间: 2025-09-09 10:40:25
+问题: 试用期介绍
+期望答案: 每一位新加入公司的成员都需经过一定期间的试用期,试用期期限将依法确定,并在《劳动合同》中有明确说明。试用期满前,直接主管经理会对员工试用期表现作出评定,填写“员工试用期考核表”,确定试用结果。在试用期间,如果员工被证明不符合录用条件的,公司有权解除劳动合同。
+实际答案: 试用期相关信息不在提供的知识片段中。该信息不是来自文档。
+评分: 0.0
+------------------------------------------------------------
+
+[2] 评估时间: 2025-09-09 10:40:28
+问题: 公司的工作制度
+期望答案: 早晨及午餐后按时上班,是公司的规章制度之一。不能按时上班的员工,有义务尽快预先通知上级,说明缺勤理由和预计上班时间。如不事先通知(除紧急事件外)并获批准而缺勤,则视为旷工。不事先通知且事后无正当理由连续缺勤三日或以上者,即构成重大违纪行为。公司有权对其做出辞退处理决定。
+实际答案: 公司对技术人员、开发人员、销售人员适用不定时工作制。为满足业务和工作职责需要,公司管理人员可以要求员工加班(每月一般不超过36小时)。安排员工加班后以调休的方式补足员工的休息时间。
+评分: 0.0
+------------------------------------------------------------
+
+[3] 评估时间: 2025-09-09 10:40:43
+问题: 公司的休假制度
+期望答案: (1)由本人填写请假单申请休假; (2)由直属经理批准; (3)人事部接到审批后的请假单后,方可休假。
+实际答案: 由于公司项目的特殊性,在很多情况下,员工休假会根据客户安排的假期执行,对此公司将有权根据实际情况扣除员工年休假或者给予适当的调休。员工可自行在公司PAPB系统上查询休假及年假剩余情况。
+评分: 0.15
+------------------------------------------------------------

+ 34 - 0
val/logs/rag_evaluation_20250909_104220.txt

@@ -0,0 +1,34 @@
+============================================================
+RAG系统评估结果报告
+============================================================
+评估时间: 2025-09-09 10:42:20
+总问题数: 3
+正确回答数: 0
+正确率: 0.00%
+平均得分: 0.18
+准确阈值: 0.9
+============================================================
+
+详细评估日志:
+------------------------------------------------------------
+
+[1] 评估时间: 2025-09-09 10:42:12
+问题: 试用期介绍
+期望答案: 每一位新加入公司的成员都需经过一定期间的试用期,试用期期限将依法确定,并在《劳动合同》中有明确说明。试用期满前,直接主管经理会对员工试用期表现作出评定,填写“员工试用期考核表”,确定试用结果。在试用期间,如果员工被证明不符合录用条件的,公司有权解除劳动合同。
+实际答案: 试用期
+评分: 0.25
+------------------------------------------------------------
+
+[2] 评估时间: 2025-09-09 10:42:15
+问题: 公司的休假制度
+期望答案: (1)由本人填写请假单申请休假; (2)由直属经理批准; (3)人事部接到审批后的请假单后,方可休假。
+实际答案: 本手册未单独列明的政府规定赋予特定员工的其他假期,一律按照上海市规定执行。任何连续超过5天的假期,都需得到间接上司的审批,审批通过后方可休假。以上假期规定仅仅用于中国境内,日本子公司根据当地法律法规另行规定。
+评分: 0.15
+------------------------------------------------------------
+
+[3] 评估时间: 2025-09-09 10:42:20
+问题: 公司的工作制度
+期望答案: 早晨及午餐后按时上班,是公司的规章制度之一。不能按时上班的员工,有义务尽快预先通知上级,说明缺勤理由和预计上班时间。如不事先通知(除紧急事件外)并获批准而缺勤,则视为旷工。不事先通知且事后无正当理由连续缺勤三日或以上者,即构成重大违纪行为。公司有权对其做出辞退处理决定。
+实际答案: 公司对技术人员、开发人员、销售人员适用不定时工作制。为满足业务和工作职责需要,公司管理人员可以要求员工加班(每月一般不超过36小时)。安排员工加班后以调休的方式补足员工的休息时间。
+评分: 0.15
+------------------------------------------------------------

+ 34 - 0
val/logs/rag_evaluation_20250909_104414.txt

@@ -0,0 +1,34 @@
+============================================================
+RAG系统评估结果报告
+============================================================
+评估时间: 2025-09-09 10:44:14
+总问题数: 3
+正确回答数: 2
+正确率: 66.67%
+平均得分: 0.65
+准确阈值: 0.9
+============================================================
+
+详细评估日志:
+------------------------------------------------------------
+
+[1] 评估时间: 2025-09-09 10:44:11
+问题: 公司的休假制度
+期望答案: (1)由本人填写请假单申请休假; (2)由直属经理批准; (3)人事部接到审批后的请假单后,方可休假。
+实际答案: 公司的休假制度信息不在提供的知识片段中。
+评分: 0.0
+------------------------------------------------------------
+
+[2] 评估时间: 2025-09-09 10:44:13
+问题: 试用期介绍
+期望答案: 每一位新加入公司的成员都需经过一定期间的试用期,试用期期限将依法确定,并在《劳动合同》中有明确说明。试用期满前,直接主管经理会对员工试用期表现作出评定,填写“员工试用期考核表”,确定试用结果。在试用期间,如果员工被证明不符合录用条件的,公司有权解除劳动合同。
+实际答案: 试用期期限将依法确定,并在《劳动合同》中有明确说明。试用期满前,直接主管经理会对员工试用期表现作出评定,填写“员工试用期考核表”,确定试用结果。在试用期间,如果员工被证明不符合录用条件的,公司有权解除劳动合同。
+评分: 0.95
+------------------------------------------------------------
+
+[3] 评估时间: 2025-09-09 10:44:14
+问题: 公司的工作制度
+期望答案: 早晨及午餐后按时上班,是公司的规章制度之一。不能按时上班的员工,有义务尽快预先通知上级,说明缺勤理由和预计上班时间。如不事先通知(除紧急事件外)并获批准而缺勤,则视为旷工。不事先通知且事后无正当理由连续缺勤三日或以上者,即构成重大违纪行为。公司有权对其做出辞退处理决定。
+实际答案: 早晨及午餐后按时上班,是公司的规章制度之一。不能按时上班的员工,有义务尽快预先通知上级,说明缺勤理由和预计上班时间。如不事先通知(除紧急事件外)并获批准而缺勤,则视为旷工。不事先通知且事后无正当理由连续缺勤三日或以上者,即构成重大违纪行为。公司有权对其做出辞退处理决定。
+评分: 1.0
+------------------------------------------------------------

+ 0 - 0
val/logs/ragas_eval_20250908_144755.log


+ 0 - 0
val/logs/ragas_eval_20250908_150943.log


+ 0 - 0
val/logs/ragas_eval_20250908_151706.log


+ 0 - 0
val/logs/ragas_eval_20250908_152447.log


+ 0 - 0
val/logs/ragas_eval_20250908_153005.log


+ 2850 - 0
val/rag_evaluation.log

@@ -0,0 +1,2850 @@
+2025-09-08 16:38:13,782 - INFO - 开始RAG系统评估
+2025-09-08 16:38:13,782 - INFO - 成功加载 10 条验证数据
+2025-09-08 16:38:13,783 - INFO - 评估问题: 公司对于短期出差的住宿标准是如何规定的?...
+2025-09-08 16:38:13,783 - INFO - 评估问题: 出差的交通费用报销有什么限制?...
+2025-09-08 16:38:13,783 - INFO - 评估问题: 如何计算出差补助金额?...
+2025-09-08 16:38:13,784 - INFO - 评估问题: 《出差管理制度》何时开始实施?...
+2025-09-08 16:38:13,784 - INFO - 评估问题: 如果出差地点是日本,T11职级的员工每天能获得多少出差补助?...
+2025-09-08 16:38:13,784 - INFO - 评估问题: 如果客户承担了出差费用,公司还需要额外支付吗?...
+2025-09-08 16:38:13,784 - INFO - 评估问题: 《出差管理制度》中规定的“其他城市”是指哪些地方?...
+2025-09-08 16:38:13,785 - INFO - 评估问题: 出差补助的发放流程是怎样的?...
+2025-09-08 16:38:13,785 - INFO - 评估问题: 出差人员在什么情况下可以选择乘坐出租车?...
+2025-09-08 16:38:13,785 - INFO - 评估问题: 日本以外的其他亚洲国家出差补助是多少?...
+2025-09-08 16:38:25,054 - ERROR - API调用失败: 'int' object has no attribute 'get'
+2025-09-08 16:38:25,324 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:38:26,665 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:38:27,030 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:38:27,170 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:38:27,505 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:38:27,922 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:38:28,733 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:38:28,815 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:38:29,980 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:38:33,780 - INFO - 评估完成
+2025-09-08 16:38:33,782 - INFO - 评估结果已保存到: rag_evaluation_results_20250908_163833.json
+2025-09-08 16:42:45,692 - INFO - 开始RAG系统评估
+2025-09-08 16:42:45,692 - INFO - 成功加载 10 条验证数据
+2025-09-08 16:42:45,692 - INFO - 评估问题: 公司对于短期出差的住宿标准是如何规定的?...
+2025-09-08 16:42:45,693 - INFO - 评估问题: 出差的交通费用报销有什么限制?...
+2025-09-08 16:42:45,693 - INFO - 评估问题: 如何计算出差补助金额?...
+2025-09-08 16:42:45,693 - INFO - 评估问题: 《出差管理制度》何时开始实施?...
+2025-09-08 16:42:45,693 - INFO - 评估问题: 如果出差地点是日本,T11职级的员工每天能获得多少出差补助?...
+2025-09-08 16:42:45,694 - INFO - 评估问题: 如果客户承担了出差费用,公司还需要额外支付吗?...
+2025-09-08 16:42:45,694 - INFO - 评估问题: 《出差管理制度》中规定的“其他城市”是指哪些地方?...
+2025-09-08 16:42:45,694 - INFO - 评估问题: 出差补助的发放流程是怎样的?...
+2025-09-08 16:42:45,695 - INFO - 评估问题: 出差人员在什么情况下可以选择乘坐出租车?...
+2025-09-08 16:42:45,695 - INFO - 评估问题: 日本以外的其他亚洲国家出差补助是多少?...
+2025-09-08 16:42:52,945 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据
+2025-09-08 16:42:53,151 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据
+2025-09-08 16:42:53,167 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据
+2025-09-08 16:42:53,172 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据
+2025-09-08 16:42:53,180 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据
+2025-09-08 16:42:53,180 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据
+2025-09-08 16:42:53,323 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您
+2025-09-08 16:42:53,415 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的
+2025-09-08 16:42:53,417 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识
+2025-09-08 16:42:53,501 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据
+2025-09-08 16:42:53,507 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据
+2025-09-08 16:42:53,511 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据
+2025-09-08 16:42:53,514 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您
+2025-09-08 16:42:53,514 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段
+2025-09-08 16:42:53,515 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,
+2025-09-08 16:42:53,535 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据
+2025-09-08 16:42:53,555 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您
+2025-09-08 16:42:53,564 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您
+2025-09-08 16:42:53,566 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您
+2025-09-08 16:42:53,602 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是
+2025-09-08 16:42:53,605 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的
+2025-09-08 16:42:53,607 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识
+2025-09-08 16:42:53,644 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的
+2025-09-08 16:42:53,645 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识
+2025-09-08 16:42:53,654 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您
+2025-09-08 16:42:53,655 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的
+2025-09-08 16:42:53,657 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识
+2025-09-08 16:42:53,659 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的
+2025-09-08 16:42:53,661 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识
+2025-09-08 16:42:53,696 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章
+2025-09-08 16:42:53,697 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作
+2025-09-08 16:42:53,699 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段
+2025-09-08 16:42:53,701 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,
+2025-09-08 16:42:53,746 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的
+2025-09-08 16:42:53,748 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段
+2025-09-08 16:42:53,753 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段
+2025-09-08 16:42:53,753 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识
+2025-09-08 16:42:53,757 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,
+2025-09-08 16:42:53,758 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段
+2025-09-08 16:42:53,759 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,
+2025-09-08 16:42:53,761 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,
+2025-09-08 16:42:53,789 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度
+2025-09-08 16:42:53,790 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的
+2025-09-08 16:42:53,831 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于
+2025-09-08 16:42:53,833 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差
+2025-09-08 16:42:53,839 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段
+2025-09-08 16:42:53,840 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我
+2025-09-08 16:42:53,842 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,
+2025-09-08 16:42:53,880 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4
+2025-09-08 16:42:53,925 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通
+2025-09-08 16:42:53,926 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用
+2025-09-08 16:42:53,932 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有
+2025-09-08 16:42:53,934 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法
+2025-09-08 16:42:53,936 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到
+2025-09-08 16:42:53,956 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您
+2025-09-08 16:42:53,964 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于
+2025-09-08 16:42:53,965 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差
+2025-09-08 16:42:53,967 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前
+2025-09-08 16:42:53,969 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有
+2025-09-08 16:42:53,973 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.
+2025-09-08 16:42:53,975 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于
+2025-09-08 16:42:53,978 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助
+2025-09-08 16:42:53,979 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4
+2025-09-08 16:42:53,980 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额
+2025-09-08 16:42:53,982 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算
+2025-09-08 16:42:53,983 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法
+2025-09-08 16:42:54,005 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您
+2025-09-08 16:42:54,012 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您
+2025-09-08 16:42:54,017 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销
+2025-09-08 16:42:54,019 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制
+2025-09-08 16:42:54,025 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于
+2025-09-08 16:42:54,029 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《
+2025-09-08 16:42:54,031 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于
+2025-09-08 16:42:54,033 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本
+2025-09-08 16:42:54,049 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的
+2025-09-08 16:42:54,050 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识
+2025-09-08 16:42:54,053 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您
+2025-09-08 16:42:54,063 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的
+2025-09-08 16:42:54,065 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识
+2025-09-08 16:42:54,067 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差
+2025-09-08 16:42:54,069 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,
+2025-09-08 16:42:54,071 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分
+2025-09-08 16:42:54,072 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在
+2025-09-08 16:42:54,101 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的
+2025-09-08 16:42:54,103 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的
+2025-09-08 16:42:54,105 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识
+2025-09-08 16:42:54,106 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识
+2025-09-08 16:42:54,114 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,
+2025-09-08 16:42:54,116 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《
+2025-09-08 16:42:54,119 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差
+2025-09-08 16:42:54,119 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在
+2025-09-08 16:42:54,120 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差
+2025-09-08 16:42:54,122 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助
+2025-09-08 16:42:54,124 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差
+2025-09-08 16:42:54,126 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度
+2025-09-08 16:42:54,153 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段
+2025-09-08 16:42:54,155 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,
+2025-09-08 16:42:54,159 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,
+2025-09-08 16:42:54,162 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **
+2025-09-08 16:42:54,163 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段
+2025-09-08 16:42:54,164 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中
+2025-09-08 16:42:54,166 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,
+2025-09-08 16:42:54,183 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段
+2025-09-08 16:42:54,184 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,
+2025-09-08 16:42:54,193 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段
+2025-09-08 16:42:54,194 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,
+2025-09-08 16:42:54,208 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章
+2025-09-08 16:42:54,210 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度
+2025-09-08 16:42:54,212 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体
+2025-09-08 16:42:54,214 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》
+2025-09-08 16:42:54,217 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额
+2025-09-08 16:42:54,217 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》
+2025-09-08 16:42:54,218 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中
+2025-09-08 16:42:54,235 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于
+2025-09-08 16:42:54,236 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差
+2025-09-08 16:42:54,248 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出
+2025-09-08 16:42:54,252 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章
+2025-09-08 16:42:54,252 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我
+2025-09-08 16:42:54,254 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章
+2025-09-08 16:42:54,275 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于
+2025-09-08 16:42:54,276 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差
+2025-09-08 16:42:54,289 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于
+2025-09-08 16:42:54,291 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差
+2025-09-08 16:42:54,297 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作
+2025-09-08 16:42:54,300 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体
+2025-09-08 16:42:54,301 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施
+2025-09-08 16:42:54,303 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息
+2025-09-08 16:42:54,305 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:54,328 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助
+2025-09-08 16:42:54,329 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的
+2025-09-08 16:42:54,338 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“
+2025-09-08 16:42:54,340 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他
+2025-09-08 16:42:54,343 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法
+2025-09-08 16:42:54,345 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到
+2025-09-08 16:42:54,347 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作
+2025-09-08 16:42:54,349 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度
+2025-09-08 16:42:54,367 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具
+2025-09-08 16:42:54,377 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿
+2025-09-08 16:42:54,379 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准
+2025-09-08 16:42:54,392 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始
+2025-09-08 16:42:54,395 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:54,396 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:54,397 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些
+2025-09-08 16:42:54,399 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市
+2025-09-08 16:42:54,400 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”
+2025-09-08 16:42:54,426 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的
+2025-09-08 16:42:54,434 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放
+2025-09-08 16:42:54,435 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于
+2025-09-08 16:42:54,437 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程
+2025-09-08 16:42:54,441 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度**
+2025-09-08 16:42:54,441 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“
+2025-09-08 16:42:54,443 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度**
+2025-09-08 16:42:54,460 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择
+2025-09-08 16:42:54,461 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准
+2025-09-08 16:42:54,471 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体
+2025-09-08 16:42:54,472 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定
+2025-09-08 16:42:54,484 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第
+2025-09-08 16:42:54,486 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日
+2025-09-08 16:42:54,489 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:54,489 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段
+2025-09-08 16:42:54,490 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4
+2025-09-08 16:42:54,491 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:54,492 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中
+2025-09-08 16:42:54,493 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体
+2025-09-08 16:42:54,494 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的
+2025-09-08 16:42:54,497 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“
+2025-09-08 16:42:54,498 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司
+2025-09-08 16:42:54,505 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对
+2025-09-08 16:42:54,506 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工
+2025-09-08 16:42:54,511 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,
+2025-09-08 16:42:54,512 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有
+2025-09-08 16:42:54,531 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差
+2025-09-08 16:42:54,533 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的
+2025-09-08 16:42:54,535 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本
+2025-09-08 16:42:54,537 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的
+2025-09-08 16:42:54,538 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的
+2025-09-08 16:42:54,540 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **
+2025-09-08 16:42:54,553 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,
+2025-09-08 16:42:54,554 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在
+2025-09-08 16:42:54,562 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未
+2025-09-08 16:42:54,564 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在
+2025-09-08 16:42:54,577 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的
+2025-09-08 16:42:54,578 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息
+2025-09-08 16:42:54,585 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确
+2025-09-08 16:42:54,587 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.
+2025-09-08 16:42:54,589 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息
+2025-09-08 16:42:54,590 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4
+2025-09-08 16:42:54,604 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息
+2025-09-08 16:42:54,605 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中
+2025-09-08 16:42:54,621 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:54,622 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了
+2025-09-08 16:42:54,627 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4
+2025-09-08 16:42:54,627 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他
+2025-09-08 16:42:54,627 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所
+2025-09-08 16:42:54,628 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:54,629 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差
+2025-09-08 16:42:54,632 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.
+2025-09-08 16:42:54,633 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲
+2025-09-08 16:42:54,633 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的
+2025-09-08 16:42:54,645 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章
+2025-09-08 16:42:54,646 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作
+2025-09-08 16:42:54,653 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册
+2025-09-08 16:42:54,668 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:54,670 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:54,674 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节
+2025-09-08 16:42:54,675 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有
+2025-09-08 16:42:54,678 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。
+2025-09-08 16:42:54,679 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议
+2025-09-08 16:42:54,682 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:54,682 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要
+2025-09-08 16:42:54,683 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:54,684 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照
+2025-09-08 16:42:54,696 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未
+2025-09-08 16:42:54,698 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确
+2025-09-08 16:42:54,714 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具
+2025-09-08 16:42:54,716 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4
+2025-09-08 16:42:54,719 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家
+2025-09-08 16:42:54,720 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、
+2025-09-08 16:42:54,721 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4
+2025-09-08 16:42:54,723 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差
+2025-09-08 16:42:54,740 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度
+2025-09-08 16:42:54,741 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第
+2025-09-08 16:42:54,748 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中
+2025-09-08 16:42:54,761 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:54,761 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识
+2025-09-08 16:42:54,762 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:54,763 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《
+2025-09-08 16:42:54,764 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:54,764 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段
+2025-09-08 16:42:54,767 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:54,768 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司
+2025-09-08 16:42:54,768 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关
+2025-09-08 16:42:54,771 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您
+2025-09-08 16:42:54,773 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅
+2025-09-08 16:42:54,790 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及
+2025-09-08 16:42:54,791 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的
+2025-09-08 16:42:54,810 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助
+2025-09-08 16:42:54,811 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差
+2025-09-08 16:42:54,815 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”
+2025-09-08 16:42:54,815 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿
+2025-09-08 16:42:54,817 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差**
+2025-09-08 16:42:54,818 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准
+2025-09-08 16:42:54,832 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4
+2025-09-08 16:42:54,834 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.
+2025-09-08 16:42:54,841 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接
+2025-09-08 16:42:54,843 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出
+2025-09-08 16:42:54,854 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:54,854 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中
+2025-09-08 16:42:54,856 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:54,856 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务
+2025-09-08 16:42:54,859 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明
+2025-09-08 16:42:54,859 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:54,860 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在
+2025-09-08 16:42:54,861 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:54,861 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销
+2025-09-08 16:42:54,863 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:54,866 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《
+2025-09-08 16:42:54,882 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“
+2025-09-08 16:42:54,901 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、
+2025-09-08 16:42:54,904 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差**
+2025-09-08 16:42:54,905 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体
+2025-09-08 16:42:54,908 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食
+2025-09-08 16:42:54,911 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分
+2025-09-08 16:42:54,912 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定
+2025-09-08 16:42:54,922 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4
+2025-09-08 16:42:54,924 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节
+2025-09-08 16:42:54,933 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。
+2025-09-08 16:42:54,935 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息
+2025-09-08 16:42:54,946 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:54,946 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章
+2025-09-08 16:42:54,948 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:54,948 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度
+2025-09-08 16:42:54,950 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:54,950 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》
+2025-09-08 16:42:54,951 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:54,952 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **
+2025-09-08 16:42:54,953 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:54,954 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差
+2025-09-08 16:42:54,957 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司
+2025-09-08 16:42:54,958 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务
+2025-09-08 16:42:54,974 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放
+2025-09-08 16:42:54,975 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程
+2025-09-08 16:42:54,994 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴
+2025-09-08 16:42:54,997 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有
+2025-09-08 16:42:54,998 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:54,999 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及
+2025-09-08 16:42:55,001 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确
+2025-09-08 16:42:55,016 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中
+2025-09-08 16:42:55,026 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出
+2025-09-08 16:42:55,039 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:55,039 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第
+2025-09-08 16:42:55,041 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:55,041 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定
+2025-09-08 16:42:55,043 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,043 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请
+2025-09-08 16:42:55,044 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:55,045 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(
+2025-09-08 16:42:55,046 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,046 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须
+2025-09-08 16:42:55,048 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务报销
+2025-09-08 16:42:55,049 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务报销制度
+2025-09-08 16:42:55,066 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:55,087 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差
+2025-09-08 16:42:55,090 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明
+2025-09-08 16:42:55,091 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:55,091 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息
+2025-09-08 16:42:55,092 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的
+2025-09-08 16:42:55,094 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:55,110 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出
+2025-09-08 16:42:55,118 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:
+2025-09-08 16:42:55,131 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:55,131 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4
+2025-09-08 16:42:55,133 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:55,133 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见
+2025-09-08 16:42:55,134 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:55,135 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.
+2025-09-08 16:42:55,136 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,137 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照
+2025-09-08 16:42:55,138 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,139 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的
+2025-09-08 16:42:55,140 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务报销制度》
+2025-09-08 16:42:55,141 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务报销制度》或
+2025-09-08 16:42:55,159 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:55,160 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关
+2025-09-08 16:42:55,178 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴
+2025-09-08 16:42:55,180 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:55,180 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **
+2025-09-08 16:42:55,184 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:55,184 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅
+2025-09-08 16:42:55,184 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请
+2025-09-08 16:42:55,186 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:55,186 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在
+2025-09-08 16:42:55,202 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:55,204 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:55,205 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **
+2025-09-08 16:42:55,210 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司
+2025-09-08 16:42:55,223 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:55,224 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4
+2025-09-08 16:42:55,225 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:55,225 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4
+2025-09-08 16:42:55,227 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:55,227 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节
+2025-09-08 16:42:55,228 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:55,229 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.
+2025-09-08 16:42:55,231 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务报销制度》或相关
+2025-09-08 16:42:55,238 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,238 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作
+2025-09-08 16:42:55,240 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,240 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序
+2025-09-08 16:42:55,251 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:55,251 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段
+2025-09-08 16:42:55,253 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:55,253 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅
+2025-09-08 16:42:55,272 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和
+2025-09-08 16:42:55,276 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:55,276 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“
+2025-09-08 16:42:55,276 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:55,277 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章
+2025-09-08 16:42:55,277 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品
+2025-09-08 16:42:55,279 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:55,279 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4
+2025-09-08 16:42:55,296 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:55,297 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司
+2025-09-08 16:42:55,303 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对
+2025-09-08 16:42:55,306 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工
+2025-09-08 16:42:55,317 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:55,317 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4
+2025-09-08 16:42:55,318 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:55,318 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“
+2025-09-08 16:42:55,320 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:55,321 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差
+2025-09-08 16:42:55,321 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:55,321 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差
+2025-09-08 16:42:55,324 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务报销制度》或相关出差
+2025-09-08 16:42:55,326 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务报销制度》或相关出差管理
+2025-09-08 16:42:55,336 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,336 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。
+2025-09-08 16:42:55,338 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,338 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司
+2025-09-08 16:42:55,345 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:55,345 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出
+2025-09-08 16:42:55,346 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:55,346 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:55,364 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等
+2025-09-08 16:42:55,365 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:55,366 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司
+2025-09-08 16:42:55,369 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:55,369 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.
+2025-09-08 16:42:55,369 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格
+2025-09-08 16:42:55,371 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:55,371 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4
+2025-09-08 16:42:55,389 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:55,390 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对
+2025-09-08 16:42:55,391 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:55,391 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工
+2025-09-08 16:42:55,400 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差
+2025-09-08 16:42:55,402 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的
+2025-09-08 16:42:55,409 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:55,409 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款
+2025-09-08 16:42:55,410 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:55,411 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”
+2025-09-08 16:42:55,412 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:55,413 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到
+2025-09-08 16:42:55,418 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务报销制度》或相关出差管理专项
+2025-09-08 16:42:55,437 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,437 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对
+2025-09-08 16:42:55,438 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:55,439 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:55,439 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **
+2025-09-08 16:42:55,440 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,440 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工
+2025-09-08 16:42:55,456 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的
+2025-09-08 16:42:55,458 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:55,459 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对
+2025-09-08 16:42:55,460 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细
+2025-09-08 16:42:55,461 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:55,462 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工
+2025-09-08 16:42:55,464 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:55,464 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节
+2025-09-08 16:42:55,465 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:55,466 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,
+2025-09-08 16:42:55,483 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:55,483 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差
+2025-09-08 16:42:55,484 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:55,485 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所
+2025-09-08 16:42:55,488 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿
+2025-09-08 16:42:55,501 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:55,501 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,
+2025-09-08 16:42:55,503 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:55,503 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),
+2025-09-08 16:42:55,504 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:55,505 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差
+2025-09-08 16:42:55,506 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:55,506 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但
+2025-09-08 16:42:55,511 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务报销制度》或相关出差管理专项规定
+2025-09-08 16:42:55,533 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:55,533 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:55,533 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「
+2025-09-08 16:42:55,534 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:55,534 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:55,535 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司
+2025-09-08 16:42:55,536 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,536 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差
+2025-09-08 16:42:55,538 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,538 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所
+2025-09-08 16:42:55,550 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容
+2025-09-08 16:42:55,551 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:55,552 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差
+2025-09-08 16:42:55,555 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:55,555 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中
+2025-09-08 16:42:55,555 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请
+2025-09-08 16:42:55,556 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:55,557 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的
+2025-09-08 16:42:55,558 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:55,559 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到
+2025-09-08 16:42:55,575 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:55,575 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的
+2025-09-08 16:42:55,577 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:55,577 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具
+2025-09-08 16:42:55,581 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准
+2025-09-08 16:42:55,582 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等
+2025-09-08 16:42:55,591 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:55,592 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请
+2025-09-08 16:42:55,593 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:55,593 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体
+2025-09-08 16:42:55,594 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:55,594 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助
+2025-09-08 16:42:55,601 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务报销制度》或相关出差管理专项规定以
+2025-09-08 16:42:55,602 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务报销制度》或相关出差管理专项规定以获取
+2025-09-08 16:42:55,623 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:55,623 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:55,623 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对
+2025-09-08 16:42:55,624 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:55,624 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:55,624 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工
+2025-09-08 16:42:55,635 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,636 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的
+2025-09-08 16:42:55,636 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,636 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具
+2025-09-08 16:42:55,642 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照
+2025-09-08 16:42:55,644 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《
+2025-09-08 16:42:55,645 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:55,646 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所
+2025-09-08 16:42:55,647 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:55,648 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“
+2025-09-08 16:42:55,649 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:55,649 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的
+2025-09-08 16:42:55,651 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:55,651 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司
+2025-09-08 16:42:55,671 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:55,671 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、
+2025-09-08 16:42:55,672 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:55,673 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿
+2025-09-08 16:42:55,685 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细
+2025-09-08 16:42:55,692 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:55,692 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准
+2025-09-08 16:42:55,697 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容
+2025-09-08 16:42:55,698 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:55,698 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作
+2025-09-08 16:42:55,700 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务报销制度》或相关出差管理专项规定以获取准确
+2025-09-08 16:42:55,702 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务报销制度》或相关出差管理专项规定以获取准确说明
+2025-09-08 16:42:55,713 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:55,713 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:55,713 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差
+2025-09-08 16:42:55,714 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:55,714 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:55,715 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的
+2025-09-08 16:42:55,735 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,735 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、
+2025-09-08 16:42:55,737 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司
+2025-09-08 16:42:55,740 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:55,741 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具
+2025-09-08 16:42:55,741 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:55,741 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿
+2025-09-08 16:42:55,744 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:55,744 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对
+2025-09-08 16:42:55,744 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务
+2025-09-08 16:42:55,745 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:55,745 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、
+2025-09-08 16:42:55,746 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:55,747 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工
+2025-09-08 16:42:55,764 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:55,764 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准
+2025-09-08 16:42:55,766 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请
+2025-09-08 16:42:55,767 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:55,768 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、
+2025-09-08 16:42:55,769 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照
+2025-09-08 16:42:55,777 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:55,778 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序
+2025-09-08 16:42:55,779 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:55,779 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及
+2025-09-08 16:42:55,782 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:55,782 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未
+2025-09-08 16:42:55,783 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:55,783 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在
+2025-09-08 16:42:55,789 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务报销制度》或相关出差管理专项规定以获取准确说明。
+2025-09-08 16:42:55,791 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,目前没有关于《出差管理制度》中“其他城市”具体定义的明确信息。建议您查阅《公司财务报销制度》或相关出差管理专项规定以获取准确说明。
+2025-09-08 16:42:55,794 - INFO - API调用成功,答案长度: 0, chat_id: 
+2025-09-08 16:42:55,794 - INFO - 使用上下文数量: 1, 答案长度: 0
+2025-09-08 16:42:56,059 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,059 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,059 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所
+2025-09-08 16:42:56,059 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,059 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,059 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的
+2025-09-08 16:42:56,060 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,060 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,060 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具
+2025-09-08 16:42:56,060 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,060 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,060 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、
+2025-09-08 16:42:56,060 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,060 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,060 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿
+2025-09-08 16:42:56,060 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,060 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,060 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准
+2025-09-08 16:42:56,061 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销
+2025-09-08 16:42:56,061 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度
+2025-09-08 16:42:56,061 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》
+2025-09-08 16:42:56,061 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定
+2025-09-08 16:42:56,061 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,061 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,061 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,061 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿
+2025-09-08 16:42:56,061 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,061 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准
+2025-09-08 16:42:56,062 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,062 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、
+2025-09-08 16:42:56,062 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,062 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食
+2025-09-08 16:42:56,062 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,062 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴
+2025-09-08 16:42:56,062 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,062 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及
+2025-09-08 16:42:56,062 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,062 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准
+2025-09-08 16:42:56,062 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,063 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、
+2025-09-08 16:42:56,063 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,063 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食
+2025-09-08 16:42:56,063 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,063 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴
+2025-09-08 16:42:56,063 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,063 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及
+2025-09-08 16:42:56,063 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,063 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差
+2025-09-08 16:42:56,063 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,063 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差
+2025-09-08 16:42:56,063 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,064 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的
+2025-09-08 16:42:56,064 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,064 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所
+2025-09-08 16:42:56,064 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,064 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的
+2025-09-08 16:42:56,064 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,064 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具
+2025-09-08 16:42:56,064 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,064 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、
+2025-09-08 16:42:56,064 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,064 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食
+2025-09-08 16:42:56,065 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,065 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴
+2025-09-08 16:42:56,065 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,065 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及
+2025-09-08 16:42:56,065 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,065 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差
+2025-09-08 16:42:56,065 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,065 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的
+2025-09-08 16:42:56,065 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,065 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴
+2025-09-08 16:42:56,065 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《
+2025-09-08 16:42:56,066 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司
+2025-09-08 16:42:56,066 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务
+2025-09-08 16:42:56,066 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销
+2025-09-08 16:42:56,066 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度
+2025-09-08 16:42:56,066 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》
+2025-09-08 16:42:56,066 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,066 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关
+2025-09-08 16:42:56,066 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,066 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用
+2025-09-08 16:42:56,066 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,066 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准
+2025-09-08 16:42:56,067 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,067 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照
+2025-09-08 16:42:56,067 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,067 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册
+2025-09-08 16:42:56,067 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,067 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段
+2025-09-08 16:42:56,068 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,068 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中
+2025-09-08 16:42:56,069 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,069 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列
+2025-09-08 16:42:56,087 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,088 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,088 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、
+2025-09-08 16:42:56,089 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,089 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,089 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食
+2025-09-08 16:42:56,112 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,112 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着
+2025-09-08 16:42:56,113 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,114 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差
+2025-09-08 16:42:56,117 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,117 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿
+2025-09-08 16:42:56,118 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,118 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差
+2025-09-08 16:42:56,119 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,119 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的
+2025-09-08 16:42:56,120 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,121 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准
+2025-09-08 16:42:56,124 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,124 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的
+2025-09-08 16:42:56,125 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,125 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴
+2025-09-08 16:42:56,137 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定
+2025-09-08 16:42:56,139 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,142 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,142 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请
+2025-09-08 16:42:56,144 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,144 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和
+2025-09-08 16:42:56,149 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,149 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《
+2025-09-08 16:42:56,151 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,151 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司
+2025-09-08 16:42:56,154 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,154 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明
+2025-09-08 16:42:56,156 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,157 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。
+2025-09-08 16:42:56,178 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,178 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,179 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴
+2025-09-08 16:42:56,180 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,180 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,180 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及
+2025-09-08 16:42:56,204 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,205 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、
+2025-09-08 16:42:56,206 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,206 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食
+2025-09-08 16:42:56,208 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,208 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的
+2025-09-08 16:42:56,212 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,212 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴
+2025-09-08 16:42:56,213 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,213 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担
+2025-09-08 16:42:56,214 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,214 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请
+2025-09-08 16:42:56,225 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,225 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请
+2025-09-08 16:42:56,227 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,227 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和
+2025-09-08 16:42:56,229 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,229 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议
+2025-09-08 16:42:56,231 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,231 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您
+2025-09-08 16:42:56,244 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,244 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品
+2025-09-08 16:42:56,244 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,245 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等
+2025-09-08 16:42:56,245 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,246 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务
+2025-09-08 16:42:56,246 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,246 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销
+2025-09-08 16:42:56,247 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,248 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外
+2025-09-08 16:42:56,269 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,269 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,270 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差
+2025-09-08 16:42:56,271 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,271 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,271 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的
+2025-09-08 16:42:56,299 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,300 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴
+2025-09-08 16:42:56,301 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,301 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式
+2025-09-08 16:42:56,307 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:42:56,308 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,309 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和
+2025-09-08 16:42:56,309 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,309 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品
+2025-09-08 16:42:56,310 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,310 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及
+2025-09-08 16:42:56,321 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,322 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅
+2025-09-08 16:42:56,323 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,323 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品
+2025-09-08 16:42:56,325 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,325 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《
+2025-09-08 16:42:56,326 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,327 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等
+2025-09-08 16:42:56,331 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,331 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格
+2025-09-08 16:42:56,332 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,332 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的
+2025-09-08 16:42:56,334 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,334 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度
+2025-09-08 16:42:56,335 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,336 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》
+2025-09-08 16:42:56,352 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,352 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,
+2025-09-08 16:42:56,354 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,354 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段
+2025-09-08 16:42:56,362 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,362 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,362 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴
+2025-09-08 16:42:56,363 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,364 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,364 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请
+2025-09-08 16:42:56,390 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,391 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差
+2025-09-08 16:42:56,392 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,392 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的
+2025-09-08 16:42:56,394 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,394 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(
+2025-09-08 16:42:56,396 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,396 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等
+2025-09-08 16:42:56,398 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,398 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括
+2025-09-08 16:42:56,399 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,400 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格
+2025-09-08 16:42:56,414 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,415 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《公司
+2025-09-08 16:42:56,416 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,417 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格
+2025-09-08 16:42:56,418 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,418 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《公司财务
+2025-09-08 16:42:56,420 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,420 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的
+2025-09-08 16:42:56,425 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,425 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细
+2025-09-08 16:42:56,426 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,426 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定
+2025-09-08 16:42:56,428 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,428 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容
+2025-09-08 16:42:56,429 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,430 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,
+2025-09-08 16:42:56,431 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,432 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也
+2025-09-08 16:42:56,453 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,454 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,454 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和
+2025-09-08 16:42:56,455 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,455 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,455 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品
+2025-09-08 16:42:56,483 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,483 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴
+2025-09-08 16:42:56,485 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,485 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请
+2025-09-08 16:42:56,488 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,489 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由
+2025-09-08 16:42:56,490 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,490 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的
+2025-09-08 16:42:56,492 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,492 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细
+2025-09-08 16:42:56,508 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,509 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《公司财务报销
+2025-09-08 16:42:56,510 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,510 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《公司财务报销制度
+2025-09-08 16:42:56,514 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,515 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细
+2025-09-08 16:42:56,516 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,516 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容
+2025-09-08 16:42:56,521 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,521 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,
+2025-09-08 16:42:56,524 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,524 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到
+2025-09-08 16:42:56,525 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,525 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但
+2025-09-08 16:42:56,528 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,528 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本
+2025-09-08 16:42:56,528 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,529 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未
+2025-09-08 16:42:56,545 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,545 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,546 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等
+2025-09-08 16:42:56,547 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,547 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,547 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格
+2025-09-08 16:42:56,576 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,576 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和
+2025-09-08 16:42:56,577 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,578 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品
+2025-09-08 16:42:56,582 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,583 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户
+2025-09-08 16:42:56,584 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,585 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容
+2025-09-08 16:42:56,586 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,586 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担
+2025-09-08 16:42:56,588 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,588 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请
+2025-09-08 16:42:56,612 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,613 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,
+2025-09-08 16:42:56,615 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,616 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及
+2025-09-08 16:42:56,617 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,617 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请
+2025-09-08 16:42:56,619 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,619 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《
+2025-09-08 16:42:56,620 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,621 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照
+2025-09-08 16:42:56,634 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,634 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《公司财务报销制度》
+2025-09-08 16:42:56,636 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,636 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司
+2025-09-08 16:42:56,637 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,638 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《公司财务报销制度》文档
+2025-09-08 16:42:56,641 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,641 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据
+2025-09-08 16:42:56,641 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,642 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,642 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的
+2025-09-08 16:42:56,643 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,643 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,643 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细
+2025-09-08 16:42:56,669 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,669 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等
+2025-09-08 16:42:56,670 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,671 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格
+2025-09-08 16:42:56,675 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,675 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照
+2025-09-08 16:42:56,677 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,677 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况
+2025-09-08 16:42:56,678 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,679 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《
+2025-09-08 16:42:56,680 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,680 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)
+2025-09-08 16:42:56,694 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,695 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《公司财务报销制度》文档以
+2025-09-08 16:42:56,696 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,696 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《公司财务报销制度》文档以获取
+2025-09-08 16:42:56,705 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,705 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《
+2025-09-08 16:42:56,706 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,707 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差
+2025-09-08 16:42:56,710 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,710 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司
+2025-09-08 16:42:56,711 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,711 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请
+2025-09-08 16:42:56,713 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,714 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地
+2025-09-08 16:42:56,714 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,714 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度
+2025-09-08 16:42:56,715 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,715 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照
+2025-09-08 16:42:56,716 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,717 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规
+2025-09-08 16:42:56,730 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,730 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,731 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容
+2025-09-08 16:42:56,732 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,732 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,732 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请
+2025-09-08 16:42:56,761 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,761 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的
+2025-09-08 16:42:56,763 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,763 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细
+2025-09-08 16:42:56,768 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,768 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应
+2025-09-08 16:42:56,770 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,770 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体
+2025-09-08 16:42:56,772 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,772 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司
+2025-09-08 16:42:56,774 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,774 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务
+2025-09-08 16:42:56,787 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,787 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《公司财务报销制度》文档以获取具体
+2025-09-08 16:42:56,799 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,799 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务
+2025-09-08 16:42:56,800 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,801 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销
+2025-09-08 16:42:56,802 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,802 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》
+2025-09-08 16:42:56,806 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,806 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行
+2025-09-08 16:42:56,807 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,807 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《
+2025-09-08 16:42:56,807 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,808 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身
+2025-09-08 16:42:56,810 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,810 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定
+2025-09-08 16:42:56,811 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,811 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司
+2025-09-08 16:42:56,823 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,823 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,824 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照
+2025-09-08 16:42:56,825 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,825 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,825 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《
+2025-09-08 16:42:56,862 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,862 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照
+2025-09-08 16:42:56,880 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,880 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《公司财务报销制度》文档以获取具体标准
+2025-09-08 16:42:56,892 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,893 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,
+2025-09-08 16:42:56,896 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,897 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(
+2025-09-08 16:42:56,898 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,898 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见
+2025-09-08 16:42:56,902 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,902 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务
+2025-09-08 16:42:56,903 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:56,904 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销
+2025-09-08 16:42:56,916 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,916 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,916 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司
+2025-09-08 16:42:56,917 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:56,918 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:56,918 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务
+2025-09-08 16:42:56,950 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,950 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度
+2025-09-08 16:42:56,951 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,952 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》
+2025-09-08 16:42:56,953 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,954 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销
+2025-09-08 16:42:56,955 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,956 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《
+2025-09-08 16:42:56,957 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,957 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度
+2025-09-08 16:42:56,960 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,960 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容
+2025-09-08 16:42:56,961 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:56,961 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司
+2025-09-08 16:42:56,963 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,963 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》
+2025-09-08 16:42:56,964 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,964 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请
+2025-09-08 16:42:56,964 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:56,965 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定
+2025-09-08 16:42:56,966 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,966 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照
+2025-09-08 16:42:56,967 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:56,968 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《
+2025-09-08 16:42:56,971 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,971 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《公司财务报销制度》文档以获取具体标准。
+2025-09-08 16:42:56,972 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差住宿标准的具体规定并未在手册中直接列出。相关信息指出:公司对员工出差时的住宿标准等详细内容请参照《公司财务报销制度》的有关规定。
+2025-09-08 16:42:56,972 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《公司财务报销制度》文档以获取具体标准。
+2025-09-08 16:42:56,973 - INFO - API调用成功,答案长度: 0, chat_id: 
+2025-09-08 16:42:56,974 - INFO - 使用上下文数量: 1, 答案长度: 0
+2025-09-08 16:42:56,986 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,987 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未
+2025-09-08 16:42:56,987 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,988 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定
+2025-09-08 16:42:56,990 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,990 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4
+2025-09-08 16:42:56,991 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:56,991 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明
+2025-09-08 16:42:56,991 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:56,992 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:56,993 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:56,993 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.
+2025-09-08 16:42:57,004 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,004 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度
+2025-09-08 16:42:57,006 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,006 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》
+2025-09-08 16:42:57,008 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,009 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,009 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销
+2025-09-08 16:42:57,010 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,010 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,011 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度
+2025-09-08 16:42:57,041 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,042 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司
+2025-09-08 16:42:57,043 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,043 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务
+2025-09-08 16:42:57,049 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,049 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务
+2025-09-08 16:42:57,051 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,052 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,052 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,052 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销
+2025-09-08 16:42:57,054 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,054 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,078 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,079 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,079 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此
+2025-09-08 16:42:57,080 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,081 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其
+2025-09-08 16:42:57,082 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,082 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,082 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,
+2025-09-08 16:42:57,086 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,086 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5
+2025-09-08 16:42:57,086 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,087 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效
+2025-09-08 16:42:57,088 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,088 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.
+2025-09-08 16:42:57,100 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,100 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,100 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》
+2025-09-08 16:42:57,102 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,102 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,102 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定
+2025-09-08 16:42:57,104 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,105 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定
+2025-09-08 16:42:57,106 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,106 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,142 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,142 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销
+2025-09-08 16:42:57,144 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,144 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度
+2025-09-08 16:42:57,147 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,148 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,148 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此
+2025-09-08 16:42:57,148 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,148 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度
+2025-09-08 16:42:57,149 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,149 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。
+2025-09-08 16:42:57,151 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,151 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,151 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,
+2025-09-08 16:42:57,172 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,172 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,172 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差
+2025-09-08 16:42:57,173 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,174 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或
+2025-09-08 16:42:57,177 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,178 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,178 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员
+2025-09-08 16:42:57,178 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,178 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8
+2025-09-08 16:42:57,179 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,180 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他
+2025-09-08 16:42:57,185 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:42:57,194 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,194 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,194 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」
+2025-09-08 16:42:57,195 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,196 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,196 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:57,200 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,200 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,200 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此
+2025-09-08 16:42:57,202 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,202 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,202 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,
+2025-09-08 16:42:57,230 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,230 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》
+2025-09-08 16:42:57,231 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,231 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定
+2025-09-08 16:42:57,237 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,237 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果
+2025-09-08 16:42:57,239 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,239 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,240 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差
+2025-09-08 16:42:57,241 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,241 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户
+2025-09-08 16:42:57,242 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,243 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,243 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助
+2025-09-08 16:42:57,264 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,264 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,265 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否
+2025-09-08 16:42:57,266 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,266 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的
+2025-09-08 16:42:57,269 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,270 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,270 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择
+2025-09-08 16:42:57,270 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,271 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定
+2025-09-08 16:42:57,271 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,271 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始
+2025-09-08 16:42:57,273 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,273 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款
+2025-09-08 16:42:57,285 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,285 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,286 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:57,286 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此
+2025-09-08 16:42:57,287 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,287 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,287 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:57,288 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,
+2025-09-08 16:42:57,297 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,297 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,298 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体
+2025-09-08 16:42:57,299 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,299 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,299 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通
+2025-09-08 16:42:57,320 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,321 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,322 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,322 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,323 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此
+2025-09-08 16:42:57,330 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,330 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已
+2025-09-08 16:42:57,332 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,332 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,332 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体
+2025-09-08 16:42:57,334 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,334 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担
+2025-09-08 16:42:57,335 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,335 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,336 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额
+2025-09-08 16:42:57,358 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,358 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间
+2025-09-08 16:42:57,360 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,360 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:57,361 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,362 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:57,362 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议
+2025-09-08 16:42:57,378 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,378 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,379 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:57,379 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差
+2025-09-08 16:42:57,400 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,401 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,401 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用
+2025-09-08 16:42:57,402 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,402 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,403 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销
+2025-09-08 16:42:57,413 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,414 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,414 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐
+2025-09-08 16:42:57,415 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,415 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,416 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,
+2025-09-08 16:42:57,417 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,417 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,417 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车
+2025-09-08 16:42:57,418 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,419 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,419 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差
+2025-09-08 16:42:57,423 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,424 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,424 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算
+2025-09-08 16:42:57,434 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,434 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了
+2025-09-08 16:42:57,451 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,451 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:57,452 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,453 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:57,453 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议
+2025-09-08 16:42:57,454 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,454 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:57,455 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您
+2025-09-08 16:42:57,456 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,456 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:57,457 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅
+2025-09-08 16:42:57,458 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,458 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,458 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(
+2025-09-08 16:42:57,460 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,460 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,460 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及
+2025-09-08 16:42:57,470 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,470 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,470 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:57,470 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助
+2025-09-08 16:42:57,471 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,471 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,471 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:57,472 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体
+2025-09-08 16:42:57,504 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,505 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,505 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制
+2025-09-08 16:42:57,506 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,506 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,506 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(
+2025-09-08 16:42:57,508 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,508 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,508 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助
+2025-09-08 16:42:57,510 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,510 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,510 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体
+2025-09-08 16:42:57,517 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,517 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关
+2025-09-08 16:42:57,518 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,518 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,519 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则
+2025-09-08 16:42:57,544 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,544 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:57,544 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的
+2025-09-08 16:42:57,547 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,547 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,548 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体
+2025-09-08 16:42:57,548 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,548 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:57,549 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您
+2025-09-08 16:42:57,551 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,551 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,551 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用
+2025-09-08 16:42:57,552 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,552 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:57,552 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅
+2025-09-08 16:42:57,562 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,562 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,562 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:57,562 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放
+2025-09-08 16:42:57,563 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,563 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,563 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:57,564 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准
+2025-09-08 16:42:57,600 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,601 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,601 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准
+2025-09-08 16:42:57,602 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,602 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,603 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未
+2025-09-08 16:42:57,606 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,606 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,606 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如
+2025-09-08 16:42:57,607 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,608 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,608 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具
+2025-09-08 16:42:57,609 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,609 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差
+2025-09-08 16:42:57,611 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,612 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,612 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(
+2025-09-08 16:42:57,613 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,614 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,614 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括
+2025-09-08 16:42:57,636 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,637 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:57,637 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《
+2025-09-08 16:42:57,638 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,638 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:57,639 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《
+2025-09-08 16:42:57,642 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,642 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,642 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形
+2025-09-08 16:42:57,643 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,643 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:57,643 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务
+2025-09-08 16:42:57,652 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,653 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,653 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:57,653 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、
+2025-09-08 16:42:57,654 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,654 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,655 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:57,655 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程
+2025-09-08 16:42:57,694 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,694 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,694 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本
+2025-09-08 16:42:57,702 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,702 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用
+2025-09-08 16:42:57,704 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,704 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,
+2025-09-08 16:42:57,706 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,706 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,706 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食
+2025-09-08 16:42:57,708 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,708 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,708 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴
+2025-09-08 16:42:57,713 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,713 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,714 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择
+2025-09-08 16:42:57,715 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,715 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,715 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准
+2025-09-08 16:42:57,729 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,729 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:57,730 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销
+2025-09-08 16:42:57,731 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,731 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:57,731 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销制度
+2025-09-08 16:42:57,734 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,735 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,735 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)
+2025-09-08 16:42:57,735 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,736 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:57,736 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差
+2025-09-08 16:42:57,737 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,737 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,737 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需
+2025-09-08 16:42:57,744 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,744 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,745 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:57,745 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和
+2025-09-08 16:42:57,746 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,746 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,746 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:57,746 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式
+2025-09-08 16:42:57,787 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,788 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,788 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册
+2025-09-08 16:42:57,789 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,789 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,790 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中
+2025-09-08 16:42:57,799 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,799 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,799 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等
+2025-09-08 16:42:57,801 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,801 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司
+2025-09-08 16:42:57,802 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,803 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,803 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)
+2025-09-08 16:42:57,804 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,804 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常
+2025-09-08 16:42:57,806 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,807 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,807 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、
+2025-09-08 16:42:57,808 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,808 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,808 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销
+2025-09-08 16:42:57,821 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,821 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:57,821 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销制度》
+2025-09-08 16:42:57,822 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,823 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:57,823 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销制度》或
+2025-09-08 16:42:57,824 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,824 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:57,825 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度
+2025-09-08 16:42:57,826 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,826 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:57,827 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》
+2025-09-08 16:42:57,839 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,839 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,840 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:57,840 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应
+2025-09-08 16:42:57,883 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,883 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,883 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列
+2025-09-08 16:42:57,884 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,885 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,885 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接
+2025-09-08 16:42:57,886 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,886 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,887 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明
+2025-09-08 16:42:57,890 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,890 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需
+2025-09-08 16:42:57,892 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,892 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,892 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应
+2025-09-08 16:42:57,893 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,893 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外
+2025-09-08 16:42:57,898 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:57,899 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,899 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度
+2025-09-08 16:42:57,913 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,913 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:57,913 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销制度》或咨询
+2025-09-08 16:42:57,914 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:57,915 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:57,915 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销制度》或咨询HR
+2025-09-08 16:42:57,918 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,919 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:57,919 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》的
+2025-09-08 16:42:57,920 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:57,921 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:57,921 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考
+2025-09-08 16:42:57,922 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:57,922 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:57,922 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》的独立
+2025-09-08 16:42:57,928 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:57,928 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:57,929 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:57,929 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细
+2025-09-08 16:42:57,971 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,971 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,971 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明,
+2025-09-08 16:42:57,972 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:57,973 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,973 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明,您
+2025-09-08 16:42:57,984 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,984 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付
+2025-09-08 16:42:57,985 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:57,986 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:57,986 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考
+2025-09-08 16:42:57,987 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:57,987 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,
+2025-09-08 16:42:58,007 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:58,007 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:58,007 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销制度》或咨询HR部门
+2025-09-08 16:42:58,008 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,009 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,009 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等
+2025-09-08 16:42:58,010 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:58,010 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:58,011 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销制度》或咨询HR部门以
+2025-09-08 16:42:58,015 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,016 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,016 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《
+2025-09-08 16:42:58,017 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,017 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,017 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)
+2025-09-08 16:42:58,017 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:58,018 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:58,018 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》的独立文件
+2025-09-08 16:42:58,019 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,020 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,020 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司
+2025-09-08 16:42:58,020 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:58,021 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:58,021 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》的独立文件或
+2025-09-08 16:42:58,021 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,022 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,022 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,022 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考
+2025-09-08 16:42:58,064 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:58,065 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,065 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明,您需要
+2025-09-08 16:42:58,066 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:58,066 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,066 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明,您需要查阅
+2025-09-08 16:42:58,078 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,079 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但
+2025-09-08 16:42:58,080 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,080 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,081 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司
+2025-09-08 16:42:58,082 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,082 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终
+2025-09-08 16:42:58,089 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,089 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,089 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需
+2025-09-08 16:42:58,091 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,091 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,091 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考
+2025-09-08 16:42:58,097 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:58,097 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:58,097 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销制度》或咨询HR部门以获取
+2025-09-08 16:42:58,099 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:58,099 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:58,099 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销制度》或咨询HR部门以获取日本
+2025-09-08 16:42:58,104 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:58,104 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:58,104 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》的独立文件或向
+2025-09-08 16:42:58,106 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,106 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,106 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务
+2025-09-08 16:42:58,108 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,108 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,108 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销
+2025-09-08 16:42:58,113 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,113 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,113 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,114 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司
+2025-09-08 16:42:58,159 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:58,159 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,159 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明,您需要查阅《
+2025-09-08 16:42:58,160 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:58,161 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,161 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明,您需要查阅《公司
+2025-09-08 16:42:58,175 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,175 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需
+2025-09-08 16:42:58,177 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,177 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以
+2025-09-08 16:42:58,179 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,180 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,180 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的
+2025-09-08 16:42:58,181 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,181 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,181 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **
+2025-09-08 16:42:58,186 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,186 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,186 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司
+2025-09-08 16:42:58,189 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:58,189 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:58,190 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销制度》或咨询HR部门以获取日本出差
+2025-09-08 16:42:58,191 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:58,191 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:58,191 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销制度》或咨询HR部门以获取日本出差补助
+2025-09-08 16:42:58,196 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,197 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,197 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度
+2025-09-08 16:42:58,198 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:58,199 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:58,199 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》的独立文件或向公司
+2025-09-08 16:42:58,200 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,200 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,200 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》
+2025-09-08 16:42:58,202 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:58,202 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:58,202 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》的独立文件或向公司相关部门
+2025-09-08 16:42:58,204 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,204 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,204 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,205 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的
+2025-09-08 16:42:58,251 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:58,252 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,252 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明,您需要查阅《公司财务
+2025-09-08 16:42:58,253 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:58,253 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,254 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明,您需要查阅《公司财务报销
+2025-09-08 16:42:58,267 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,267 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务
+2025-09-08 16:42:58,270 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,270 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,271 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《
+2025-09-08 16:42:58,272 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,272 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,272 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司
+2025-09-08 16:42:58,285 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:58,285 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:58,285 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销制度》或咨询HR部门以获取日本出差补助的具体
+2025-09-08 16:42:58,287 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:58,287 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:58,287 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销制度》或咨询HR部门以获取日本出差补助的具体标准
+2025-09-08 16:42:58,288 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:58,289 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:58,289 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》的独立文件或向公司相关部门咨询
+2025-09-08 16:42:58,292 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,292 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,292 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体
+2025-09-08 16:42:58,293 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,294 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,294 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款
+2025-09-08 16:42:58,299 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,300 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,300 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部
+2025-09-08 16:42:58,301 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,301 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,301 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《
+2025-09-08 16:42:58,302 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,303 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,303 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,303 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《
+2025-09-08 16:42:58,304 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,304 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,304 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,305 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司
+2025-09-08 16:42:58,345 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:58,345 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,346 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明,您需要查阅《公司财务报销制度
+2025-09-08 16:42:58,347 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:58,347 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,347 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明,您需要查阅《公司财务报销制度》
+2025-09-08 16:42:58,359 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,360 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度
+2025-09-08 16:42:58,363 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,363 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,364 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务
+2025-09-08 16:42:58,365 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,365 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,365 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销
+2025-09-08 16:42:58,373 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:58,374 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:58,374 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销制度》或咨询HR部门以获取日本出差补助的具体标准。
+2025-09-08 16:42:58,376 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于日本出差补助的具体金额信息。
+2025-09-08 16:42:58,376 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这些片段中提到了出差需要参照《公司财务报销制度》的有关规定(见4.4出差条款),但具体补助标准并未在手册片段中列明。此外,片段中也提到日本子公司根据当地法律法规另行规定(见4.5.8其他规定条款)。
+2025-09-08 16:42:58,376 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅公司的《财务报销制度》或咨询HR部门以获取日本出差补助的具体标准。
+2025-09-08 16:42:58,378 - INFO - API调用成功,答案长度: 0, chat_id: 
+2025-09-08 16:42:58,379 - INFO - 使用上下文数量: 1, 答案长度: 0
+2025-09-08 16:42:58,387 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:58,387 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:58,387 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》的独立文件或向公司相关部门咨询以
+2025-09-08 16:42:58,387 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:58,388 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:58,388 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》的独立文件或向公司相关部门咨询以获取
+2025-09-08 16:42:58,388 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,388 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,389 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,
+2025-09-08 16:42:58,389 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,389 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,390 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前
+2025-09-08 16:42:58,427 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,427 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,427 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司
+2025-09-08 16:42:58,431 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,431 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,432 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,432 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务
+2025-09-08 16:42:58,433 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,433 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,433 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,434 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销
+2025-09-08 16:42:58,439 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:58,439 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,439 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明,您需要查阅《公司财务报销制度》来
+2025-09-08 16:42:58,440 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:58,440 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,441 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明,您需要查阅《公司财务报销制度》来获取
+2025-09-08 16:42:58,453 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,453 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体
+2025-09-08 16:42:58,455 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,455 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,456 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度
+2025-09-08 16:42:58,457 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,457 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,457 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》
+2025-09-08 16:42:58,473 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:58,473 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:58,474 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》的独立文件或向公司相关部门咨询以获取准确的
+2025-09-08 16:42:58,475 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,475 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,475 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册
+2025-09-08 16:42:58,477 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,477 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,477 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段
+2025-09-08 16:42:58,483 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,483 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,483 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务
+2025-09-08 16:42:58,484 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,484 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,485 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销
+2025-09-08 16:42:58,488 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,488 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,488 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,488 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度
+2025-09-08 16:42:58,489 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,489 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,490 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,490 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》
+2025-09-08 16:42:58,537 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:58,538 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,538 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明,您需要查阅《公司财务报销制度》来获取详细信息
+2025-09-08 16:42:58,547 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,548 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定
+2025-09-08 16:42:58,549 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,549 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,549 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》**
+2025-09-08 16:42:58,551 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,551 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准
+2025-09-08 16:42:58,552 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,552 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,553 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》**
+2025-09-08 16:42:58,567 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,567 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,567 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中
+2025-09-08 16:42:58,569 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:58,569 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:58,570 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》的独立文件或向公司相关部门咨询以获取准确的实施
+2025-09-08 16:42:58,570 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,571 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,571 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未
+2025-09-08 16:42:58,572 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:58,572 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:58,572 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》的独立文件或向公司相关部门咨询以获取准确的实施日期
+2025-09-08 16:42:58,576 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,576 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,577 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,577 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档
+2025-09-08 16:42:58,578 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,578 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,578 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,578 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。
+2025-09-08 16:42:58,586 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,586 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,586 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度
+2025-09-08 16:42:58,587 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,588 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,588 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》
+2025-09-08 16:42:58,598 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:42:58,627 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:58,628 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,628 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明,您需要查阅《公司财务报销制度》来获取详细信息。
+2025-09-08 16:42:58,630 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,我无法找到关于“日本以外的其他亚洲国家出差补助”的具体规定。
+2025-09-08 16:42:58,630 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关信息仅出现在第四章4.4节,其中提到:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,631 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体标准并未在本手册中列明,您需要查阅《公司财务报销制度》来获取详细信息。
+2025-09-08 16:42:58,633 - INFO - API调用成功,答案长度: 0, chat_id: 
+2025-09-08 16:42:58,633 - INFO - 使用上下文数量: 1, 答案长度: 0
+2025-09-08 16:42:58,640 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,640 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:58,641 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,641 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,642 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档
+2025-09-08 16:42:58,643 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,643 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:58,659 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:58,660 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:58,660 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》的独立文件或向公司相关部门咨询以获取准确的实施日期。
+2025-09-08 16:42:58,661 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,661 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,662 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接
+2025-09-08 16:42:58,664 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,没有关于《出差管理制度》具体实施开始日期的信息。
+2025-09-08 16:42:58,664 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中仅在第四章第4.4节“出差”中提到,出差申请的操作程序以及相关费用标准参照《公司财务报销制度》的有关规定,但并未提及《出差管理制度》本身,也未说明其生效或实施的起始时间。
+2025-09-08 16:42:58,664 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 建议您查阅《出差管理制度》的独立文件或向公司相关部门咨询以获取准确的实施日期。
+2025-09-08 16:42:58,666 - INFO - API调用成功,答案长度: 0, chat_id: 
+2025-09-08 16:42:58,666 - INFO - 使用上下文数量: 1, 答案长度: 0
+2025-09-08 16:42:58,673 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,674 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,674 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,674 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。建议
+2025-09-08 16:42:58,675 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,675 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,675 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,675 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。建议您
+2025-09-08 16:42:58,680 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,680 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,680 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体
+2025-09-08 16:42:58,732 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,732 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:58,732 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识
+2025-09-08 16:42:58,733 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,733 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:58,734 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段
+2025-09-08 16:42:58,736 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,736 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,736 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档,
+2025-09-08 16:42:58,737 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,738 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,738 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档,其中
+2025-09-08 16:42:58,754 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,754 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,754 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明
+2025-09-08 16:42:58,762 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,763 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,763 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,763 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。建议您查阅
+2025-09-08 16:42:58,778 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,778 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,778 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定
+2025-09-08 16:42:58,779 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,780 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,780 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,
+2025-09-08 16:42:58,826 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,826 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:58,826 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中
+2025-09-08 16:42:58,827 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,828 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,828 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档,其中会
+2025-09-08 16:42:58,829 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,829 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:58,830 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未
+2025-09-08 16:42:58,847 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,847 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,847 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐
+2025-09-08 16:42:58,853 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,853 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,853 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,854 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。建议您查阅该
+2025-09-08 16:42:58,856 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:42:58,857 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,857 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,858 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,858 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。建议您查阅该制度
+2025-09-08 16:42:58,874 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,874 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,875 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册
+2025-09-08 16:42:58,917 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,918 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:58,918 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及
+2025-09-08 16:42:58,919 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,920 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,920 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档,其中会详细
+2025-09-08 16:42:58,921 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:58,922 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:58,922 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户
+2025-09-08 16:42:58,923 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:58,923 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:58,923 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档,其中会详细规定
+2025-09-08 16:42:58,941 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,942 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,942 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租
+2025-09-08 16:42:58,943 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:58,943 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,944 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的
+2025-09-08 16:42:58,948 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:42:58,950 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,950 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,950 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,950 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。建议您查阅该制度或
+2025-09-08 16:42:58,951 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:58,951 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:58,951 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:58,951 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。建议您查阅该制度或咨询
+2025-09-08 16:42:58,971 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,972 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,972 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中
+2025-09-08 16:42:58,973 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:58,973 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:58,973 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未
+2025-09-08 16:42:59,011 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,011 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,012 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担
+2025-09-08 16:42:59,013 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:59,013 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:59,014 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档,其中会详细规定不同
+2025-09-08 16:42:59,015 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,015 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,015 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用
+2025-09-08 16:42:59,016 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:59,017 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:59,017 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档,其中会详细规定不同地区
+2025-09-08 16:42:59,035 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:59,036 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,036 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的条件
+2025-09-08 16:42:59,037 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:59,037 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,037 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的条件。
+2025-09-08 16:42:59,039 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:59,039 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:59,040 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:59,040 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。建议您查阅该制度或咨询财务
+2025-09-08 16:42:59,068 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,068 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,068 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接
+2025-09-08 16:42:59,070 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,070 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,070 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出
+2025-09-08 16:42:59,105 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:59,105 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:59,106 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档,其中会详细规定不同地区、
+2025-09-08 16:42:59,107 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:59,107 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:59,107 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档,其中会详细规定不同地区、不同
+2025-09-08 16:42:59,109 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,109 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,109 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的
+2025-09-08 16:42:59,111 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,111 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,111 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外
+2025-09-08 16:42:59,129 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:59,129 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:59,129 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:59,129 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。建议您查阅该制度或咨询财务部门
+2025-09-08 16:42:59,131 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:59,131 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,131 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的条件。建议
+2025-09-08 16:42:59,132 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:59,132 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:59,133 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:59,133 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。建议您查阅该制度或咨询财务部门以
+2025-09-08 16:42:59,165 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,166 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,166 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节
+2025-09-08 16:42:59,197 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,198 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,198 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付
+2025-09-08 16:42:59,199 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:59,200 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:59,200 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档,其中会详细规定不同地区、不同职
+2025-09-08 16:42:59,220 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:59,220 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:59,221 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:59,221 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。建议您查阅该制度或咨询财务部门以获取
+2025-09-08 16:42:59,222 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:59,222 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:59,222 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:59,222 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。建议您查阅该制度或咨询财务部门以获取准确
+2025-09-08 16:42:59,225 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:59,226 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,226 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的条件。建议用户
+2025-09-08 16:42:59,262 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,263 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,263 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节。
+2025-09-08 16:42:59,264 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,264 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,264 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节。建议
+2025-09-08 16:42:59,290 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,290 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,291 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务
+2025-09-08 16:42:59,292 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:59,292 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:59,292 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档,其中会详细规定不同地区、不同职级的
+2025-09-08 16:42:59,294 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:59,294 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:59,294 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档,其中会详细规定不同地区、不同职级的补助
+2025-09-08 16:42:59,313 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:59,313 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:59,313 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:59,313 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。建议您查阅该制度或咨询财务部门以获取准确信息
+2025-09-08 16:42:59,314 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:59,315 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:59,315 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:59,315 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。建议您查阅该制度或咨询财务部门以获取准确信息。
+2025-09-08 16:42:59,317 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:59,317 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,318 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的条件。建议用户查阅
+2025-09-08 16:42:59,319 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:59,319 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,319 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的条件。建议用户查阅该
+2025-09-08 16:42:59,358 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,358 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,358 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节。建议您
+2025-09-08 16:42:59,359 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,360 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,360 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节。建议您查阅
+2025-09-08 16:42:59,385 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:59,385 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:59,386 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档,其中会详细规定不同地区、不同职级的补助标准
+2025-09-08 16:42:59,387 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,387 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,388 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,
+2025-09-08 16:42:59,389 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:59,389 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:59,389 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档,其中会详细规定不同地区、不同职级的补助标准。
+2025-09-08 16:42:59,391 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,391 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,391 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此
+2025-09-08 16:42:59,407 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助的发放流程,现有信息中并未明确提及具体的“发放流程”。
+2025-09-08 16:42:59,407 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 相关片段仅指出:
+2025-09-08 16:42:59,407 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **「公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。」**
+2025-09-08 16:42:59,407 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体发放标准、流程和方式应详细参考公司内部的《公司财务报销制度》文档。建议您查阅该制度或咨询财务部门以获取准确信息。
+2025-09-08 16:42:59,409 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:59,409 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,409 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的条件。建议用户查阅该财务
+2025-09-08 16:42:59,411 - INFO - API调用成功,答案长度: 0, chat_id: 
+2025-09-08 16:42:59,411 - INFO - 使用上下文数量: 1, 答案长度: 0
+2025-09-08 16:42:59,453 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,453 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,454 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节。建议您查阅该
+2025-09-08 16:42:59,455 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,455 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,455 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节。建议您查阅该制度
+2025-09-08 16:42:59,476 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,476 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,476 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议
+2025-09-08 16:42:59,480 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差补助金额的计算方法,在 **第四章 工作制度** 的 **4.4 出差** 部分中有明确说明:
+2025-09-08 16:42:59,480 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”**
+2025-09-08 16:42:59,480 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差补助的具体金额计算规则(包括伙食补贴等)应参考公司内部的 **《公司财务报销制度》** 文档,其中会详细规定不同地区、不同职级的补助标准。
+2025-09-08 16:42:59,481 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,481 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,481 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循
+2025-09-08 16:42:59,482 - INFO - API调用成功,答案长度: 0, chat_id: 
+2025-09-08 16:42:59,483 - INFO - 使用上下文数量: 1, 答案长度: 0
+2025-09-08 16:42:59,501 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:59,501 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,502 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的条件。建议用户查阅该财务制度
+2025-09-08 16:42:59,503 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:59,503 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,503 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的条件。建议用户查阅该财务制度文件
+2025-09-08 16:42:59,551 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,552 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,552 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节。建议您查阅该制度或
+2025-09-08 16:42:59,553 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,553 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,554 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节。建议您查阅该制度或咨询
+2025-09-08 16:42:59,576 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,577 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,577 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司
+2025-09-08 16:42:59,577 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,577 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,577 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部
+2025-09-08 16:42:59,597 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:59,598 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,598 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的条件。建议用户查阅该财务制度文件以
+2025-09-08 16:42:59,599 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:59,599 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,600 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的条件。建议用户查阅该财务制度文件以获取
+2025-09-08 16:42:59,626 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:42:59,634 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:42:59,647 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,647 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,647 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节。建议您查阅该制度或咨询财务
+2025-09-08 16:42:59,648 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,649 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,649 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节。建议您查阅该制度或咨询财务部门
+2025-09-08 16:42:59,664 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,664 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,664 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务
+2025-09-08 16:42:59,666 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,666 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,666 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销
+2025-09-08 16:42:59,690 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:59,691 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,691 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的条件。建议用户查阅该财务制度文件以获取准确
+2025-09-08 16:42:59,692 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:59,692 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,693 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的条件。建议用户查阅该财务制度文件以获取准确标准
+2025-09-08 16:42:59,749 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,749 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,749 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节。建议您查阅该制度或咨询财务部门获取
+2025-09-08 16:42:59,751 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,751 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,751 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节。建议您查阅该制度或咨询财务部门获取准确
+2025-09-08 16:42:59,759 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,759 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,759 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度
+2025-09-08 16:42:59,760 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,761 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,761 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体
+2025-09-08 16:42:59,781 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:59,782 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,782 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的条件。建议用户查阅该财务制度文件以获取准确标准。
+2025-09-08 16:42:59,784 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通工具的选择标准,在第四章工作制度第4.4节中明确指出:
+2025-09-08 16:42:59,784 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,784 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,出差人员是否可以选择乘坐出租车(以及具体适用情形)需直接参考《公司财务报销制度》的具体条款,当前手册片段中未直接说明乘坐出租车的条件。建议用户查阅该财务制度文件以获取准确标准。
+2025-09-08 16:42:59,786 - INFO - API调用成功,答案长度: 0, chat_id: 
+2025-09-08 16:42:59,786 - INFO - 使用上下文数量: 1, 答案长度: 0
+2025-09-08 16:42:59,846 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,846 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,846 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节。建议您查阅该制度或咨询财务部门获取准确信息
+2025-09-08 16:42:59,847 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,848 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,848 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节。建议您查阅该制度或咨询财务部门获取准确信息。
+2025-09-08 16:42:59,852 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,852 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,853 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款
+2025-09-08 16:42:59,854 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,854 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,854 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:42:59,948 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,948 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,948 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:42:59,950 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,关于出差交通费用报销的限制,在第四章工作制度的第4.4节中有相关说明:
+2025-09-08 16:42:59,950 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: **出差申请须依照一定的操作程序。公司对员工出差时所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容,请参照《公司财务报销制度》的有关规定。**
+2025-09-08 16:42:59,950 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 因此,具体交通费用报销的限制(如交通工具选择标准、报销额度等)需参考公司内部《公司财务报销制度》的具体规定,手册中未直接列出细节。建议您查阅该制度或咨询财务部门获取准确信息。
+2025-09-08 16:42:59,952 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:42:59,952 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:42:59,952 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:42:59,952 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案
+2025-09-08 16:42:59,954 - INFO - API调用成功,答案长度: 0, chat_id: 
+2025-09-08 16:42:59,954 - INFO - 使用上下文数量: 1, 答案长度: 0
+2025-09-08 16:43:00,070 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,070 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,070 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,070 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:
+2025-09-08 16:43:00,070 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,070 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,070 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,071 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司
+2025-09-08 16:43:00,136 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,137 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,137 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,137 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需
+2025-09-08 16:43:00,138 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,138 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,139 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,139 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需额外
+2025-09-08 16:43:00,228 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,229 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,229 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,229 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需额外支付
+2025-09-08 16:43:00,230 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,231 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,231 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,231 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需额外支付,
+2025-09-08 16:43:00,342 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,342 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,343 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,343 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需额外支付,具体
+2025-09-08 16:43:00,413 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,413 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,413 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,413 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需额外支付,具体以
+2025-09-08 16:43:00,414 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,415 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,415 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,415 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需额外支付,具体以《
+2025-09-08 16:43:00,506 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,506 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,506 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,506 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需额外支付,具体以《公司
+2025-09-08 16:43:00,507 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,508 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,508 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,508 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需额外支付,具体以《公司财务
+2025-09-08 16:43:00,607 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,608 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,608 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,608 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需额外支付,具体以《公司财务报销
+2025-09-08 16:43:00,609 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,609 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,610 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,610 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需额外支付,具体以《公司财务报销制度
+2025-09-08 16:43:00,691 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,691 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,691 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,692 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需额外支付,具体以《公司财务报销制度》
+2025-09-08 16:43:00,693 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,693 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,693 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,693 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需额外支付,具体以《公司财务报销制度》规定
+2025-09-08 16:43:00,784 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,784 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,784 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,785 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需额外支付,具体以《公司财务报销制度》规定为准
+2025-09-08 16:43:00,786 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,786 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,786 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,786 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需额外支付,具体以《公司财务报销制度》规定为准。
+2025-09-08 16:43:00,878 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 根据您提供的知识片段,特别是第四章工作制度中的4.4出差部分,其中明确指出:“公司对员工出差时的所选择的交通工具、住宿标准、伙食补贴以及出差期间的宴请和礼品等规格的详细内容请参照《公司财务报销制度》的有关规定。”
+2025-09-08 16:43:00,879 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 这意味着出差费用的承担方式(包括由客户承担的情况)应具体参照《公司财务报销制度》。如果客户已承担了相关出差费用,公司通常无需额外支付,但最终需以财务制度的具体规定为准。
+2025-09-08 16:43:00,879 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 知识片段中未提及客户承担费用时的额外支付义务,因此建议遵循公司内部财务报销制度的具体条款。
+2025-09-08 16:43:00,879 - WARNING - JSON解析失败: Expecting value: line 1 column 1 (char 0), 数据: 答案:公司无需额外支付,具体以《公司财务报销制度》规定为准。
+2025-09-08 16:43:00,880 - INFO - API调用成功,答案长度: 0, chat_id: 
+2025-09-08 16:43:00,880 - INFO - 使用上下文数量: 1, 答案长度: 0
+2025-09-08 16:43:01,103 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:43:04,795 - INFO - Retrying request to /chat/completions in 0.405082 seconds
+2025-09-08 16:43:04,962 - INFO - Retrying request to /chat/completions in 0.391699 seconds
+2025-09-08 16:43:05,285 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:43:05,411 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:43:08,557 - INFO - 评估完成
+2025-09-08 16:43:08,560 - INFO - 评估结果已保存到: rag_evaluation_results_20250908_164308.json
+2025-09-08 16:44:40,382 - INFO - 开始RAG系统评估
+2025-09-08 16:44:40,382 - INFO - 成功加载 10 条验证数据
+2025-09-08 16:44:40,382 - INFO - 评估问题: 公司对于短期出差的住宿标准是如何规定的?...
+2025-09-08 16:44:40,383 - INFO - 评估问题: 出差的交通费用报销有什么限制?...
+2025-09-08 16:44:40,383 - INFO - 评估问题: 如何计算出差补助金额?...
+2025-09-08 16:44:40,383 - INFO - 评估问题: 《出差管理制度》何时开始实施?...
+2025-09-08 16:44:40,383 - INFO - 评估问题: 如果出差地点是日本,T11职级的员工每天能获得多少出差补助?...
+2025-09-08 16:44:40,383 - INFO - 评估问题: 如果客户承担了出差费用,公司还需要额外支付吗?...
+2025-09-08 16:44:40,384 - INFO - 评估问题: 《出差管理制度》中规定的“其他城市”是指哪些地方?...
+2025-09-08 16:44:40,384 - INFO - 评估问题: 出差补助的发放流程是怎样的?...
+2025-09-08 16:44:40,384 - INFO - 评估问题: 出差人员在什么情况下可以选择乘坐出租车?...
+2025-09-08 16:44:40,384 - INFO - 评估问题: 日本以外的其他亚洲国家出差补助是多少?...
+2025-09-08 16:44:51,524 - INFO - API调用成功,答案长度: 1560, chat_id: 
+2025-09-08 16:44:51,525 - INFO - 使用上下文数量: 1, 答案长度: 1560
+2025-09-08 16:44:52,024 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:52,850 - INFO - API调用成功,答案长度: 10624, chat_id: 
+2025-09-08 16:44:52,850 - INFO - 使用上下文数量: 1, 答案长度: 10624
+2025-09-08 16:44:53,135 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:53,319 - INFO - API调用成功,答案长度: 11715, chat_id: 
+2025-09-08 16:44:53,320 - INFO - 使用上下文数量: 1, 答案长度: 11715
+2025-09-08 16:44:53,609 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:53,843 - INFO - API调用成功,答案长度: 7090, chat_id: 
+2025-09-08 16:44:53,843 - INFO - 使用上下文数量: 1, 答案长度: 7090
+2025-09-08 16:44:53,850 - INFO - API调用成功,答案长度: 7240, chat_id: 
+2025-09-08 16:44:53,851 - INFO - 使用上下文数量: 1, 答案长度: 7240
+2025-09-08 16:44:53,930 - INFO - API调用成功,答案长度: 7522, chat_id: 
+2025-09-08 16:44:53,930 - INFO - 使用上下文数量: 1, 答案长度: 7522
+2025-09-08 16:44:54,127 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:54,130 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:54,147 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:54,444 - INFO - API调用成功,答案长度: 9331, chat_id: 
+2025-09-08 16:44:54,445 - INFO - 使用上下文数量: 1, 答案长度: 9331
+2025-09-08 16:44:54,606 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 16:44:54,735 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:55,002 - INFO - API调用成功,答案长度: 11583, chat_id: 
+2025-09-08 16:44:55,002 - INFO - 使用上下文数量: 1, 答案长度: 11583
+2025-09-08 16:44:55,254 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:55,313 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:55,330 - INFO - API调用成功,答案长度: 12639, chat_id: 
+2025-09-08 16:44:55,330 - INFO - 使用上下文数量: 1, 答案长度: 12639
+2025-09-08 16:44:55,608 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 16:44:55,647 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:57,945 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:57,963 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:57,985 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:58,136 - INFO - API调用成功,答案长度: 23228, chat_id: 
+2025-09-08 16:44:58,137 - INFO - 使用上下文数量: 1, 答案长度: 23228
+2025-09-08 16:44:58,202 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:58,372 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:58,475 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:58,980 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:59,405 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:44:59,542 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:00,706 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:01,290 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:01,341 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:01,449 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:01,491 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:02,888 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:03,021 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:03,327 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:04,499 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:04,505 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:04,553 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:04,580 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:04,829 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:05,870 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:06,074 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:06,212 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:07,847 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:07,943 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:08,478 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:09,834 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:11,761 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:45:16,399 - INFO - 评估完成
+2025-09-08 16:45:16,405 - INFO - 评估结果已保存到: rag_evaluation_results_20250908_164516.json
+2025-09-08 16:51:23,477 - INFO - 开始RAG系统评估
+2025-09-08 16:51:23,477 - INFO - 成功加载 10 条验证数据
+2025-09-08 16:51:23,478 - INFO - 评估问题: 公司对于短期出差的住宿标准是如何规定的?...
+2025-09-08 16:51:23,478 - INFO - 评估问题: 出差的交通费用报销有什么限制?...
+2025-09-08 16:51:23,478 - INFO - 评估问题: 如何计算出差补助金额?...
+2025-09-08 16:51:23,479 - INFO - 评估问题: 《出差管理制度》何时开始实施?...
+2025-09-08 16:51:23,479 - INFO - 评估问题: 如果出差地点是日本,T11职级的员工每天能获得多少出差补助?...
+2025-09-08 16:51:23,479 - INFO - 评估问题: 如果客户承担了出差费用,公司还需要额外支付吗?...
+2025-09-08 16:51:23,479 - INFO - 评估问题: 《出差管理制度》中规定的“其他城市”是指哪些地方?...
+2025-09-08 16:51:23,480 - INFO - 评估问题: 出差补助的发放流程是怎样的?...
+2025-09-08 16:51:23,480 - INFO - 评估问题: 出差人员在什么情况下可以选择乘坐出租车?...
+2025-09-08 16:51:23,480 - INFO - 评估问题: 日本以外的其他亚洲国家出差补助是多少?...
+2025-09-08 16:51:32,627 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 16:51:33,318 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 16:51:35,840 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 16:51:35,904 - INFO - API调用成功,答案长度: 47, chat_id: 
+2025-09-08 16:51:35,905 - INFO - 使用上下文数量: 1, 答案长度: 47
+2025-09-08 16:51:36,167 - INFO - API调用成功,答案长度: 59, chat_id: 
+2025-09-08 16:51:36,168 - INFO - 使用上下文数量: 1, 答案长度: 59
+2025-09-08 16:51:36,171 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 16:51:36,172 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 16:51:36,173 - INFO - API调用成功,答案长度: 54, chat_id: 
+2025-09-08 16:51:36,173 - INFO - 使用上下文数量: 1, 答案长度: 54
+2025-09-08 16:51:36,176 - INFO - API调用成功,答案长度: 135, chat_id: 
+2025-09-08 16:51:36,176 - INFO - 使用上下文数量: 1, 答案长度: 135
+2025-09-08 16:51:36,177 - INFO - API调用成功,答案长度: 39, chat_id: 
+2025-09-08 16:51:36,177 - INFO - 使用上下文数量: 1, 答案长度: 39
+2025-09-08 16:51:36,179 - INFO - API调用成功,答案长度: 42, chat_id: 
+2025-09-08 16:51:36,179 - INFO - 使用上下文数量: 1, 答案长度: 42
+2025-09-08 16:51:36,352 - INFO - API调用成功,答案长度: 34, chat_id: 
+2025-09-08 16:51:36,352 - INFO - 使用上下文数量: 1, 答案长度: 34
+2025-09-08 16:51:36,472 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:36,505 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:36,570 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:36,657 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:36,692 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:36,706 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:36,844 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:37,281 - INFO - API调用成功,答案长度: 79, chat_id: 
+2025-09-08 16:51:37,282 - INFO - 使用上下文数量: 1, 答案长度: 79
+2025-09-08 16:51:37,348 - INFO - API调用成功,答案长度: 28, chat_id: 
+2025-09-08 16:51:37,349 - INFO - 使用上下文数量: 1, 答案长度: 28
+2025-09-08 16:51:37,518 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:37,600 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:38,867 - INFO - API调用成功,答案长度: 36, chat_id: 
+2025-09-08 16:51:38,868 - INFO - 使用上下文数量: 1, 答案长度: 36
+2025-09-08 16:51:39,152 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:39,458 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:39,462 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:39,465 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:39,610 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:39,618 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:39,707 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:39,859 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:41,378 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:41,513 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:42,986 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:43,073 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:43,088 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:43,108 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:43,111 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:43,114 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:43,212 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:44,071 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:44,618 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:44,657 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:46,260 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:46,263 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:46,270 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:46,272 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:46,291 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:46,303 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:46,353 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:48,062 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:48,087 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:48,139 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:49,821 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 16:51:52,757 - INFO - 评估完成
+2025-09-08 16:51:52,760 - INFO - 评估结果已保存到: rag_evaluation_results_20250908_165152.json
+2025-09-08 17:00:17,146 - INFO - 开始RAG系统评估
+2025-09-08 17:00:17,147 - INFO - 成功加载 10 条验证数据
+2025-09-08 17:00:17,147 - INFO - 评估问题: 公司对于短期出差的住宿标准是如何规定的?...
+2025-09-08 17:00:17,147 - INFO - 评估问题: 出差的交通费用报销有什么限制?...
+2025-09-08 17:00:17,148 - INFO - 评估问题: 如何计算出差补助金额?...
+2025-09-08 17:00:17,148 - INFO - 评估问题: 《出差管理制度》何时开始实施?...
+2025-09-08 17:00:17,148 - INFO - 评估问题: 如果出差地点是日本,T11职级的员工每天能获得多少出差补助?...
+2025-09-08 17:00:17,148 - INFO - 评估问题: 如果客户承担了出差费用,公司还需要额外支付吗?...
+2025-09-08 17:00:17,149 - INFO - 评估问题: 《出差管理制度》中规定的“其他城市”是指哪些地方?...
+2025-09-08 17:00:17,149 - INFO - 评估问题: 出差补助的发放流程是怎样的?...
+2025-09-08 17:00:17,149 - INFO - 评估问题: 出差人员在什么情况下可以选择乘坐出租车?...
+2025-09-08 17:00:17,149 - INFO - 评估问题: 日本以外的其他亚洲国家出差补助是多少?...
+2025-09-08 17:00:27,855 - INFO - API调用成功,答案长度: 76, chat_id: , 上下文数量: 0
+2025-09-08 17:00:27,855 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:00:27,856 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 76
+2025-09-08 17:00:28,344 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:28,565 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:00:29,117 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:00:29,666 - INFO - API调用成功,答案长度: 38, chat_id: , 上下文数量: 0
+2025-09-08 17:00:29,667 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:00:29,667 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 38
+2025-09-08 17:00:29,866 - INFO - API调用成功,答案长度: 41, chat_id: , 上下文数量: 0
+2025-09-08 17:00:29,867 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:00:29,867 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 41
+2025-09-08 17:00:29,883 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:29,934 - INFO - API调用成功,答案长度: 40, chat_id: , 上下文数量: 0
+2025-09-08 17:00:29,934 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:00:29,934 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 40
+2025-09-08 17:00:30,099 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:30,142 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:30,845 - INFO - API调用成功,答案长度: 86, chat_id: , 上下文数量: 0
+2025-09-08 17:00:30,846 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:00:30,846 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 86
+2025-09-08 17:00:31,055 - INFO - API调用成功,答案长度: 87, chat_id: , 上下文数量: 0
+2025-09-08 17:00:31,055 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:00:31,056 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 87
+2025-09-08 17:00:31,071 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:31,259 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:31,344 - INFO - API调用成功,答案长度: 59, chat_id: , 上下文数量: 0
+2025-09-08 17:00:31,344 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:00:31,345 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 59
+2025-09-08 17:00:31,567 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:31,685 - INFO - API调用成功,答案长度: 57, chat_id: , 上下文数量: 0
+2025-09-08 17:00:31,685 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:00:31,685 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 57
+2025-09-08 17:00:31,907 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:32,297 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:32,576 - INFO - API调用成功,答案长度: 49, chat_id: , 上下文数量: 0
+2025-09-08 17:00:32,577 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:00:32,577 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 49
+2025-09-08 17:00:32,666 - INFO - API调用成功,答案长度: 75, chat_id: , 上下文数量: 0
+2025-09-08 17:00:32,666 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:00:32,666 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 75
+2025-09-08 17:00:32,788 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:32,885 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:33,430 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:33,452 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:33,462 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:34,031 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:35,751 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:35,763 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:35,787 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:35,805 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:36,021 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:36,214 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:36,744 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:36,747 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:36,752 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:36,892 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:38,592 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:38,682 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:38,703 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:38,878 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:40,009 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:40,255 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:40,263 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:40,317 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:40,321 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:40,324 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:42,307 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:42,325 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:42,376 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:43,695 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:43,791 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:00:47,355 - INFO - 评估完成
+2025-09-08 17:00:47,358 - INFO - 评估结果已保存到: rag_evaluation_results_20250908_170047.json
+2025-09-08 17:05:34,393 - INFO - 开始RAG系统评估
+2025-09-08 17:05:34,394 - INFO - 成功加载 10 条验证数据
+2025-09-08 17:05:34,394 - INFO - 评估问题: 公司对于短期出差的住宿标准是如何规定的?...
+2025-09-08 17:05:34,394 - INFO - 评估问题: 出差的交通费用报销有什么限制?...
+2025-09-08 17:05:34,395 - INFO - 评估问题: 如何计算出差补助金额?...
+2025-09-08 17:05:34,395 - INFO - 评估问题: 《出差管理制度》何时开始实施?...
+2025-09-08 17:05:34,395 - INFO - 评估问题: 如果出差地点是日本,T11职级的员工每天能获得多少出差补助?...
+2025-09-08 17:05:34,395 - INFO - 评估问题: 如果客户承担了出差费用,公司还需要额外支付吗?...
+2025-09-08 17:05:34,396 - INFO - 评估问题: 《出差管理制度》中规定的“其他城市”是指哪些地方?...
+2025-09-08 17:05:34,396 - INFO - 评估问题: 出差补助的发放流程是怎样的?...
+2025-09-08 17:05:34,396 - INFO - 评估问题: 出差人员在什么情况下可以选择乘坐出租车?...
+2025-09-08 17:05:34,396 - INFO - 评估问题: 日本以外的其他亚洲国家出差补助是多少?...
+2025-09-08 17:05:40,214 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:40,657 - INFO - API调用成功,答案长度: 44, chat_id: , 上下文数量: 0
+2025-09-08 17:05:40,657 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:05:40,657 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 44
+2025-09-08 17:05:40,910 - WARNING - 处理流式数据失败: 'str' object has no attribute 'get'
+2025-09-08 17:05:41,143 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:41,747 - INFO - API调用成功,答案长度: 84, chat_id: , 上下文数量: 0
+2025-09-08 17:05:41,748 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:05:41,748 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 84
+2025-09-08 17:05:41,783 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:41,783 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:41,900 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:41,984 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:42,249 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:42,305 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:42,443 - INFO - API调用成功,答案长度: 99, chat_id: , 上下文数量: 0
+2025-09-08 17:05:42,443 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:05:42,443 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 99
+2025-09-08 17:05:42,476 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:42,663 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:42,681 - INFO - API调用成功,答案长度: 45, chat_id: , 上下文数量: 0
+2025-09-08 17:05:42,681 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:05:42,682 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 45
+2025-09-08 17:05:42,816 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:42,892 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:42,995 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:43,089 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:43,727 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:43,839 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:44,347 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:44,609 - INFO - API调用成功,答案长度: 35, chat_id: , 上下文数量: 0
+2025-09-08 17:05:44,609 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:05:44,610 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 35
+2025-09-08 17:05:44,668 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:44,841 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:44,846 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:45,146 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:45,617 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:46,028 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:46,366 - INFO - API调用成功,答案长度: 48, chat_id: , 上下文数量: 0
+2025-09-08 17:05:46,366 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:05:46,366 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 48
+2025-09-08 17:05:46,564 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:46,607 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:46,630 - INFO - API调用成功,答案长度: 26, chat_id: , 上下文数量: 0
+2025-09-08 17:05:46,630 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:05:46,630 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 26
+2025-09-08 17:05:46,820 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:46,858 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:47,340 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:47,503 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:47,789 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:47,945 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:48,224 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:48,968 - INFO - API调用成功,答案长度: 1, chat_id: , 上下文数量: 0
+2025-09-08 17:05:48,969 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:05:48,969 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 1
+2025-09-08 17:05:49,108 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:49,182 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:49,216 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:49,576 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:49,743 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:49,751 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:49,883 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:51,067 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:51,170 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:51,481 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:51,513 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:51,532 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:52,290 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:52,323 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:52,851 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:53,006 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:53,013 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:53,201 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:53,689 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:54,353 - WARNING - 处理流式数据失败: 'int' object has no attribute 'get'
+2025-09-08 17:05:54,478 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:55,842 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:56,367 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:56,503 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:56,691 - INFO - API调用成功,答案长度: 32, chat_id: , 上下文数量: 0
+2025-09-08 17:05:56,691 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:05:56,691 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 32
+2025-09-08 17:05:56,753 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:57,146 - INFO - API调用成功,答案长度: 21, chat_id: , 上下文数量: 0
+2025-09-08 17:05:57,146 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:05:57,147 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 21
+2025-09-08 17:05:57,210 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:59,118 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:05:59,347 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:06:01,342 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:06:03,120 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:06:04,319 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:06:06,089 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:06:07,906 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:06:11,116 - INFO - 评估完成
+2025-09-08 17:06:11,119 - INFO - 评估结果已保存到: rag_evaluation_results_20250908_170611.json
+2025-09-08 17:08:25,783 - INFO - 开始RAG系统评估
+2025-09-08 17:08:25,784 - INFO - 成功加载 10 条验证数据
+2025-09-08 17:08:25,784 - INFO - 评估问题: 公司对于短期出差的住宿标准是如何规定的?...
+2025-09-08 17:08:25,784 - INFO - 评估问题: 出差的交通费用报销有什么限制?...
+2025-09-08 17:08:25,785 - INFO - 评估问题: 如何计算出差补助金额?...
+2025-09-08 17:08:25,785 - INFO - 评估问题: 《出差管理制度》何时开始实施?...
+2025-09-08 17:08:25,785 - INFO - 评估问题: 如果出差地点是日本,T11职级的员工每天能获得多少出差补助?...
+2025-09-08 17:08:25,785 - INFO - 评估问题: 如果客户承担了出差费用,公司还需要额外支付吗?...
+2025-09-08 17:08:25,785 - INFO - 评估问题: 《出差管理制度》中规定的“其他城市”是指哪些地方?...
+2025-09-08 17:08:25,786 - INFO - 评估问题: 出差补助的发放流程是怎样的?...
+2025-09-08 17:08:25,786 - INFO - 评估问题: 出差人员在什么情况下可以选择乘坐出租车?...
+2025-09-08 17:08:25,786 - INFO - 评估问题: 日本以外的其他亚洲国家出差补助是多少?...
+2025-09-08 17:08:32,247 - INFO - API调用成功,答案长度: 44, chat_id: , 上下文数量: 0
+2025-09-08 17:08:32,248 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:08:32,248 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 44
+2025-09-08 17:08:35,530 - INFO - API调用成功,答案长度: 48, chat_id: , 上下文数量: 0
+2025-09-08 17:08:35,531 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:08:35,531 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 48
+2025-09-08 17:08:35,648 - INFO - API调用成功,答案长度: 101, chat_id: , 上下文数量: 0
+2025-09-08 17:08:35,648 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:08:35,648 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 101
+2025-09-08 17:08:37,520 - INFO - Retrying request to /chat/completions in 0.404389 seconds
+2025-09-08 17:08:37,629 - INFO - API调用成功,答案长度: 34, chat_id: , 上下文数量: 0
+2025-09-08 17:08:37,630 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:08:37,630 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 34
+2025-09-08 17:08:38,729 - INFO - API调用成功,答案长度: 30, chat_id: , 上下文数量: 0
+2025-09-08 17:08:38,729 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:08:38,730 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 30
+2025-09-08 17:08:39,141 - INFO - API调用成功,答案长度: 29, chat_id: , 上下文数量: 0
+2025-09-08 17:08:39,142 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:08:39,142 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 29
+2025-09-08 17:08:39,708 - INFO - API调用成功,答案长度: 22, chat_id: , 上下文数量: 0
+2025-09-08 17:08:39,708 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:08:39,709 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 22
+2025-09-08 17:08:40,540 - INFO - Retrying request to /chat/completions in 0.375427 seconds
+2025-09-08 17:08:40,654 - INFO - Retrying request to /chat/completions in 0.457921 seconds
+2025-09-08 17:08:42,638 - INFO - Retrying request to /chat/completions in 0.496566 seconds
+2025-09-08 17:08:42,771 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:42,774 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:42,777 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:42,780 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:42,784 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:42,785 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:43,365 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:44,383 - INFO - API调用成功,答案长度: 49, chat_id: , 上下文数量: 0
+2025-09-08 17:08:44,383 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:08:44,383 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 49
+2025-09-08 17:08:46,105 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:46,205 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:46,209 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:46,213 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:46,260 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:46,288 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:46,295 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:49,397 - INFO - Retrying request to /chat/completions in 0.386179 seconds
+2025-09-08 17:08:49,546 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:49,550 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:49,575 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:49,580 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:49,583 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:49,589 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:49,840 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:50,049 - INFO - API调用成功,答案长度: 31, chat_id: , 上下文数量: 0
+2025-09-08 17:08:50,049 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:08:50,050 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 31
+2025-09-08 17:08:52,779 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:52,783 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:52,787 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:52,831 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:52,887 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:52,962 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:53,098 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:54,793 - INFO - Retrying request to /chat/completions in 0.764513 seconds
+2025-09-08 17:08:55,089 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:55,778 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:58,273 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:08:58,975 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:09:01,331 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:09:02,678 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:09:04,519 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:09:05,636 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:09:10,865 - INFO - API调用成功,答案长度: 1, chat_id: , 上下文数量: 0
+2025-09-08 17:09:10,866 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:09:10,866 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 1
+2025-09-08 17:09:10,939 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:09:13,910 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:09:17,099 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:09:20,351 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:09:23,506 - INFO - 评估完成
+2025-09-08 17:09:23,509 - INFO - 评估结果已保存到: rag_evaluation_results_20250908_170923.json
+2025-09-08 17:15:15,097 - INFO - 开始RAG系统评估
+2025-09-08 17:15:15,097 - INFO - 成功加载 10 条验证数据
+2025-09-08 17:15:15,097 - INFO - 评估问题: 公司对于短期出差的住宿标准是如何规定的?...
+2025-09-08 17:15:15,098 - INFO - 评估问题: 出差的交通费用报销有什么限制?...
+2025-09-08 17:15:15,098 - INFO - 评估问题: 如何计算出差补助金额?...
+2025-09-08 17:15:15,098 - INFO - 评估问题: 《出差管理制度》何时开始实施?...
+2025-09-08 17:15:15,098 - INFO - 评估问题: 如果出差地点是日本,T11职级的员工每天能获得多少出差补助?...
+2025-09-08 17:15:15,098 - INFO - 评估问题: 如果客户承担了出差费用,公司还需要额外支付吗?...
+2025-09-08 17:15:15,099 - INFO - 评估问题: 《出差管理制度》中规定的“其他城市”是指哪些地方?...
+2025-09-08 17:15:15,099 - INFO - 评估问题: 出差补助的发放流程是怎样的?...
+2025-09-08 17:15:15,099 - INFO - 评估问题: 出差人员在什么情况下可以选择乘坐出租车?...
+2025-09-08 17:15:15,099 - INFO - 评估问题: 日本以外的其他亚洲国家出差补助是多少?...
+2025-09-08 17:15:21,696 - INFO - API调用成功,答案长度: 44, chat_id: , 上下文数量: 0
+2025-09-08 17:15:21,696 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:15:21,697 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 44
+2025-09-08 17:15:23,141 - INFO - API调用成功,答案长度: 108, chat_id: , 上下文数量: 0
+2025-09-08 17:15:23,141 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:15:23,141 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 108
+2025-09-08 17:15:25,863 - INFO - API调用成功,答案长度: 40, chat_id: , 上下文数量: 0
+2025-09-08 17:15:25,863 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:15:25,864 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 40
+2025-09-08 17:15:26,933 - INFO - API调用成功,答案长度: 35, chat_id: , 上下文数量: 0
+2025-09-08 17:15:26,933 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:15:26,933 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 35
+2025-09-08 17:15:26,968 - INFO - Retrying request to /chat/completions in 0.432620 seconds
+2025-09-08 17:15:28,149 - INFO - Retrying request to /chat/completions in 0.492446 seconds
+2025-09-08 17:15:30,873 - INFO - Retrying request to /chat/completions in 0.481062 seconds
+2025-09-08 17:15:32,011 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:32,015 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:32,017 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:32,020 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:32,522 - INFO - API调用成功,答案长度: 0, chat_id: , 上下文数量: 0
+2025-09-08 17:15:32,522 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:15:32,522 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 0
+2025-09-08 17:15:32,564 - INFO - API调用成功,答案长度: 0, chat_id: , 上下文数量: 0
+2025-09-08 17:15:32,564 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:15:32,565 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 0
+2025-09-08 17:15:32,637 - INFO - API调用成功,答案长度: 0, chat_id: , 上下文数量: 0
+2025-09-08 17:15:32,637 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:15:32,637 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 0
+2025-09-08 17:15:32,648 - INFO - API调用成功,答案长度: 0, chat_id: , 上下文数量: 0
+2025-09-08 17:15:32,649 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:15:32,649 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 0
+2025-09-08 17:15:32,661 - INFO - API调用成功,答案长度: 0, chat_id: , 上下文数量: 0
+2025-09-08 17:15:32,661 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:15:32,661 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 0
+2025-09-08 17:15:32,824 - INFO - API调用成功,答案长度: 0, chat_id: , 上下文数量: 0
+2025-09-08 17:15:32,824 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:15:32,824 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 0
+2025-09-08 17:15:35,143 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:35,153 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:35,257 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:35,357 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:37,530 - INFO - Retrying request to /chat/completions in 0.483210 seconds
+2025-09-08 17:15:37,572 - INFO - Retrying request to /chat/completions in 0.384754 seconds
+2025-09-08 17:15:37,645 - INFO - Retrying request to /chat/completions in 0.435191 seconds
+2025-09-08 17:15:37,656 - INFO - Retrying request to /chat/completions in 0.402117 seconds
+2025-09-08 17:15:37,669 - INFO - Retrying request to /chat/completions in 0.420504 seconds
+2025-09-08 17:15:37,831 - INFO - Retrying request to /chat/completions in 0.494090 seconds
+2025-09-08 17:15:38,388 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:38,390 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:38,393 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:38,418 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:41,421 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:41,437 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:41,500 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:42,674 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:42,684 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:42,687 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:42,689 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:42,692 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:42,717 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:46,129 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:15:49,412 - INFO - 评估完成
+2025-09-08 17:15:49,415 - INFO - 评估结果已保存到: rag_evaluation_results_20250908_171549.json
+2025-09-08 17:30:34,029 - INFO - 开始RAG系统评估
+2025-09-08 17:30:34,030 - INFO - 成功加载 10 条验证数据
+2025-09-08 17:30:34,030 - INFO - 评估问题: 公司对于短期出差的住宿标准是如何规定的?...
+2025-09-08 17:30:34,030 - INFO - 评估问题: 出差的交通费用报销有什么限制?...
+2025-09-08 17:30:34,031 - INFO - 评估问题: 如何计算出差补助金额?...
+2025-09-08 17:30:34,031 - INFO - 评估问题: 《出差管理制度》何时开始实施?...
+2025-09-08 17:30:34,031 - INFO - 评估问题: 如果出差地点是日本,T11职级的员工每天能获得多少出差补助?...
+2025-09-08 17:30:34,031 - INFO - 评估问题: 如果客户承担了出差费用,公司还需要额外支付吗?...
+2025-09-08 17:30:34,032 - INFO - 评估问题: 《出差管理制度》中规定的“其他城市”是指哪些地方?...
+2025-09-08 17:30:34,032 - INFO - 评估问题: 出差补助的发放流程是怎样的?...
+2025-09-08 17:30:34,032 - INFO - 评估问题: 出差人员在什么情况下可以选择乘坐出租车?...
+2025-09-08 17:30:34,032 - INFO - 评估问题: 日本以外的其他亚洲国家出差补助是多少?...
+2025-09-08 17:30:34,348 - ERROR - API调用失败: Server disconnected
+2025-09-08 17:30:34,348 - ERROR - API调用失败: Server disconnected
+2025-09-08 17:30:34,349 - ERROR - API调用失败: Server disconnected
+2025-09-08 17:30:34,350 - ERROR - API调用失败: Server disconnected
+2025-09-08 17:30:34,350 - ERROR - API调用失败: Server disconnected
+2025-09-08 17:30:34,351 - ERROR - API调用失败: Server disconnected
+2025-09-08 17:30:34,351 - ERROR - API调用失败: Server disconnected
+2025-09-08 17:30:34,351 - ERROR - API调用失败: Server disconnected
+2025-09-08 17:30:34,352 - ERROR - API调用失败: Server disconnected
+2025-09-08 17:30:34,352 - ERROR - API调用失败: Server disconnected
+2025-09-08 17:30:34,353 - INFO - 评估完成
+2025-09-08 17:30:34,354 - INFO - 评估结果已保存到: rag_evaluation_results_20250908_173034.json
+2025-09-08 17:31:44,326 - INFO - 开始RAG系统评估
+2025-09-08 17:31:44,326 - INFO - 成功加载 10 条验证数据
+2025-09-08 17:31:44,327 - INFO - 评估问题: 公司对于短期出差的住宿标准是如何规定的?...
+2025-09-08 17:31:44,327 - INFO - 评估问题: 出差的交通费用报销有什么限制?...
+2025-09-08 17:31:44,327 - INFO - 评估问题: 如何计算出差补助金额?...
+2025-09-08 17:31:44,328 - INFO - 评估问题: 《出差管理制度》何时开始实施?...
+2025-09-08 17:31:44,328 - INFO - 评估问题: 如果出差地点是日本,T11职级的员工每天能获得多少出差补助?...
+2025-09-08 17:31:44,328 - INFO - 评估问题: 如果客户承担了出差费用,公司还需要额外支付吗?...
+2025-09-08 17:31:44,328 - INFO - 评估问题: 《出差管理制度》中规定的“其他城市”是指哪些地方?...
+2025-09-08 17:31:44,329 - INFO - 评估问题: 出差补助的发放流程是怎样的?...
+2025-09-08 17:31:44,329 - INFO - 评估问题: 出差人员在什么情况下可以选择乘坐出租车?...
+2025-09-08 17:31:44,329 - INFO - 评估问题: 日本以外的其他亚洲国家出差补助是多少?...
+2025-09-08 17:31:53,939 - INFO - API调用成功,答案长度: 10, chat_id: , 上下文数量: 0
+2025-09-08 17:31:53,939 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:31:53,940 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 10
+2025-09-08 17:31:54,387 - INFO - API调用成功,答案长度: 39, chat_id: , 上下文数量: 0
+2025-09-08 17:31:54,387 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:31:54,388 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 39
+2025-09-08 17:31:54,459 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:54,534 - INFO - API调用成功,答案长度: 41, chat_id: , 上下文数量: 0
+2025-09-08 17:31:54,534 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:31:54,534 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 41
+2025-09-08 17:31:54,542 - INFO - API调用成功,答案长度: 50, chat_id: , 上下文数量: 0
+2025-09-08 17:31:54,543 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:31:54,543 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 50
+2025-09-08 17:31:54,618 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:54,699 - INFO - API调用成功,答案长度: 47, chat_id: , 上下文数量: 0
+2025-09-08 17:31:54,699 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:31:54,700 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 47
+2025-09-08 17:31:54,722 - INFO - API调用成功,答案长度: 49, chat_id: , 上下文数量: 0
+2025-09-08 17:31:54,722 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:31:54,722 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 49
+2025-09-08 17:31:54,728 - INFO - API调用成功,答案长度: 49, chat_id: , 上下文数量: 0
+2025-09-08 17:31:54,728 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:31:54,728 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 49
+2025-09-08 17:31:54,779 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:54,785 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:54,787 - INFO - API调用成功,答案长度: 61, chat_id: , 上下文数量: 0
+2025-09-08 17:31:54,787 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:31:54,787 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 61
+2025-09-08 17:31:54,973 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:54,979 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:54,982 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:54,984 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:55,294 - INFO - API调用成功,答案长度: 81, chat_id: , 上下文数量: 0
+2025-09-08 17:31:55,294 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:31:55,295 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 81
+2025-09-08 17:31:55,460 - INFO - API调用成功,答案长度: 72, chat_id: , 上下文数量: 0
+2025-09-08 17:31:55,460 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:31:55,460 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 72
+2025-09-08 17:31:55,511 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:55,733 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:57,578 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:57,623 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:58,426 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:58,440 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:58,452 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:58,463 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:58,536 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:58,578 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:58,622 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:31:58,853 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:00,751 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:00,827 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:01,355 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:01,405 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:01,455 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:01,513 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:01,517 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:01,579 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:01,614 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:01,908 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:03,991 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:04,519 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:04,531 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:04,542 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:04,558 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:04,573 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:04,676 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:04,709 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:04,725 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:04,770 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:32:08,035 - INFO - 评估完成
+2025-09-08 17:32:08,037 - INFO - 评估结果已保存到: rag_evaluation_results_20250908_173208.json
+2025-09-08 17:38:13,538 - INFO - 开始RAG系统评估
+2025-09-08 17:38:13,538 - INFO - 成功加载 10 条验证数据
+2025-09-08 17:38:13,539 - INFO - 评估问题: 试用期介绍...
+2025-09-08 17:38:13,539 - INFO - 评估问题: 公司的工作制度...
+2025-09-08 17:38:13,539 - INFO - 评估问题: 公司的休假制度...
+2025-09-08 17:38:13,540 - INFO - 评估问题: 《出差管理制度》何时开始实施?...
+2025-09-08 17:38:13,540 - INFO - 评估问题: 如果出差地点是日本,T11职级的员工每天能获得多少出差补助?...
+2025-09-08 17:38:13,540 - INFO - 评估问题: 如果客户承担了出差费用,公司还需要额外支付吗?...
+2025-09-08 17:38:13,540 - INFO - 评估问题: 《出差管理制度》中规定的“其他城市”是指哪些地方?...
+2025-09-08 17:38:13,541 - INFO - 评估问题: 出差补助的发放流程是怎样的?...
+2025-09-08 17:38:13,541 - INFO - 评估问题: 出差人员在什么情况下可以选择乘坐出租车?...
+2025-09-08 17:38:13,541 - INFO - 评估问题: 日本以外的其他亚洲国家出差补助是多少?...
+2025-09-08 17:38:22,788 - INFO - API调用成功,答案长度: 46, chat_id: , 上下文数量: 0
+2025-09-08 17:38:22,788 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:38:22,788 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 46
+2025-09-08 17:38:23,050 - INFO - API调用成功,答案长度: 41, chat_id: , 上下文数量: 0
+2025-09-08 17:38:23,050 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:38:23,050 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 41
+2025-09-08 17:38:23,052 - INFO - API调用成功,答案长度: 37, chat_id: , 上下文数量: 0
+2025-09-08 17:38:23,052 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:38:23,052 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 37
+2025-09-08 17:38:23,294 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:23,296 - INFO - API调用成功,答案长度: 39, chat_id: , 上下文数量: 0
+2025-09-08 17:38:23,296 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:38:23,296 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 39
+2025-09-08 17:38:23,305 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:23,306 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:23,485 - INFO - API调用成功,答案长度: 46, chat_id: , 上下文数量: 0
+2025-09-08 17:38:23,485 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:38:23,486 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 46
+2025-09-08 17:38:23,523 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:23,547 - INFO - API调用成功,答案长度: 50, chat_id: , 上下文数量: 0
+2025-09-08 17:38:23,548 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:38:23,548 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 50
+2025-09-08 17:38:23,719 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:23,740 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:23,808 - INFO - API调用成功,答案长度: 90, chat_id: , 上下文数量: 0
+2025-09-08 17:38:23,808 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:38:23,808 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 90
+2025-09-08 17:38:23,816 - INFO - API调用成功,答案长度: 66, chat_id: , 上下文数量: 0
+2025-09-08 17:38:23,816 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:38:23,816 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 66
+2025-09-08 17:38:24,017 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:24,020 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:24,871 - INFO - API调用成功,答案长度: 129, chat_id: , 上下文数量: 0
+2025-09-08 17:38:24,872 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:38:24,872 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 129
+2025-09-08 17:38:25,097 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:25,799 - INFO - API调用成功,答案长度: 123, chat_id: , 上下文数量: 0
+2025-09-08 17:38:25,799 - WARNING - 未从API响应中提取到上下文信息,将使用验证数据中的预设上下文
+2025-09-08 17:38:25,799 - INFO - 使用上下文数量: 1 (来源: 验证数据预设), 答案长度: 123
+2025-09-08 17:38:26,018 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:27,039 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:27,057 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:27,266 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:27,271 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:27,283 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:27,285 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:27,339 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:27,347 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:28,599 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:28,919 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:30,052 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:30,159 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:30,234 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:30,235 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:30,281 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:30,283 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:30,286 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:30,334 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:31,797 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:31,927 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:33,137 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:33,146 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:33,155 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:33,157 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:33,169 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:33,178 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:33,181 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:33,285 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:35,031 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:35,088 - INFO - HTTP Request: POST https://api.deepseek.com/chat/completions "HTTP/1.1 200 OK"
+2025-09-08 17:38:38,564 - INFO - 评估完成
+2025-09-08 17:38:38,567 - INFO - 评估结果已保存到: rag_evaluation_results_20250908_173838.json

+ 18 - 0
val/req.txt

@@ -0,0 +1,18 @@
+# RAGAS评估脚本依赖包
+ragas>=0.1.0
+datasets>=2.14.0
+pandas>=1.5.0
+aiohttp>=3.8.0
+numpy>=1.21.0
+scikit-learn>=1.0.0
+transformers>=4.21.0
+torch>=1.12.0
+openai>=1.0.0
+langchain>=0.1.0
+langchain-openai>=0.1.0
+langchain-community>=0.0.20
+sentence-transformers>=2.2.0
+nltk>=3.8
+bert-score>=0.3.13
+rouge-score>=0.1.2
+bleu>=0.1.0

+ 602 - 0
val/test.py

@@ -0,0 +1,602 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+简单的RAG项目RAGAS评估脚本
+包含常用评估指标:答案相关性、上下文精确度、上下文召回率、答案正确性
+使用DeepSeek API进行LLM评估
+"""
+
+import json
+import asyncio
+import aiohttp
+import pandas as pd
+from typing import List, Dict, Any
+import logging
+from datetime import datetime
+import time
+import re
+from pathlib import Path
+from openai import AsyncOpenAI
+
+# 配置日志
+logging.basicConfig(
+    level=logging.INFO,
+    format='%(asctime)s - %(levelname)s - %(message)s',
+    handlers=[
+        logging.FileHandler('rag_evaluation.log', encoding='utf-8'),
+        logging.StreamHandler()
+    ]
+)
+logger = logging.getLogger(__name__)
+
+# DeepSeek API配置
+DEEPSEEK_API_KEY = "sk-72f9d0e5bc894e1d828d73bdcc50ff0a"  # 请替换为实际的API Key
+DEEPSEEK_BASE_URL = "https://api.deepseek.com"
+
+class SimpleRAGEvaluator:
+    def __init__(self):
+        """
+        初始化RAG评估器
+        """
+        self.api_url = "http://localhost:6000/rag/chat"
+        self.timeout = 60
+        self.max_retries = 3
+        self.retry_delay = 2
+        
+        # 初始化DeepSeek客户端
+        self.deepseek_client = AsyncOpenAI(
+            api_key=DEEPSEEK_API_KEY,
+            base_url=DEEPSEEK_BASE_URL
+        )
+        
+        # 默认请求参数
+        self.default_request = {
+            "appId": "2924812721300312064",
+            "desc": "高井信息员工手册,出差管理制度等",
+            "isDeepThink": "N",
+            "knowledgeIds": [
+                "a2963496869283893248",
+                "a2963501316240183296"
+            ],
+            "knowledgeInfo": '{"param_desc":"strict","show_recall_result":true,"recall_method":"embedding","rerank_status":true,"rerank_model_name":"rerank","slice_config_type":"customized","rerank_index_type_list":[{"index_type_id":0,"knowledge_id":["a2963496869283893248","a2963501316240183296"]}],"recall_index_type_list":[{"index_type_id":0,"knowledge_id":["a2963496869283893248","a2963501316240183296"]}]}',
+            "maxToken": 8192,
+            "model": "Qwen3-30B",
+            "name": "高井信息公司管理制度",
+            "params": {},
+            "prompt": "你是一位知识检索助手,你必须并且只能从我发送的众多知识片段中寻找能够解决用户输入问题的最优答案,并且在执行任务的过程中严格执行规定的要求。\n\n知识片段如下:\n{{知识}}\n\n规定要求:\n- 找到答案就仅使用知识片段中的原文回答用户的提问;\n- 找不到答案就用自身知识并且告诉用户该信息不是来自文档;\n- 所引用的文本片段中所包含的示意图占位符必须进行返回,占位符格式参考:【示意图序号_编号】\n  - 严禁输出任何知识片段中不存在的示意图占位符;\n  - 输出的内容必须删除其中包含的任何图注、序号等信息。例如:\"进入登录页面(图1.1)\"需要从文字中删除图序,回复效果为:\"进入登录页面\";\"如图所示1.1\",回复效果为:\"如图所示\";\n- 格式规范\n  - 文档中会出现包含表格的情况,表格是以图片标识符的形式呈现,表格中缺失数据时候返回空单元格;\n  - 如果需要用到表格中的数据,以markdown格式输出表格中的数据;\n  - 避免使用代码块语法回复信息;\n  - 回复的开头语不要输出诸如:\"我想\",\"我认为\",\"think\"等相关语义的文本。\n\n严格执行规定要求,不要复述问题,直接开始回答。\n\n用户输入问题:\n{{用户}}",
+            "status": "3",
+            "temperature": "0.01",
+            "topP": "0.5",
+            "typeId": 40,
+            "updateBy": "1",
+            "visible": "0",
+            "embeddingId": "multilingual-e5-large-instruct",
+            "enable_think": False
+        }
+        
+        self.results = []
+        self.stats = {
+            'total_questions': 0,
+            'successful_calls': 0,
+            'failed_calls': 0,
+            'avg_response_time': 0,
+            'response_times': []
+        }
+    
+    def load_validation_data(self, file_path: str = "val_data.json") -> List[Dict[str, Any]]:
+        """
+        加载验证数据
+        """
+        try:
+            with open(file_path, 'r', encoding='utf-8') as f:
+                data = json.load(f)
+            logger.info(f"成功加载 {len(data)} 条验证数据")
+            return data
+        except Exception as e:
+            logger.error(f"加载验证数据失败: {e}")
+            raise
+    
+    async def call_rag_api(self, session: aiohttp.ClientSession, question: str) -> Dict[str, Any]:
+        """
+        调用RAG API并处理流式响应
+        """
+        request_data = self.default_request.copy()
+        request_data["query"] = question
+        
+        try:
+            start_time = time.time()
+            
+            async with session.post(
+                self.api_url,
+                json=request_data,
+                timeout=aiohttp.ClientTimeout(total=self.timeout),
+                headers={'Accept': 'text/event-stream'}
+            ) as response:
+                if response.status != 200:
+                    raise Exception(f"API返回错误状态码: {response.status}")
+                
+                full_answer = ""
+                chat_id = ""
+                contexts_from_api = []
+                
+                # 处理流式响应
+                async for line in response.content:
+                    line = line.decode('utf-8').strip()
+                    if not line or line.startswith(':'):
+                        continue
+                    
+                    if line.startswith('data: '):
+                        data_str = line[6:]  # 移除 'data: ' 前缀
+                        if data_str == '[DONE]':
+                            break
+                        
+                        # 尝试解析JSON格式
+                        try:
+                            event_data = json.loads(data_str)
+                            
+                            # 确保event_data是字典类型才进行处理
+                            if isinstance(event_data, dict):
+                                if event_data.get('event') == 'add':
+                                    # 如果是流式输出包含完整内容,直接替换而不是累积
+                                    chunk_data = event_data.get('data', '')
+                                    if isinstance(chunk_data, str):
+                                        full_answer = chunk_data  # 直接替换,因为流式输出包含完整内容
+                                    chat_id = event_data.get('id', '') or chat_id
+                                    
+                                    # 提取上下文信息
+                                    if 'contexts' in event_data:
+                                        if isinstance(event_data['contexts'], list):
+                                            contexts_from_api.extend(event_data['contexts'])
+                                        
+                                elif event_data.get('event') == 'finish':
+                                    break
+                                    
+                                # 也检查直接的content和contexts字段(兼容不同的响应格式)
+                                if 'content' in event_data:
+                                    full_answer = event_data['content']
+                                if 'contexts' in event_data:
+                                    if isinstance(event_data['contexts'], list):
+                                        contexts_from_api.extend(event_data['contexts'])
+                            else:
+                                logger.debug(f"跳过非字典类型的数据: {type(event_data)}")
+                                
+                        except json.JSONDecodeError:
+                            # 如果不是JSON格式,直接作为文本内容处理
+                            if data_str and data_str != '[DONE]':
+                                full_answer = data_str  # 直接替换,因为流式输出包含完整内容
+                            continue
+                        except Exception as pe:
+                            logger.warning(f"处理流式数据失败: {pe}")
+                            continue
+                
+                end_time = time.time()
+                response_time = end_time - start_time
+                self.stats['response_times'].append(response_time)
+                
+                logger.info(f"API调用成功,答案长度: {len(full_answer)}, chat_id: {chat_id}, 上下文数量: {len(contexts_from_api)}")
+                
+                # 调试信息:显示提取到的上下文
+                if contexts_from_api:
+                    logger.info(f"成功提取到 {len(contexts_from_api)} 个上下文片段")
+                    for i, ctx in enumerate(contexts_from_api[:2], 1):  # 只显示前2个
+                        logger.info(f"上下文[{i}]: {ctx[:100]}{'...' if len(ctx) > 100 else ''}")
+                else:
+                    logger.warning("未从API响应中提取到上下文信息,将使用验证数据中的预设上下文")
+                
+                return {
+                    'answer': full_answer,
+                    'chat_id': chat_id,
+                    'contexts': contexts_from_api,
+                    'response_time': response_time,
+                    'success': True
+                }
+                
+        except Exception as e:
+            logger.error(f"API调用失败: {e}")
+            return {
+                'answer': '',
+                'chat_id': '',
+                'response_time': 0,
+                'success': False,
+                'error': str(e)
+            }
+    
+    async def calculate_answer_relevancy(self, question: str, answer: str) -> float:
+        """
+        使用DeepSeek API计算答案相关性
+        """
+        if not answer.strip():
+            return 0.0
+        
+        prompt = f"""
+请评估以下答案对问题的相关性,给出0-1之间的分数(保留3位小数)。
+
+问题:{question}
+答案:{answer}
+
+评估标准:
+- 1.0:答案完全回答了问题,高度相关
+- 0.8:答案大部分回答了问题,相关性较高
+- 0.6:答案部分回答了问题,有一定相关性
+- 0.4:答案与问题有关但不够直接
+- 0.2:答案与问题关系较弱
+- 0.0:答案与问题无关
+
+请只返回数字分数,不要其他解释。
+"""
+        
+        try:
+            response = await self.deepseek_client.chat.completions.create(
+                model="deepseek-chat",
+                messages=[{"role": "user", "content": prompt}],
+                temperature=0.1,
+                max_tokens=10
+            )
+            
+            score_text = response.choices[0].message.content.strip()
+            score = float(re.findall(r'\d+\.\d+|\d+', score_text)[0])
+            return min(max(score, 0.0), 1.0)
+            
+        except Exception as e:
+            logger.warning(f"DeepSeek API调用失败,使用简化计算: {e}")
+            # 回退到简化计算
+            question_words = set(re.findall(r'\b\w+\b', question.lower()))
+            answer_words = set(re.findall(r'\b\w+\b', answer.lower()))
+            if len(question_words) == 0:
+                return 0.0
+            overlap = len(question_words.intersection(answer_words))
+            return min(overlap / len(question_words), 1.0)
+    
+    async def calculate_context_precision(self, contexts: List[str], answer: str) -> float:
+        """
+        使用DeepSeek API计算上下文精确度
+        """
+        if not contexts or not answer.strip():
+            return 0.0
+        
+        contexts_text = "\n\n".join([f"上下文{i+1}: {ctx}" for i, ctx in enumerate(contexts)])
+        
+        prompt = f"""
+请评估检索到的上下文对生成答案的精确度,给出0-1之间的分数(保留3位小数)。
+
+检索到的上下文:
+{contexts_text}
+
+生成的答案:
+{answer}
+
+评估标准:
+- 1.0:所有上下文都与答案高度相关,没有无关信息
+- 0.8:大部分上下文与答案相关,少量无关信息
+- 0.6:一半以上上下文与答案相关
+- 0.4:部分上下文与答案相关
+- 0.2:少量上下文与答案相关
+- 0.0:上下文与答案基本无关
+
+请只返回数字分数,不要其他解释。
+"""
+        
+        try:
+            response = await self.deepseek_client.chat.completions.create(
+                model="deepseek-chat",
+                messages=[{"role": "user", "content": prompt}],
+                temperature=0.1,
+                max_tokens=10
+            )
+            
+            score_text = response.choices[0].message.content.strip()
+            score = float(re.findall(r'\d+\.\d+|\d+', score_text)[0])
+            return min(max(score, 0.0), 1.0)
+            
+        except Exception as e:
+            logger.warning(f"DeepSeek API调用失败,使用简化计算: {e}")
+            # 回退到简化计算
+            answer_words = set(re.findall(r'\b\w+\b', answer.lower()))
+            relevant_contexts = 0
+            for context in contexts:
+                context_words = set(re.findall(r'\b\w+\b', context.lower()))
+                if len(context_words.intersection(answer_words)) > 0:
+                    relevant_contexts += 1
+            return relevant_contexts / len(contexts) if contexts else 0.0
+    
+    async def calculate_context_recall(self, contexts: List[str], ground_truth: str) -> float:
+        """
+        使用DeepSeek API计算上下文召回率
+        """
+        if not contexts or not ground_truth.strip():
+            return 0.0
+        
+        contexts_text = "\n\n".join([f"上下文{i+1}: {ctx}" for i, ctx in enumerate(contexts)])
+        
+        prompt = f"""
+请评估检索到的上下文对标准答案的召回率,给出0-1之间的分数(保留3位小数)。
+
+检索到的上下文:
+{contexts_text}
+
+标准答案:
+{ground_truth}
+
+评估标准:
+- 1.0:上下文完全包含了标准答案的所有关键信息
+- 0.8:上下文包含了标准答案的大部分关键信息
+- 0.6:上下文包含了标准答案的一半以上关键信息
+- 0.4:上下文包含了标准答案的部分关键信息
+- 0.2:上下文包含了标准答案的少量关键信息
+- 0.0:上下文基本不包含标准答案的关键信息
+
+请只返回数字分数,不要其他解释。
+"""
+        
+        try:
+            response = await self.deepseek_client.chat.completions.create(
+                model="deepseek-chat",
+                messages=[{"role": "user", "content": prompt}],
+                temperature=0.1,
+                max_tokens=10
+            )
+            
+            score_text = response.choices[0].message.content.strip()
+            score = float(re.findall(r'\d+\.\d+|\d+', score_text)[0])
+            return min(max(score, 0.0), 1.0)
+            
+        except Exception as e:
+            logger.warning(f"DeepSeek API调用失败,使用简化计算: {e}")
+            # 回退到简化计算
+            ground_truth_words = set(re.findall(r'\b\w+\b', ground_truth.lower()))
+            all_context_words = set()
+            for context in contexts:
+                context_words = set(re.findall(r'\b\w+\b', context.lower()))
+                all_context_words.update(context_words)
+            if len(ground_truth_words) == 0:
+                return 0.0
+            overlap = len(ground_truth_words.intersection(all_context_words))
+            return overlap / len(ground_truth_words)
+    
+    async def calculate_answer_correctness(self, answer: str, ground_truth: str) -> float:
+        """
+        使用DeepSeek API计算答案正确性
+        """
+        if not answer.strip() or not ground_truth.strip():
+            return 0.0
+        
+        prompt = f"""
+请评估生成答案与标准答案的正确性,给出0-1之间的分数(保留3位小数)。
+
+生成的答案:
+{answer}
+
+标准答案:
+{ground_truth}
+
+评估标准:
+- 1.0:答案在事实和语义上与标准答案完全一致
+- 0.8:答案在主要事实上正确,与标准答案高度一致
+- 0.6:答案在核心事实上正确,与标准答案较为一致
+- 0.4:答案部分正确,与标准答案有一定一致性
+- 0.2:答案少量正确,与标准答案一致性较低
+- 0.0:答案错误或与标准答案完全不一致
+
+请只返回数字分数,不要其他解释。
+"""
+        
+        try:
+            response = await self.deepseek_client.chat.completions.create(
+                model="deepseek-chat",
+                messages=[{"role": "user", "content": prompt}],
+                temperature=0.1,
+                max_tokens=10
+            )
+            
+            score_text = response.choices[0].message.content.strip()
+            score = float(re.findall(r'\d+\.\d+|\d+', score_text)[0])
+            return min(max(score, 0.0), 1.0)
+            
+        except Exception as e:
+            logger.warning(f"DeepSeek API调用失败,使用简化计算: {e}")
+            # 回退到简化计算
+            answer_words = set(re.findall(r'\b\w+\b', answer.lower()))
+            ground_truth_words = set(re.findall(r'\b\w+\b', ground_truth.lower()))
+            if len(answer_words) == 0 and len(ground_truth_words) == 0:
+                return 1.0
+            if len(answer_words) == 0 or len(ground_truth_words) == 0:
+                return 0.0
+            intersection = len(answer_words.intersection(ground_truth_words))
+            union = len(answer_words.union(ground_truth_words))
+            return intersection / union if union > 0 else 0.0
+    
+    async def evaluate_single_item(self, session: aiohttp.ClientSession, item: Dict[str, Any]) -> Dict[str, Any]:
+        """
+        评估单个问题
+        """
+        question = item['question']
+        expected_answer = item['answer']
+        contexts = item['contexts']
+        ground_truth = item['ground_truth']
+        
+        logger.info(f"评估问题: {question[:50]}...")
+        
+        # 调用RAG API
+        api_result = await self.call_rag_api(session, question)
+        
+        if not api_result['success']:
+            self.stats['failed_calls'] += 1
+            return {
+                'question': question,
+                'expected_answer': expected_answer,
+                'actual_answer': '',
+                'contexts': contexts,
+                'ground_truth': ground_truth,
+                'answer_relevancy': 0.0,
+                'context_precision': 0.0,
+                'context_recall': 0.0,
+                'answer_correctness': 0.0,
+                'response_time': 0,
+                'success': False,
+                'error': api_result.get('error', 'Unknown error')
+            }
+        
+        actual_answer = api_result['answer']
+        self.stats['successful_calls'] += 1
+        
+        # 使用API返回的上下文(如果有的话),否则使用验证数据中的上下文
+        api_contexts = api_result.get('contexts', [])
+        evaluation_contexts = api_contexts if api_contexts else contexts
+        
+        context_source = "API返回" if api_contexts else "验证数据预设"
+        logger.info(f"使用上下文数量: {len(evaluation_contexts)} (来源: {context_source}), 答案长度: {len(actual_answer)}")
+        
+        # 显示实际使用的上下文(调试信息)
+        if evaluation_contexts:
+            logger.debug(f"评估使用的上下文片段:")
+            for i, ctx in enumerate(evaluation_contexts[:2], 1):
+                logger.debug(f"  [{i}] {ctx[:80]}{'...' if len(ctx) > 80 else ''}")
+        
+        # 计算各项指标
+        answer_relevancy = await self.calculate_answer_relevancy(question, actual_answer)
+        context_precision = await self.calculate_context_precision(evaluation_contexts, actual_answer)
+        context_recall = await self.calculate_context_recall(evaluation_contexts, ground_truth)
+        answer_correctness = await self.calculate_answer_correctness(actual_answer, ground_truth)
+        
+        return {
+            'question': question,
+            'expected_answer': expected_answer,
+            'actual_answer': actual_answer,
+            'contexts': contexts,
+            'ground_truth': ground_truth,
+            'answer_relevancy': answer_relevancy,
+            'context_precision': context_precision,
+            'context_recall': context_recall,
+            'answer_correctness': answer_correctness,
+            'response_time': api_result['response_time'],
+            'success': True
+        }
+    
+    async def run_evaluation(self, val_data_path: str = "val_data.json") -> Dict[str, Any]:
+        """
+        运行完整评估
+        """
+        logger.info("开始RAG系统评估")
+        
+        # 加载验证数据
+        val_data = self.load_validation_data(val_data_path)
+        self.stats['total_questions'] = len(val_data)
+        
+        # 创建HTTP会话
+        connector = aiohttp.TCPConnector(limit=10)
+        timeout = aiohttp.ClientTimeout(total=self.timeout)
+        
+        async with aiohttp.ClientSession(connector=connector, timeout=timeout) as session:
+            # 批量处理
+            tasks = []
+            for item in val_data:
+                task = self.evaluate_single_item(session, item)
+                tasks.append(task)
+            
+            # 执行评估
+            self.results = await asyncio.gather(*tasks, return_exceptions=True)
+        
+        # 过滤异常结果
+        valid_results = [r for r in self.results if not isinstance(r, Exception)]
+        
+        # 计算总体指标
+        metrics = self.calculate_overall_metrics(valid_results)
+        
+        logger.info("评估完成")
+        return metrics
+    
+    def calculate_overall_metrics(self, results: List[Dict[str, Any]]) -> Dict[str, Any]:
+        """
+        计算总体评估指标
+        """
+        if not results:
+            return {}
+        
+        successful_results = [r for r in results if r.get('success', False)]
+        
+        if not successful_results:
+            return {
+                'total_questions': len(results),
+                'successful_evaluations': 0,
+                'success_rate': 0.0,
+                'avg_answer_relevancy': 0.0,
+                'avg_context_precision': 0.0,
+                'avg_context_recall': 0.0,
+                'avg_answer_correctness': 0.0,
+                'avg_response_time': 0.0
+            }
+        
+        # 计算平均指标
+        avg_answer_relevancy = sum(r['answer_relevancy'] for r in successful_results) / len(successful_results)
+        avg_context_precision = sum(r['context_precision'] for r in successful_results) / len(successful_results)
+        avg_context_recall = sum(r['context_recall'] for r in successful_results) / len(successful_results)
+        avg_answer_correctness = sum(r['answer_correctness'] for r in successful_results) / len(successful_results)
+        avg_response_time = sum(r['response_time'] for r in successful_results) / len(successful_results)
+        
+        return {
+            'total_questions': len(results),
+            'successful_evaluations': len(successful_results),
+            'success_rate': len(successful_results) / len(results),
+            'avg_answer_relevancy': avg_answer_relevancy,
+            'avg_context_precision': avg_context_precision,
+            'avg_context_recall': avg_context_recall,
+            'avg_answer_correctness': avg_answer_correctness,
+            'avg_response_time': avg_response_time,
+            'detailed_results': successful_results
+        }
+    
+    def save_results(self, metrics: Dict[str, Any], output_file: str = None):
+        """
+        保存评估结果
+        """
+        if output_file is None:
+            timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
+            output_file = f"rag_evaluation_results_{timestamp}.json"
+        
+        try:
+            with open(output_file, 'w', encoding='utf-8') as f:
+                json.dump(metrics, f, ensure_ascii=False, indent=2)
+            logger.info(f"评估结果已保存到: {output_file}")
+        except Exception as e:
+            logger.error(f"保存结果失败: {e}")
+    
+    def print_summary(self, metrics: Dict[str, Any]):
+        """
+        打印评估摘要
+        """
+        print("\n" + "="*60)
+        print("RAG系统评估结果摘要")
+        print("="*60)
+        print(f"总问题数: {metrics.get('total_questions', 0)}")
+        print(f"成功评估数: {metrics.get('successful_evaluations', 0)}")
+        print(f"成功率: {metrics.get('success_rate', 0):.2%}")
+        print("\n核心指标:")
+        print(f"  答案相关性: {metrics.get('avg_answer_relevancy', 0):.3f}")
+        print(f"  上下文精确度: {metrics.get('avg_context_precision', 0):.3f}")
+        print(f"  上下文召回率: {metrics.get('avg_context_recall', 0):.3f}")
+        print(f"  答案正确性: {metrics.get('avg_answer_correctness', 0):.3f}")
+        print(f"\n平均响应时间: {metrics.get('avg_response_time', 0):.2f}秒")
+        print("="*60)
+
+async def main():
+    """
+    主函数
+    """
+    evaluator = SimpleRAGEvaluator()
+    
+    try:
+        # 运行评估
+        metrics = await evaluator.run_evaluation()
+        
+        # 打印摘要
+        evaluator.print_summary(metrics)
+        
+        # 保存结果
+        evaluator.save_results(metrics)
+        
+    except Exception as e:
+        logger.error(f"评估过程中发生错误: {e}")
+        raise
+
+if __name__ == "__main__":
+    asyncio.run(main())

+ 212 - 0
val/test_new.py

@@ -0,0 +1,212 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+简化的RAG评估脚本
+"""
+
+import json
+import aiohttp
+import asyncio
+import time
+from typing import List, Dict
+
+class SimpleRAGEvaluator:
+    def __init__(self):
+        self.api_url = "http://localhost:6000/rag/chat"
+
+        self.request_data = {
+            "appId": "2924812721300312064",
+            "desc": "高井信息员工手册,出差管理制度等",
+            "isDeepThink": "N",
+            "knowledgeIds": [
+                "a2963496869283893248",
+                "a2963501316240183296"
+            ],
+            "knowledgeInfo": '{"param_desc":"strict","show_recall_result":true,"recall_method":"embedding","rerank_status":true,"rerank_model_name":"rerank","slice_config_type":"customized","rerank_index_type_list":[{"index_type_id":0,"knowledge_id":["a2963496869283893248","a2963501316240183296"]}],"recall_index_type_list":[{"index_type_id":0,"knowledge_id":["a2963496869283893248","a2963501316240183296"]}]}',
+            "maxToken": 8192,
+            "model": "Qwen3-30B",
+            "name": "高井信息公司管理制度",
+            "params": {},
+            "prompt": "你是一位知识检索助手,你必须并且只能从我发送的众多知识片段中寻找能够解决用户输入问题的最优答案,并且在执行任务的过程中严格执行规定的要求。\n\n知识片段如下:\n{{知识}}\n\n规定要求:\n- 找到答案就仅使用知识片段中的原文回答用户的提问;\n- 找不到答案就用自身知识并且告诉用户该信息不是来自文档;\n- 所引用的文本片段中所包含的示意图占位符必须进行返回,占位符格式参考:【示意图序号_编号】\n  - 严禁输出任何知识片段中不存在的示意图占位符;\n  - 输出的内容必须删除其中包含的任何图注、序号等信息。例如:\"进入登录页面(图1.1)\"需要从文字中删除图序,回复效果为:\"进入登录页面\";\"如图所示1.1\",回复效果为:\"如图所示\";\n- 格式规范\n  - 文档中会出现包含表格的情况,表格是以图片标识符的形式呈现,表格中缺失数据时候返回空单元格;\n  - 如果需要用到表格中的数据,以markdown格式输出表格中的数据;\n  - 避免使用代码块语法回复信息;\n  - 回复的开头语不要输出诸如:\"我想\",\"我认为\",\"think\"等相关语义的文本。\n\n严格执行规定要求,不要复述问题,直接开始回答。\n\n用户输入问题:\n{{用户}}",
+            "status": "3",
+            "temperature": "0.01",
+            "topP": "0.5",
+            "typeId": 40,
+            "updateBy": "1",
+            "visible": "0",
+            "embeddingId": "multilingual-e5-large-instruct",
+            "enable_think": False
+        }
+
+    
+    def load_data(self, file_path: str = "val_data.json") -> List[Dict]:
+        with open(file_path, 'r', encoding='utf-8') as f:
+            return json.load(f)
+    
+    async def call_api(self, session: aiohttp.ClientSession, question: str) -> str:
+        data = self.request_data.copy()
+        data["query"] = question
+        
+        try:
+            async with session.post(
+                self.api_url, 
+                json=data, 
+                timeout=aiohttp.ClientTimeout(total=30),
+                headers={'Accept': 'text/event-stream'}
+            ) as response:
+                
+                if response.status == 200:
+                    full_answer = ""
+                    
+                    # 处理流式响应
+                    async for line in response.content:
+                        line_str = line.decode('utf-8').strip()
+                        if not line_str or line_str.startswith(':'):
+                            continue
+                        
+                        if line_str.startswith('data: '):
+                            data_str = line_str[6:]  # 移除 'data: ' 前缀
+                            if data_str == '[DONE]':
+                                break
+                            
+                            # 尝试解析JSON格式
+                            try:
+                                event_data = json.loads(data_str)
+                                
+                                # 确保event_data是字典类型才进行处理
+                                if isinstance(event_data, dict):
+                                    if event_data.get('event') == 'add':
+                                        # 直接替换为最新的完整内容(而不是累积)
+                                        chunk_data = event_data.get('data', '')
+                                        if isinstance(chunk_data, str):
+                                            full_answer = chunk_data  # 直接替换,因为每个chunk包含完整内容
+                                            
+                                    elif event_data.get('event') == 'finish':
+                                        break
+                                        
+                                    # 只有当没有event字段时才检查content字段
+                                    elif 'content' in event_data and 'event' not in event_data:
+                                        content_data = event_data['content']
+                                        if isinstance(content_data, str):
+                                            full_answer = content_data  # 直接替换
+                                        
+                            except json.JSONDecodeError:
+                                # 如果不是JSON格式,直接作为文本内容处理
+                                if data_str and data_str != '[DONE]':
+                                    full_answer = data_str  # 直接替换
+                                continue
+                            except Exception:
+                                continue
+                    
+                    return full_answer
+                return ''
+        except Exception as e:
+            print(f"API调用失败: {e}")
+            return ''
+    
+    async def call_openai_compatible_api(self, session: aiohttp.ClientSession, prompt: str) -> str:
+        """调用 OpenAI 兼容 API 进行评估"""
+        # OpenAI 兼容的 API 配置
+        api_url = "https://api.deepseek.com/chat/completions"
+        api_key = "sk-72f9d0e5bc894e1d828d73bdcc50ff0a"
+        model_name = "deepseek-chat"
+        
+        headers = {
+            "Content-Type": "application/json",
+            "Authorization": f"Bearer {api_key}"
+        }
+        
+        data = {
+            "model": model_name,
+            "messages": [{"role": "user", "content": prompt}],
+            "temperature": 0.1,
+            "max_tokens": 100,
+            "stream": False
+        }
+        
+        async with session.post(api_url, json=data, headers=headers, timeout=aiohttp.ClientTimeout(total=30)) as response:
+            result = await response.json()
+            return result['choices'][0]['message']['content'].strip()
+    
+    async def check_accuracy(self, session: aiohttp.ClientSession, actual: str, expected: str) -> float:
+        prompt = f"""请评估以下两个答案的相似度和准确性,给出0到1之间的分数(保留2位小数)。
+
+标准答案:{expected}
+
+实际答案:{actual}
+
+评估标准:
+1. 内容准确性:实际答案是否正确回答了问题
+2. 信息完整性:实际答案是否包含了标准答案的关键信息
+3. 语义相似性:两个答案在语义上的相似程度
+
+请只返回一个0到1之间的数字分数,不要包含其他文字说明。例如:0.85"""
+        
+        score_str = await self.call_openai_compatible_api(session, prompt)
+        
+        import re
+        numbers = re.findall(r'\d+\.\d+|\d+', score_str)
+        score = float(numbers[0])
+        return min(max(score, 0.0), 1.0)
+    
+    async def evaluate_single_item(self, session: aiohttp.ClientSession, item: Dict, semaphore: asyncio.Semaphore) -> tuple:
+        """评估单个问题项"""
+        async with semaphore:  # 限制并发数量
+            question = item['question']
+            expected = item['answer']
+            
+            # 并发调用API和评估
+            actual = await self.call_api(session, question)
+            accuracy_score = await self.check_accuracy(session, actual, expected)
+            
+            is_correct = accuracy_score > 0.5  # 阈值设为0.5
+            
+            print(f"问题: {question}")
+            print(f"期望: {expected}")
+            print(f"实际: {actual}")
+            print(f"准确率: {accuracy_score:.2%}")
+            print("-" * 50)
+            
+            return is_correct, accuracy_score
+    
+    async def evaluate(self, data_file: str = "val_data.json", max_concurrent: int = 5):
+        """异步并发评估"""
+        data = self.load_data(data_file)
+        total = len(data)
+        
+        # 创建信号量来限制并发数量
+        semaphore = asyncio.Semaphore(max_concurrent)
+        
+        # 创建aiohttp会话
+        connector = aiohttp.TCPConnector(limit=20, limit_per_host=10)
+        async with aiohttp.ClientSession(connector=connector) as session:
+            # 创建所有任务
+            tasks = [self.evaluate_single_item(session, item, semaphore) for item in data]
+            
+            # 并发执行所有任务
+            results = await asyncio.gather(*tasks, return_exceptions=True)
+            
+            # 统计结果
+            correct = 0
+            valid_results = 0
+            
+            for result in results:
+                if isinstance(result, Exception):
+                    print(f"评估出错: {result}")
+                    continue
+                
+                is_correct, accuracy_score = result
+                valid_results += 1
+                if is_correct:
+                    correct += 1
+            
+            accuracy = correct / valid_results if valid_results > 0 else 0
+            print(f"\n总体准确率: {correct}/{valid_results} = {accuracy:.2%}")
+            return accuracy
+    
+async def main():
+    evaluator = SimpleRAGEvaluator()
+    await evaluator.evaluate()
+
+if __name__ == "__main__":
+    asyncio.run(main())

+ 215 - 0
val/test_new_new.py

@@ -0,0 +1,215 @@
+import json
+import aiohttp
+import asyncio
+import re
+from typing import List, Dict, Tuple
+from datetime import datetime
+import os
+
+class RAGEvaluator:
+
+    def __init__(self, rag_url: str = "http://localhost:6000/rag/chat",
+                 eval_url: str = "https://api.deepseek.com/chat/completions",
+                 eval_key: str = "sk-72f9d0e5bc894e1d828d73bdcc50ff0a"):
+        self.rag_url = rag_url
+        self.eval_url = eval_url
+        self.eval_key = eval_key
+        self.evaluation_logs = []  
+
+        # RAG请求模板
+        self.rag_template = {
+#            "appId": "2924812721300312064",
+            "knowledgeIds": ["a2963496869283893248", "a2963501316240183296"],
+            "knowledgeInfo": '{"param_desc":"strict","show_recall_result":true,"recall_method":"embedding","rerank_status":true,"rerank_model_name":"rerank","slice_config_type":"customized","rerank_index_type_list":[{"index_type_id":0,"knowledge_id":["a2963496869283893248","a2963501316240183296"]}],"recall_index_type_list":[{"index_type_id":0,"knowledge_id":["a2963496869283893248","a2963501316240183296"]}]}',
+            "maxToken": 8192,
+            "model": "Qwen3-30B",
+            "temperature": "0.01",
+            "topP": "0.5",
+            "embeddingId": "multilingual-e5-large-instruct",
+            "prompt": "你是一位知识检索助手,你必须并且只能从我发送的众多知识片段中寻找能够解决用户输入问题的最优答案,并且在执行任务的过程中严格执行规定的要求。\n\n知识片段如下:\n{{知识}}\n\n规定要求:\n- 找到答案就仅使用知识片段中的原文回答用户的提问;\n- 找不到答案就用自身知识并且告诉用户该信息不是来自文档;\n- 所引用的文本片段中所包含的示意图占位符必须进行返回,占位符格式参考:【示意图序号_编号】\n  - 严禁输出任何知识片段中不存在的示意图占位符;\n  - 输出的内容必须删除其中包含的任何图注、序号等信息。例如:\"进入登录页面(图1.1)\"需要从文字中删除图序,回复效果为:\"进入登录页面\";\"如图所示1.1\",回复效果为:\"如图所示\";\n- 格式规范\n  - 文档中会出现包含表格的情况,表格是以图片标识符的形式呈现,表格中缺失数据时候返回空单元格;\n  - 如果需要用到表格中的数据,以markdown格式输出表格中的数据;\n  - 避免使用代码块语法回复信息;\n  - 回复的开头语不要输出诸如:\"我想\",\"我认为\",\"think\"等相关语义的文本。\n\n严格执行规定要求,不要复述问题,直接开始回答。\n\n用户输入问题:\n{{用户}}"
+        }
+        self.eval_threshold = 0.9   # 是否准确的阈值
+
+    def load_test_data(self, file_path: str = "val_data.json") -> List[Dict]:
+        with open(file_path, 'r', encoding='utf-8') as f:
+            return json.load(f)
+
+    async def query_rag(self, session: aiohttp.ClientSession, question: str) -> str:
+        payload = self.rag_template.copy()
+        payload["query"] = question
+
+        async with session.post(
+            self.rag_url,
+            json=payload,
+            timeout=aiohttp.ClientTimeout(total=30),
+            headers={'Accept': 'text/event-stream'}
+        ) as response:
+            if response.status != 200:
+                return ""
+
+            answer = ""
+            async for line in response.content:
+                line_str = line.decode('utf-8').strip()
+                if not line_str.startswith('data: '):
+                    continue
+
+                data_str = line_str[6:]
+                if data_str == '[DONE]':
+                    break
+
+                try:
+                    event_data = json.loads(data_str)
+                    if isinstance(event_data, dict):
+                        if event_data.get('event') == 'add':
+                            answer = event_data.get('data', '')
+                        elif event_data.get('event') == 'finish':
+                            break
+                        elif 'content' in event_data:
+                            answer = event_data['content']
+                except json.JSONDecodeError:
+                    if data_str != '[DONE]':
+                        answer = data_str
+
+            return answer
+
+    async def evaluate_answer(self, session: aiohttp.ClientSession, actual: str, expected: str) -> float:
+        prompt = f"""评估答案相似度,返回0-1分数。
+
+标准答案:{expected}
+实际答案:{actual}
+
+评估标准:内容准确性、信息完整性、语义相似性
+只返回数字分数,如:0.85"""
+
+        headers = {
+            "Content-Type": "application/json",
+            "Authorization": f"Bearer {self.eval_key}"
+        }
+
+        payload = {
+            "model": "deepseek-chat",
+            "messages": [{"role": "user", "content": prompt}],
+            "temperature": 0.1,
+            "max_tokens": 50
+        }
+
+        async with session.post(self.eval_url, json=payload, headers=headers) as response:
+            result = await response.json()
+            score_text = result['choices'][0]['message']['content'].strip()
+
+            numbers = re.findall(r'\d+\.\d+|\d+', score_text)
+            if numbers:
+                score = float(numbers[0])
+                return min(max(score, 0.0), 1.0)
+            return 0.0
+
+    async def evaluate_single(self, session: aiohttp.ClientSession, item: Dict,
+                            semaphore: asyncio.Semaphore) -> Tuple[bool, float]:
+        async with semaphore:
+            question = item['question']
+            expected = item['answer']
+
+            actual = await self.query_rag(session, question)
+            score = await self.evaluate_answer(session, actual, expected)
+
+            is_correct = score > self.eval_threshold    
+
+            log_entry = {
+                "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
+                "question": question,
+                "expected_answer": expected,
+                "actual_answer": actual,
+                "score": round(score, 2),
+                "is_correct": is_correct
+            }
+            self.evaluation_logs.append(log_entry)
+
+            print(f"问题: {question}")
+            print(f"期望: {expected}")
+            print(f"实际: {actual}")
+            print(f"得分: {score:.2f}")
+            print("-" * 50)
+
+            return is_correct, score
+
+    async def run_evaluation(self, data_file: str = "val_data.json",
+                           max_concurrent: int = 3) -> float:
+        data = self.load_test_data(data_file)
+        print(f"开始评估 {len(data)} 个问题...")
+
+        semaphore = asyncio.Semaphore(max_concurrent)
+        connector = aiohttp.TCPConnector(limit=10, limit_per_host=5)
+
+        async with aiohttp.ClientSession(connector=connector) as session:
+            tasks = [self.evaluate_single(session, item, semaphore) for item in data]
+            results = await asyncio.gather(*tasks, return_exceptions=True)
+
+            correct_count = 0
+            total_score = 0.0
+            valid_count = 0
+
+            for result in results:
+                if isinstance(result, Exception):
+                    print(f"评估异常: {result}")
+                    continue
+
+                is_correct, score = result
+                valid_count += 1
+                total_score += score
+                if is_correct:
+                    correct_count += 1
+
+            if valid_count == 0:
+                return 0.0
+
+            accuracy = correct_count / valid_count
+            avg_score = total_score / valid_count
+
+            print(f"\n=== 评估结果 ===")
+            print(f"正确率: {correct_count}/{valid_count} = {accuracy:.2%}")
+            print(f"平均分: {avg_score:.2f}")
+
+            self.save_evaluation_results(accuracy, avg_score, correct_count, valid_count)
+
+            return accuracy
+
+    def save_evaluation_results(self, accuracy: float, avg_score: float,
+                               correct_count: int, valid_count: int):
+
+        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
+        filename = f"rag_evaluation_{timestamp}.txt"
+
+        os.makedirs("logs", exist_ok=True)
+        filepath = os.path.join("logs", filename)
+
+        with open(filepath, 'w', encoding='utf-8') as f:
+            f.write("=" * 60 + "\n")
+            f.write("RAG系统评估结果报告\n")
+            f.write("=" * 60 + "\n")
+            f.write(f"评估时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n")
+            f.write(f"总问题数: {valid_count}\n")
+            f.write(f"正确回答数: {correct_count}\n")
+            f.write(f"正确率: {accuracy:.2%}\n")
+            f.write(f"平均得分: {avg_score:.2f}\n")
+            f.write(f"准确阈值: {self.eval_threshold}\n")
+            f.write("=" * 60 + "\n\n")
+
+            f.write("详细评估日志:\n")
+            f.write("-" * 60 + "\n")
+
+            for i, log in enumerate(self.evaluation_logs, 1):
+                f.write(f"\n[{i}] 评估时间: {log['timestamp']}\n")
+                f.write(f"问题: {log['question']}\n")
+                f.write(f"期望答案: {log['expected_answer']}\n")
+                f.write(f"实际答案: {log['actual_answer']}\n")
+                f.write(f"评分: {log['score']}\n")
+                f.write("-" * 60 + "\n")
+
+        print(f"\n评估结果已保存到: {filepath}")
+
+async def main():
+    evaluator = RAGEvaluator()
+    await evaluator.run_evaluation()
+
+if __name__ == "__main__":
+    asyncio.run(main())

+ 14 - 0
val/val_data.json

@@ -0,0 +1,14 @@
+[
+    {
+        "question": "试用期介绍",
+        "answer": "每一位新加入公司的成员都需经过一定期间的试用期,试用期期限将依法确定,并在《劳动合同》中有明确说明。试用期满前,直接主管经理会对员工试用期表现作出评定,填写“员工试用期考核表”,确定试用结果。在试用期间,如果员工被证明不符合录用条件的,公司有权解除劳动合同。"
+    },
+{
+        "question": "公司的工作制度",
+        "answer": "早晨及午餐后按时上班,是公司的规章制度之一。不能按时上班的员工,有义务尽快预先通知上级,说明缺勤理由和预计上班时间。如不事先通知(除紧急事件外)并获批准而缺勤,则视为旷工。不事先通知且事后无正当理由连续缺勤三日或以上者,即构成重大违纪行为。公司有权对其做出辞退处理决定。"
+    },
+{
+        "question": "公司的休假制度",
+        "answer": "(1)由本人填写请假单申请休假; (2)由直属经理批准; (3)人事部接到审批后的请假单后,方可休假。"
+    }
+]