55 lines
2.4 KiB
Python
55 lines
2.4 KiB
Python
import os
|
|
|
|
# Service URLs (Docker internal network)
|
|
STOCK_URL = os.getenv("STOCK_URL", "http://localhost:18500")
|
|
MUSIC_LAB_URL = os.getenv("MUSIC_LAB_URL", "http://localhost:18600")
|
|
INSTA_LAB_URL = os.getenv("INSTA_LAB_URL", "http://localhost:18700")
|
|
REALESTATE_LAB_URL = os.getenv("REALESTATE_LAB_URL", "http://localhost:18800")
|
|
|
|
# Telegram
|
|
TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN", "")
|
|
TELEGRAM_CHAT_ID = os.getenv("TELEGRAM_CHAT_ID", "")
|
|
TELEGRAM_WEBHOOK_URL = os.getenv("TELEGRAM_WEBHOOK_URL", "")
|
|
TELEGRAM_WIFE_CHAT_ID = os.getenv("TELEGRAM_WIFE_CHAT_ID", "")
|
|
|
|
# Anthropic (conversational)
|
|
ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY", "")
|
|
CONVERSATION_MODEL = os.getenv("CONVERSATION_MODEL", "claude-haiku-4-5-20251001")
|
|
CONVERSATION_HISTORY_LIMIT = int(os.getenv("CONVERSATION_HISTORY_LIMIT", "20"))
|
|
CONVERSATION_RATE_PER_MIN = int(os.getenv("CONVERSATION_RATE_PER_MIN", "6"))
|
|
|
|
# Database
|
|
DB_PATH = os.getenv("AGENT_OFFICE_DB_PATH", "/app/data/agent_office.db")
|
|
|
|
# CORS
|
|
CORS_ALLOW_ORIGINS = os.getenv(
|
|
"CORS_ALLOW_ORIGINS", "http://localhost:3007,http://localhost:8080"
|
|
)
|
|
|
|
# Lotto Curator
|
|
LOTTO_BACKEND_URL = os.getenv("LOTTO_BACKEND_URL", "http://lotto:8000")
|
|
LOTTO_CURATOR_MODEL = os.getenv("LOTTO_CURATOR_MODEL", "claude-sonnet-4-5")
|
|
|
|
# Lotto Active Signals
|
|
LOTTO_SIGNAL_WINDOW = int(os.getenv("LOTTO_SIGNAL_WINDOW", "8"))
|
|
LOTTO_Z_NORMAL = float(os.getenv("LOTTO_Z_NORMAL", "1.5"))
|
|
LOTTO_Z_URGENT = float(os.getenv("LOTTO_Z_URGENT", "2.5"))
|
|
LOTTO_DIGEST_HOUR = int(os.getenv("LOTTO_DIGEST_HOUR", "9"))
|
|
LOTTO_DIGEST_MIN = int(os.getenv("LOTTO_DIGEST_MIN", "25"))
|
|
LOTTO_THROTTLE_HOURS = int(os.getenv("LOTTO_THROTTLE_HOURS", "6"))
|
|
LOTTO_URGENT_DAILY_MAX = int(os.getenv("LOTTO_URGENT_DAILY_MAX", "3"))
|
|
|
|
import re as _re
|
|
|
|
# 에이전트 → (container_host, port, path_prefix_regex)
|
|
# path_prefix_regex: lotto 컨테이너에 personal/blog/todo 도 같이 있어
|
|
# /api/lotto 만 골라내기 위한 정규식. business log (source='log') 는 모두 통과.
|
|
AGENT_CONTAINER_MAP: dict[str, tuple[str, int, _re.Pattern]] = {
|
|
"lotto": ("lotto", 8000, _re.compile(r"^/api/lotto")),
|
|
# Phase 2 에서 추가:
|
|
# "stock": ("stock", 8000, _re.compile(r"^/api/(stock|trade|portfolio)")),
|
|
# "music": ("music-lab", 8000, _re.compile(r"^/api/music")),
|
|
# "insta": ("insta-lab", 8000, _re.compile(r"^/api/insta")),
|
|
# "realestate": ("realestate-lab", 8000, _re.compile(r"^/api/realestate")),
|
|
}
|