feat(nextcloud): Nextcloud 4모듈 + NC핸들러 + AI Foreman v0.1

- tools/nextcloud_client.py: WebDAV/OCS/CalDAV/CardDAV 공통 클라이언트
- tools/nc_files.py: 파일 검색/목록/최근/공유링크
- tools/nc_calendar.py: CalDAV 일정 CRUD + ICS 빌더
- tools/nc_mail.py: IMAP 메일 조회 (PLAIN auth for Mailcow)
- tools/nc_contacts.py: CardDAV 연락처 + EasyOCR 명함 스캔
- handlers/nc_handler.py: 자연어→NC도구 자동 라우팅
- core/foreman.py: 목표 분해 + 상담 세션 + Vikunja 등록
- prompts/foreman.md: Foreman 시스템 프롬프트
- prompts/unified.md: nextcloud 모드 분류 추가
- config.py: .env 따옴표 파싱 버그 수정
- api/discord_bot.py: /goal 커맨드 + Foreman 스레드 라우팅
This commit is contained in:
2026-03-18 17:25:27 +09:00
parent aae9c188eb
commit d22493125c
14 changed files with 2709 additions and 2 deletions

View File

@@ -15,7 +15,11 @@ if _env_path.exists():
continue
if "=" in line:
key, _, value = line.partition("=")
os.environ.setdefault(key.strip(), value.strip())
value = value.strip()
# 양쪽 따옴표 제거 (".." 또는 '..')
if len(value) >= 2 and value[0] == value[-1] and value[0] in ('"', "'"):
value = value[1:-1]
os.environ.setdefault(key.strip(), value)
# === Discord ===
@@ -64,3 +68,14 @@ NAS_ANIME_PATH: str = os.getenv(
WIKI_URL: str = os.getenv("WIKI_URL", "https://wiki.variet.net")
WIKI_API_KEY: str = os.getenv("WIKI_API_KEY", "")
# === Nextcloud ===
NEXTCLOUD_URL: str = os.getenv("NEXTCLOUD_URL", "https://cloud.variet.net")
NEXTCLOUD_USER: str = os.getenv("NEXTCLOUD_USER", "")
NEXTCLOUD_APP_PASSWORD: str = os.getenv("NEXTCLOUD_APP_PASSWORD", "")
# === Mail (IMAP) ===
MAIL_IMAP_HOST: str = os.getenv("MAIL_IMAP_HOST", "mail.variet.net")
MAIL_IMAP_PORT: int = int(os.getenv("MAIL_IMAP_PORT", "993"))
MAIL_USER: str = os.getenv("MAIL_USER", "")
MAIL_PASSWORD: str = os.getenv("MAIL_PASSWORD", "")