config.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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 = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'xlsx', 'xls', 'csv', 'sql', 'dll'}
  32. # 数据抽取配置
  33. DATA_EXTRACT_BATCH_SIZE = 1000 # 每批处理的记录数
  34. # PostgreSQL 基础配置
  35. SQLALCHEMY_ENGINE_OPTIONS = {
  36. 'pool_pre_ping': True,
  37. 'pool_recycle': 300,
  38. 'pool_size': 10,
  39. 'max_overflow': 20
  40. }
  41. # LLM基础配置
  42. LLM_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
  43. LLM_MODEL_NAME = "qwen-turbo"
  44. # LLM_API_KEY = os.environ.get('LLM_API_KEY', "sk-86d4622141d74e9a8d7c38ee873c4d91")
  45. LLM_API_KEY = os.environ.get('LLM_API_KEY', "sk-db68e37f00974031935395315bfe07f0")
  46. # Qwen VL模型配置 - 用于图片解析
  47. QWEN_API_KEY = os.environ.get('QWEN_API_KEY', "sk-db68e37f00974031935395315bfe07f0")
  48. QWEN_API_URL = "https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation"
  49. # Qwen API配置 - 用于文本生成(替代Deepseek)
  50. QWEN_TEXT_API_KEY = os.environ.get('QWEN_TEXT_API_KEY', "sk-db68e37f00974031935395315bfe07f0")
  51. QWEN_TEXT_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
  52. QWEN_TEXT_MODEL = "qwen-turbo"
  53. # 日志基础配置
  54. LOG_FORMAT = '%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)s - %(message)s'
  55. LOG_ENCODING = 'UTF-8'
  56. LOG_ENABLED = True
  57. # n8n 工作流引擎配置
  58. N8N_API_URL = os.environ.get('N8N_API_URL', 'https://n8n.citupro.com')
  59. N8N_API_KEY = os.environ.get('N8N_API_KEY', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI4MTcyNzlmMC1jNTQwLTQyMTEtYjczYy1mNjU4OTI5NTZhMmUiLCJpc3MiOiJuOG4iLCJhdWQiOiJwdWJsaWMtYXBpIiwiaWF0IjoxNzY2NTcyMDg0fQ.QgiUa5tEM1IGZSxhqFaWtdKvwk1SvoRmqdRovTT254M')
  60. N8N_API_TIMEOUT = int(os.environ.get('N8N_API_TIMEOUT', '30'))
  61. class DevelopmentConfig(BaseConfig):
  62. """Windows 开发环境配置"""
  63. FLASK_ENV = 'development'
  64. DEBUG = True
  65. PORT = 5500
  66. # 开发环境 MinIO 配置
  67. MINIO_HOST = 'localhost:9000'
  68. MINIO_USER = 'citu-test'
  69. MINIO_PASSWORD = 'citu-test'
  70. MINIO_SECURE = False
  71. MINIO_BUCKET = 'dataops-bucket'
  72. PREFIX = ''
  73. # 开发环境 PostgreSQL 配置
  74. SQLALCHEMY_DATABASE_URI = 'postgresql://postgres:postgres@localhost:5432/dataops'
  75. # 开发环境 Neo4j 配置
  76. NEO4J_URI = "bolt://localhost:7687"
  77. NEO4J_HTTP_URI = "http://localhost:7474"
  78. NEO4J_USER = "neo4j"
  79. NEO4J_PASSWORD = "Passw0rd"
  80. NEO4J_ENCRYPTED = False
  81. # 开发环境文件路径配置
  82. UPLOAD_BASE_PATH = 'C:\\tmp\\upload'
  83. ARCHIVE_BASE_PATH = 'C:\\tmp\\archive'
  84. # 开发环境日志配置
  85. LOG_LEVEL = 'DEBUG'
  86. LOG_FILE = 'flask_development.log'
  87. LOG_TO_CONSOLE = True
  88. # 开发环境 Airflow 配置
  89. AIRFLOW_BASE_URL = 'http://localhost:8080'
  90. AIRFLOW_AUTH_USER = 'admin'
  91. AIRFLOW_AUTH_PASSWORD = 'admin'
  92. class ProductionConfig(BaseConfig):
  93. """Linux 生产环境配置"""
  94. FLASK_ENV = 'production'
  95. DEBUG = False
  96. PORT = 80
  97. # 生产环境 MinIO 配置
  98. MINIO_HOST = '192.168.3.143:9000'
  99. MINIO_USER = 'citu-dataops-acc-key'
  100. MINIO_PASSWORD = 'citu-dataops-secret-key'
  101. MINIO_SECURE = False
  102. MINIO_BUCKET = 'dataops-bucket'
  103. PREFIX = ''
  104. # 生产环境 PostgreSQL 配置
  105. SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL', 'postgresql://postgres:dataOps@192.168.3.143:5432/dataops')
  106. # 生产环境 Neo4j 配置
  107. NEO4J_URI = os.environ.get('NEO4J_URI', "bolt://192.168.3.143:7687")
  108. NEO4J_HTTP_URI = os.environ.get('NEO4J_HTTP_URI', "http://192.168.3.143:7474")
  109. NEO4J_USER = os.environ.get('NEO4J_USER', "neo4j")
  110. NEO4J_PASSWORD = os.environ.get('NEO4J_PASSWORD', "cituneo4j")
  111. NEO4J_ENCRYPTED = False
  112. # 生产环境文件路径配置
  113. UPLOAD_BASE_PATH = '/data/upload'
  114. ARCHIVE_BASE_PATH = '/data/archive'
  115. # 生产环境日志配置
  116. LOG_LEVEL = 'INFO'
  117. LOG_FILE = 'flask_production.log'
  118. LOG_TO_CONSOLE = False
  119. # 生产环境 Airflow 配置
  120. AIRFLOW_BASE_URL = os.environ.get('AIRFLOW_BASE_URL', 'http://192.168.3.143:8080')
  121. AIRFLOW_AUTH_USER = os.environ.get('AIRFLOW_AUTH_USER', 'admin')
  122. AIRFLOW_AUTH_PASSWORD = os.environ.get('AIRFLOW_AUTH_PASSWORD', 'admin')
  123. # 配置字典
  124. config = {
  125. 'development': DevelopmentConfig,
  126. 'production': ProductionConfig,
  127. 'default': DevelopmentConfig
  128. }
  129. # 获取当前环境
  130. current_env = get_environment()