96 lines
3.7 KiB
Python
96 lines
3.7 KiB
Python
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||
|
||
|
||
class Settings(BaseSettings):
|
||
"""项目配置,通过 .env 文件覆盖默认值"""
|
||
|
||
# 环境
|
||
env: str = "dev"
|
||
|
||
# ──────────── PostgreSQL(本地,app_job_data 源库)────────────
|
||
pg_host: str = "192.168.31.51"
|
||
pg_port: int = 5432
|
||
pg_user: str = "postgres"
|
||
pg_password: str = ""
|
||
pg_db: str = "postgres"
|
||
pg_pool_size: int = 10
|
||
pg_max_overflow: int = 10
|
||
|
||
# ──────────── MySQL(业务库)────────────
|
||
db_host: str = "192.168.31.105"
|
||
db_port: int = 3306
|
||
db_user: str = "root"
|
||
db_password: str = "123456"
|
||
db_name: str = "offerpie"
|
||
mysql_pool_size: int = 10
|
||
mysql_max_overflow: int = 10
|
||
|
||
# 连接池获取连接的等待超时(秒),两个数据源共用
|
||
db_pool_timeout: int = 30
|
||
|
||
# ──────────── AI 供应商 ────────────
|
||
# 火山引擎(OpenAI 兼容风格)
|
||
volcengine_api_key: str = "fd065993-bee2-4f31-8bf2-56d5d3012c02"
|
||
volcengine_base_url: str = "https://ark.cn-beijing.volces.com/api/v3"
|
||
|
||
# Claude(Anthropic 风格)
|
||
anthropic_api_key: str = "sk-43ccdb29caa7e9ebe0db8ac0958c63f6d3a2d62e59064d3d26d94332055a9bc9"
|
||
anthropic_base_url: str = "https://code.warpdevloper.cloud"
|
||
|
||
# Claude 备用中转(Anthropic 风格)
|
||
anthropic_alt_api_key: str = "sk-ac5544257dcf843de887fa153c4f4a11fa5007cbae4b8f4eec895a354c89ff7b"
|
||
anthropic_alt_base_url: str = "http://98.142.250.143:8080"
|
||
|
||
# OpenAI(OpenAI 兼容风格)
|
||
openai_api_key: str = "sk-12663c3a1ae5db0bc9aee78ffa64e7a0b95bcf7a15541040dd2bce573130f5c8"
|
||
openai_base_url: str = "https://re.94xy.cn/v1"
|
||
|
||
# ──────────── 岗位清洗参数 ────────────
|
||
clean_worker_count: int = 60 # 持续消费 worker 协程数量
|
||
clean_idle_sleep: float = 5.0 # 没数据时每个 worker 休眠秒数
|
||
clean_total_limit: int = 0 # 累计清洗总数上限,达到后停止清洗任务;0 = 不限制
|
||
|
||
# ──────────── 公司补充参数 ────────────
|
||
company_worker_count: int = 10 # 持续消费 worker 协程数量
|
||
company_idle_sleep: float = 10.0 # 没数据时每个 worker 休眠秒数
|
||
|
||
# ──────────── 岗位下架参数 ────────────
|
||
job_expire_days: int = 7
|
||
|
||
# ──────────── 阿里云 OSS ────────────
|
||
oss_access_key_id: str = ""
|
||
oss_access_key_secret: str = ""
|
||
oss_endpoint: str = "oss-cn-guangzhou.aliyuncs.com"
|
||
oss_bucket: str = "offerpie"
|
||
# 固定上传目录(对象 key 前缀)
|
||
oss_upload_dir: str = "company/logo"
|
||
# 下载访问域名
|
||
oss_domain: str = "https://offerpie.oss-cn-guangzhou.aliyuncs.com"
|
||
|
||
# ──────────── 日志 ────────────
|
||
logging_level: str = "INFO"
|
||
log_file_name: str = "cleaner.log"
|
||
|
||
@property
|
||
def pg_url(self) -> str:
|
||
from urllib.parse import quote
|
||
return (
|
||
f"postgresql+asyncpg://{self.pg_user}:{quote(self.pg_password, safe='')}"
|
||
f"@{self.pg_host}:{self.pg_port}/{self.pg_db}"
|
||
)
|
||
|
||
@property
|
||
def mysql_url(self) -> str:
|
||
from urllib.parse import quote
|
||
return (
|
||
f"mysql+asyncmy://{self.db_user}:{quote(self.db_password, safe='')}"
|
||
f"@{self.db_host}:{self.db_port}/{self.db_name}"
|
||
)
|
||
|
||
model_config = SettingsConfigDict(
|
||
env_file=".env",
|
||
env_file_encoding="utf-8",
|
||
case_sensitive=False,
|
||
extra="ignore",
|
||
)
|