Files
ai_platform/.env.example
dsyoon 073a8343dd feat: xavis ai_platform 기능 이전 및 ncue 환경 전환
xavis 소스·DB 스키마·활용사례/F-Scan/프롬프트 라이브러리 등 기능 반영.
@xavis.co.kr → @ncue.net, 관리자 토큰 ncue-admin, 런타임 data/ Git 추적 제외.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-26 22:27:48 +09:00

98 lines
4.0 KiB
Plaintext

# 환경
OPS_STATE=PROD # DEV: 개발 | PROD: 운영(임직원 이메일 로그인) | SUPER: 데모·제한 완화 (REAL 은 PROD 와 동일)
PORT=8030
# HTTP 수신 주소 (기본 0.0.0.0 = 모든 인터페이스, 로컬만이면 127.0.0.1)
HOST=0.0.0.0
ADMIN_TOKEN=ncue-admin
PAGE_SIZE=9
# 1=PostgreSQL 단일 소스, 0=data/lectures.json 사용
ENABLE_POSTGRES=1
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=ai_web_platform
DB_USERNAME=xavis
DB_PASSWORD=wkqltm@@00492
# PostgreSQL 백업 (scripts/pg-backup.sh · README 「PostgreSQL 백업 및 복원」)
PG_BACKUP_DIR=/home/xavis/workspace/backup/ai_platform
PG_BACKUP_RETENTION_DAYS=30
PG_BACKUP_SCOPE=all
PG_BACKUP_GLOBALS=1
PG_BACKUP_SUPERUSER=postgres
PG_BACKUP_SUPERUSER_PASSWORD=
# DB 연결이 없거나 실패하면 회의록 AI는 data/meeting-ai.json에 저장됩니다(로컬 개발에 유용).
# 회의 음성 업로드 최대 크기(MB, 기본 300). OpenAI 전사 API는 요청당 약 25MB이므로 초과분은 서버에서 ffmpeg로 분할 후 전사합니다.
MEETING_AUDIO_MAX_MB=300
# prepare-audio → stream-audio JOB 메타(data/meeting-audio-job-meta) TTL(ms). 서버 코드에서 최소·최대 클램프.
# MEETING_AUDIO_JOB_TTL_MS=3600000
ENABLE_PPT_THUMBNAIL=1
ENABLE_VIDEO_THUMBNAIL=1
# VIDEO_THUMB_SEEK_SEC=0.5
THUMBNAIL_WIDTH=1000
THUMBNAIL_MAX_RETRY=2
THUMBNAIL_RETRY_DELAY_MS=5000
THUMBNAIL_EVENT_KEEP=200
THUMBNAIL_EVENT_PAGE_SIZE=50
[인증 메일 정보]
BASE_URL=https://ai.xavis.co.kr # 메일 속 링크에 사용
AUTH_SECRET=ncue-admin # 세션 서명 (ADMIN_TOKEN 폴백 가능)
# OPS(@ncue.net) 이메일 로그인 세션: 기본 0 = 만기 없음(서명상). 브라우저 쿠키는 약 10년마다 갱신 필요할 수 있음
# OPS_SESSION_TTL_DAYS=0
# N일 고정 만료(Asia/Seoul 달력)로 바꾸려면: OPS_SESSION_TTL_DAYS=15
# OPS_SESSION_TZ=Asia/Seoul
# 메일 발송 (선택, 없으면 콘솔에 링크만)
SMTP_HOST=gw.xavis.co.kr
SMTP_PORT=25
SMTP_SECURE=0
SMTP_USER=spark_ai
SMTP_PASS=!xavis2026
SMTP_FROM=spark_ai@ncue.net
[채팅 기능 정보]
# 채팅 기능용 API 키
# OpenAI: https://platform.openai.com/api-keys
OPENAI_API_KEY=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
# 선택: UI의 gpt-5.4 / gpt-5-mini에 대응하는 실제 Chat Completions 모델 ID (미설정 시 gpt-4o / gpt-4o-mini)
OPENAI_MODEL_DEFAULT=gpt-5-mini
OPENAI_MODEL_MINI=gpt-5-mini
# OpenAI Responses API 내장 웹 검색(기본 on). 끄려면 아래 주석 해제 후 0
# OPENAI_WEB_SEARCH=0
# 웹 검색 위치 힌트(선택)
# OPENAI_WEB_SEARCH_COUNTRY=KR
# OPENAI_WEB_SEARCH_CITY=
# OPENAI_WEB_SEARCH_REGION=
# OPENAI_WEB_SEARCH_TIMEZONE=Asia/Seoul
# gpt-4o 전사 API: 요청당 오디오+토큰 한도 → ffmpeg 분할 길이(초). 짧을수록 안전(호출 수 증가)
OPENAI_TRANSCRIBE_SEGMENT_SEC=30
# Anthropic Claude (claude-*): https://console.anthropic.com/
CLAUDE_API_KEY=
# Google Gemini (gemini-*): https://aistudio.google.com/apikey
GENAI_API_KEY=
[회의록 기능 정보]
# 임직원 명단(회의록 인명 정규화). 기본 data/meeting-employee-names.txt 한 줄에 한 이름(또는 쉼표 구분)
# MEETING_EMPLOYEE_NAMES_FILE=./data/meeting-employee-names.txt
# 0 이면 전사→명단 퍼지 매칭 블록 비활성화
# MEETING_NAME_NORMALIZATION=1
# 관리자 토큰일 때 회의록 AI 등에 쓸 가상 사용자 이메일 (미설정 시 dev@ncue.net)
EETING_DEV_EMAIL=spark_ai@ncue.net
# 선택: OpenAI 회의록 음성 전사 모델 (미설정 시 앱 기본 gpt-4o-transcribe)
OPENAI_WHISPER_MODEL=gpt-4o-transcribe
MEETING_DEV_EMAIL=spark_ai@ncue.net
[경영성과 대시보드]
DASHBOARD_MENU_ALLOWED_EMAILS=hmjin@ncue.net,dsyoon@ncue.net
# 가이드봇·WM 메뉴 허용 OPS 이메일(쉼표 구분). 관리자(adminMode)는 항상 허용.
# GUIDE_BOT_MENU_ALLOWED_EMAILS=dsyoon@ncue.net
# 업무 체크리스트 AI 카드·API 허용 OPS 이메일(기본 dsyoon@ncue.net, 관리자 예외 없음).
# TASK_CHECKLIST_ALLOWED_EMAILS=dsyoon@ncue.net