config.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. import os
  2. import platform
  3. def get_environment():
  4. """
  5. 获取当前运行环境
  6. 优先级:
  7. 1. 环境变量 FLASK_ENV
  8. 2. 根据操作系统自动判断(Windows -> development, Linux -> production)
  9. """
  10. # 首先检查环境变量
  11. env = os.environ.get("FLASK_ENV")
  12. if env:
  13. return env.lower()
  14. # 根据操作系统判断
  15. system = platform.system().lower()
  16. if system == "windows":
  17. return "development"
  18. elif system == "linux":
  19. return "production"
  20. else:
  21. return "development" # 其他系统默认使用开发环境
  22. class BaseConfig:
  23. """基础配置类,包含所有环境共享的配置"""
  24. SECRET_KEY = os.environ.get("SECRET_KEY") or "you-will-never-guess"
  25. JSON_AS_ASCII = False
  26. JSONIFY_PRETTYPRINT_REGULAR = True
  27. JSON_SORT_KEYS = False
  28. # 平台特定配置
  29. PLATFORM = platform.system().lower()
  30. # 文件上传配置
  31. ALLOWED_EXTENSIONS = {
  32. "txt",
  33. "pdf",
  34. "png",
  35. "jpg",
  36. "jpeg",
  37. "gif",
  38. "xlsx",
  39. "xls",
  40. "csv",
  41. "sql",
  42. "dll",
  43. }
  44. # 数据抽取配置
  45. DATA_EXTRACT_BATCH_SIZE = 1000 # 每批处理的记录数
  46. # PostgreSQL 基础配置
  47. SQLALCHEMY_ENGINE_OPTIONS = {
  48. "pool_pre_ping": True,
  49. "pool_recycle": 300,
  50. "pool_size": 10,
  51. "max_overflow": 20,
  52. }
  53. # LLM基础配置
  54. LLM_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
  55. LLM_MODEL_NAME = "qwen-turbo"
  56. # LLM_API_KEY = os.environ.get('LLM_API_KEY', "sk-86d4622141d74e9a8d7c38ee873c4d91")
  57. LLM_API_KEY = os.environ.get("LLM_API_KEY", "sk-db68e37f00974031935395315bfe07f0")
  58. # Qwen VL模型配置 - 用于图片解析
  59. QWEN_API_KEY = os.environ.get("QWEN_API_KEY", "sk-db68e37f00974031935395315bfe07f0")
  60. QWEN_API_URL = "https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation"
  61. # Qwen API配置 - 用于文本生成(替代Deepseek)
  62. QWEN_TEXT_API_KEY = os.environ.get(
  63. "QWEN_TEXT_API_KEY", "sk-db68e37f00974031935395315bfe07f0"
  64. )
  65. QWEN_TEXT_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
  66. QWEN_TEXT_MODEL = "qwen-turbo"
  67. # 日志基础配置
  68. LOG_FORMAT = "%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)s - %(message)s"
  69. LOG_ENCODING = "UTF-8"
  70. LOG_ENABLED = True
  71. # n8n 工作流引擎配置
  72. N8N_API_URL = os.environ.get("N8N_API_URL", "https://n8n.citupro.com")
  73. N8N_API_KEY = os.environ.get(
  74. "N8N_API_KEY",
  75. "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI4MTcyNzlmMC1jNTQwLTQyMTEtYjczYy1mNjU4OTI5NTZhMmUiLCJpc3MiOiJuOG4iLCJhdWQiOiJwdWJsaWMtYXBpIiwiaWF0IjoxNzY2NTcyMDg0fQ.QgiUa5tEM1IGZSxhqFaWtdKvwk1SvoRmqdRovTT254M",
  76. )
  77. N8N_API_TIMEOUT = int(os.environ.get("N8N_API_TIMEOUT", "30"))
  78. class DevelopmentConfig(BaseConfig):
  79. """Windows 开发环境配置"""
  80. FLASK_ENV = "development"
  81. DEBUG = True
  82. PORT = 5500
  83. # 开发环境 MinIO 配置
  84. MINIO_HOST = "localhost:9000"
  85. MINIO_USER = "citu-test"
  86. MINIO_PASSWORD = "citu-test"
  87. MINIO_SECURE = False
  88. MINIO_BUCKET = "dataops-bucket"
  89. PREFIX = ""
  90. # 开发环境 PostgreSQL 配置
  91. SQLALCHEMY_DATABASE_URI = "postgresql://postgres:postgres@localhost:5432/dataops"
  92. # 开发环境 Neo4j 配置
  93. NEO4J_URI = "bolt://localhost:7687"
  94. NEO4J_HTTP_URI = "http://localhost:7474"
  95. NEO4J_USER = "neo4j"
  96. NEO4J_PASSWORD = "Passw0rd"
  97. NEO4J_ENCRYPTED = False
  98. # 开发环境文件路径配置
  99. UPLOAD_BASE_PATH = "C:\\tmp\\upload"
  100. ARCHIVE_BASE_PATH = "C:\\tmp\\archive"
  101. # 开发环境日志配置
  102. LOG_LEVEL = "DEBUG"
  103. LOG_FILE = "flask_development.log"
  104. LOG_TO_CONSOLE = True
  105. # 开发环境 Airflow 配置
  106. AIRFLOW_BASE_URL = "http://localhost:8080"
  107. AIRFLOW_AUTH_USER = "admin"
  108. AIRFLOW_AUTH_PASSWORD = "admin"
  109. class ProductionConfig(BaseConfig):
  110. """Linux 生产环境配置"""
  111. FLASK_ENV = "production"
  112. DEBUG = False
  113. PORT = 80
  114. # 生产环境 MinIO 配置
  115. MINIO_HOST = "192.168.3.143:9000"
  116. MINIO_USER = "citu-dataops-acc-key"
  117. MINIO_PASSWORD = "citu-dataops-secret-key"
  118. MINIO_SECURE = False
  119. MINIO_BUCKET = "dataops-bucket"
  120. PREFIX = ""
  121. # 生产环境 PostgreSQL 配置
  122. SQLALCHEMY_DATABASE_URI = os.environ.get(
  123. "DATABASE_URL", "postgresql://postgres:dataOps@192.168.3.143:5432/dataops"
  124. )
  125. # 生产环境 Neo4j 配置
  126. NEO4J_URI = os.environ.get("NEO4J_URI", "bolt://192.168.3.143:7687")
  127. NEO4J_HTTP_URI = os.environ.get("NEO4J_HTTP_URI", "http://192.168.3.143:7474")
  128. NEO4J_USER = os.environ.get("NEO4J_USER", "neo4j")
  129. NEO4J_PASSWORD = os.environ.get("NEO4J_PASSWORD", "cituneo4j")
  130. NEO4J_ENCRYPTED = False
  131. # 生产环境文件路径配置
  132. UPLOAD_BASE_PATH = "/data/upload"
  133. ARCHIVE_BASE_PATH = "/data/archive"
  134. # 生产环境日志配置
  135. LOG_LEVEL = "INFO"
  136. LOG_FILE = "flask_production.log"
  137. LOG_TO_CONSOLE = False
  138. # 生产环境 Airflow 配置
  139. AIRFLOW_BASE_URL = os.environ.get("AIRFLOW_BASE_URL", "http://192.168.3.143:8080")
  140. AIRFLOW_AUTH_USER = os.environ.get("AIRFLOW_AUTH_USER", "admin")
  141. AIRFLOW_AUTH_PASSWORD = os.environ.get("AIRFLOW_AUTH_PASSWORD", "admin")
  142. # 配置字典
  143. config = {
  144. "development": DevelopmentConfig,
  145. "production": ProductionConfig,
  146. "default": DevelopmentConfig,
  147. }
  148. # 获取当前环境
  149. current_env = get_environment()