96 lines
2.6 KiB
Python
96 lines
2.6 KiB
Python
"""
|
||
配置文件
|
||
"""
|
||
import os
|
||
from pydantic_settings import BaseSettings
|
||
from typing import List
|
||
|
||
|
||
class Settings(BaseSettings):
|
||
"""应用配置"""
|
||
|
||
# 应用信息
|
||
APP_NAME: str = "眼镜行业情报分析系统"
|
||
APP_VERSION: str = "1.0.0"
|
||
DEBUG: bool = True
|
||
|
||
# 数据库配置 (PostgreSQL)
|
||
DATABASE_URL: str = "postgresql+asyncpg://user_xREpkJ:password_DZz8DQ@331002.xyz:2022/qingbao"
|
||
|
||
# AI API配置
|
||
AI_API_KEY: str = "sk-Doiz9raiOjANJ3cRm0bUS2VHLFXSh2TT5YmF1aJu1BWiq6dO"
|
||
AI_API_URL: str = "https://ai.comfly.chat/v1/chat/completions"
|
||
AI_MODEL: str = "gemini-3-pro-preview"
|
||
|
||
# 并行AI分析数量(降低到3以确保系统响应其他请求)
|
||
AI_PARALLEL_COUNT: int = 3
|
||
|
||
# 巨潮资讯网配置 (新版HTTPS)
|
||
CNINFO_BASE_URL: str = "https://www.cninfo.com.cn"
|
||
CNINFO_API_URL: str = "https://www.cninfo.com.cn/new/hisAnnouncement/query"
|
||
|
||
# 定时任务配置
|
||
SCHEDULER_ENABLED: bool = True
|
||
SCHEDULER_INTERVAL_HOURS: int = 24 # 每24小时检查一次
|
||
SCHEDULER_CHECK_TIME: str = "08:00" # 每天8点检查
|
||
|
||
# 文件存储配置
|
||
DATA_DIR: str = os.path.join(os.path.dirname(os.path.dirname(__file__)), "data")
|
||
PDF_DIR: str = os.path.join(DATA_DIR, "pdfs")
|
||
|
||
# 报告类型配置
|
||
REPORT_TYPES: List[str] = ["年度报告", "半年度报告"]
|
||
|
||
# 需要提取的章节关键词 - 分为战略类和财务类
|
||
EXTRACT_KEYWORDS: List[str] = [
|
||
# === 战略规划类 ===
|
||
"投资方案",
|
||
"未来发展规划",
|
||
"发展战略",
|
||
"经营计划",
|
||
"战略规划",
|
||
"业务展望",
|
||
"发展目标",
|
||
"投资计划",
|
||
"资本运作",
|
||
"市场拓展",
|
||
"核心竞争力",
|
||
"竞争优势",
|
||
|
||
# === 三大财务报表 ===
|
||
"合并资产负债表",
|
||
"合并利润表",
|
||
"合并现金流量表",
|
||
"主要财务数据",
|
||
"财务指标",
|
||
|
||
# === 经营分析类 ===
|
||
"主营业务分析",
|
||
"经营情况讨论与分析",
|
||
"报告期内主要经营情况",
|
||
"主要业务分析",
|
||
"收入构成",
|
||
"成本分析",
|
||
"毛利率",
|
||
"费用分析",
|
||
"研发投入",
|
||
|
||
# === 行业与市场 ===
|
||
"行业发展趋势",
|
||
"市场竞争格局",
|
||
"行业地位",
|
||
"市场份额"
|
||
]
|
||
|
||
class Config:
|
||
env_file = ".env"
|
||
extra = "allow"
|
||
|
||
|
||
# 创建全局配置实例
|
||
settings = Settings()
|
||
|
||
# 确保数据目录存在
|
||
os.makedirs(settings.DATA_DIR, exist_ok=True)
|
||
os.makedirs(settings.PDF_DIR, exist_ok=True)
|