여러 줄 주석이 설명보다 경위(예전·실측·지적)를 적고 있어 읽는 사람이 결론을 찾기 어려웠다. - ts·tsx·js·mjs·css·py 478개: 여러 줄 주석은 첫 문장 한 줄로, 과거형·날짜 문장은 삭제 - 주석 위치는 TypeScript 파서·파이썬 tokenize/ast 로 찾는다 — 문자열 안의 # · /* 는 건드리지 않는다 - eslint·ts·noqa·type: ignore 같은 지시 주석은 그대로 둔다 파이썬 275개 정리 전후 AST 동일, TS 298개 주석 뺀 토큰 동일(빈 JSX 주석 10곳만 차이). site·frontend·admin tsc, site vitest 105 passed Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
"""사장님 에이전트 설정 — 루트 .env 하나만 읽는다(APP_ENV=test 면 .env 를 읽지 않는다)."""
|
|
|
|
from pydantic_settings import BaseSettings
|
|
|
|
from config.config_models import _BASE
|
|
|
|
|
|
class AgentConfig(BaseSettings):
|
|
model_config = _BASE
|
|
|
|
# 카카오톡 채널 공개 ID(`_xaBcD` 형태).
|
|
KAKAO_CHANNEL_PUBLIC_ID: str = ""
|
|
# 코드 수명.
|
|
KAKAO_LINK_CODE_TTL_MIN: int = 10
|
|
# 코드가 짧아서(사람이 손으로 친다) 무차별 대입이 가능하다.
|
|
KAKAO_LINK_MAX_ATTEMPTS: int = 5
|
|
|
|
# 빌더 화면의 대화창.
|
|
AGENT_CHAT_ENABLED: str = "1"
|
|
|
|
# 카카오 웹훅 인증.
|
|
KAKAO_WEBHOOK_SECRET: str = ""
|
|
# 우리 봇이 맞는지 한 겹 더 본다.
|
|
KAKAO_BOT_ID: str = ""
|
|
|
|
|
|
def get(name, default=""):
|
|
return getattr(AgentConfig(), name, default) or default
|
|
|
|
|
|
def chat_enabled() -> bool:
|
|
return get("AGENT_CHAT_ENABLED", "0") == "1"
|
|
|
|
|
|
def webhook_secret() -> str:
|
|
return get("KAKAO_WEBHOOK_SECRET")
|
|
|
|
|
|
def kakao_link_enabled() -> bool:
|
|
return bool(get("KAKAO_CHANNEL_PUBLIC_ID"))
|
|
|
|
|
|
def channel_url() -> str:
|
|
"""사장님이 눌러서 채널로 가는 주소."""
|
|
public_id = get("KAKAO_CHANNEL_PUBLIC_ID")
|
|
return f"http://pf.kakao.com/{public_id}" if public_id else ""
|