Files
blog-app/config.py
2026-08-17 17:11:27 +08:00

47 lines
1.9 KiB
Python

"""Central configuration for blog-app.
All values can be overridden via environment variables (BLOG_APP_* prefix,
except SECRET_KEY which uses the conventional FLASK_SECRET_KEY).
"""
import os
from pathlib import Path
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# NOTE: actual data lives at ~/opencode-blog-showcase/data (outside blog-app/).
# The default below mirrors the pre-refactor behavior.
DB_PATH = os.environ.get(
"BLOG_APP_DB_PATH",
os.path.expanduser("~/opencode-blog-showcase/data/projects.db"),
)
WATCHDOG_DB = os.environ.get(
"BLOG_APP_WATCHDOG_DB",
os.path.expanduser("~/opencode-blog-showcase/data/watchdog.db"),
)
WATCHDOG_SCRIPT = os.path.join(BASE_DIR, "scripts", "daily_watchdog.py")
WATCHDOG_RUN_LOG = os.path.expanduser(
"~/opencode-blog-showcase/logs/daily-watchdog-run.log"
)
LLM_URL = os.environ.get("BLOG_APP_LLM_URL", "http://127.0.0.1:4000/v1")
LLM_MODEL = os.environ.get("BLOG_APP_LLM_MODEL", "default")
LLM_TIMEOUT = int(os.environ.get("BLOG_APP_LLM_TIMEOUT", "300"))
# LLM prompt trimming budgets, in characters (OPT-10). Shared by
# services/analysis.py (_slim_for_llm) and scripts/daily_watchdog.py.
# LLM_TOTAL_LIMIT: 12000 chars ≈ 3000 tokens, 留余量给 system prompt +
# user question (典型 4k-8k context 模型). 单字段阈值控制 prefill 体积.
LLM_BODY_LIMIT = int(os.environ.get("BLOG_APP_LLM_BODY_LIMIT", "500"))
LLM_FIELD_LIMIT = int(os.environ.get("BLOG_APP_LLM_FIELD_LIMIT", "300"))
LLM_MESSAGE_LIMIT = int(os.environ.get("BLOG_APP_LLM_MESSAGE_LIMIT", "200"))
LLM_TOTAL_LIMIT = int(os.environ.get("BLOG_APP_LLM_TOTAL_LIMIT", "12000"))
RATE_LIMIT_MAX = int(os.environ.get("BLOG_APP_RATE_LIMIT_MAX", "3"))
RATE_LIMIT_WINDOW = int(os.environ.get("BLOG_APP_RATE_LIMIT_WINDOW", "60"))
WATCHDOG_RUN_COOLDOWN = int(os.environ.get("BLOG_APP_WATCHDOG_COOLDOWN", "60"))
SECRET_KEY = os.environ.get("FLASK_SECRET_KEY", "dev-watchdog-secret-change-me")