22a02be937
NCP Object Storage(S3 호환) 기반 파일 업로드/폴더 관리 기능을 백엔드에 추가한다. - 스토리지 계층(common/storage): presign 기반 업로드/다운로드 URL 발급 래퍼 - 드라이브 모듈: 폴더 CRUD, 파일 presign 업로드→complete→다운로드, 이름변경/삭제 - 엔티티 3종: drive_folders(폴더 트리), drive_files(객체 메타), project_folder_links(프로젝트 공유) - 마이그레이션 AddDriveTables: 3개 테이블 + 인덱스/외래키 생성 - stale pending 파일 정리 @Cron(매시) 추가 - env/docker-compose: OBJECT_STORAGE_* 주입(비시크릿은 루트, ACCESS/SECRET 키는 backend env) - 의존성: @aws-sdk/client-s3, @aws-sdk/s3-request-presigner 추가 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
54 lines
2.6 KiB
Bash
54 lines
2.6 KiB
Bash
# ==========================================
|
|
# 백엔드 고유 설정 (development)
|
|
# 루트 .env 에서 주입하지 않는 값만 여기에 둔다.
|
|
# DB/Redis/CORS/포트/AI_TIMEOUT_MS 는 docker-compose 가 루트 .env.development 에서 주입.
|
|
# .example 을 복사해 만들고 실제 값으로 채운다. (커밋 금지)
|
|
# ==========================================
|
|
|
|
# ==========================================
|
|
# JWT / 인증 토큰
|
|
# ==========================================
|
|
# 시크릿은 강력한 랜덤 문자열로 교체:
|
|
# node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"
|
|
JWT_ACCESS_SECRET=change-me-access-secret
|
|
JWT_REFRESH_SECRET=change-me-refresh-secret
|
|
JWT_ACCESS_TTL=15m
|
|
JWT_REFRESH_TTL=14d
|
|
|
|
# ==========================================
|
|
# 앱 URL (리다이렉트)
|
|
# ==========================================
|
|
# APP_API_URL : 백엔드 공개 주소(/api 포함). 인증 메일 링크 생성용. 미설정 시 localhost:3100/api 폴백.
|
|
# FRONTEND_URL: 프론트 공개 주소. 인증 완료·소셜 로그인 후 리다이렉트. 미설정 시 CORS_ORIGIN→localhost:5273 폴백.
|
|
APP_API_URL=http://localhost:3100/api
|
|
FRONTEND_URL=http://localhost:5273
|
|
|
|
# ==========================================
|
|
# 소셜 로그인 (OAuth)
|
|
# ==========================================
|
|
# 각 제공자 콘솔 발급 키. CLIENT_ID 가 비면 해당 소셜 로그인 비활성.
|
|
# CALLBACK_URL 은 콘솔 등록값과 정확히 일치해야 함(/api 포함).
|
|
KAKAO_CLIENT_ID=change-me-kakao-rest-api-key
|
|
KAKAO_CLIENT_SECRET=change-me-kakao-client-secret
|
|
KAKAO_CALLBACK_URL=http://localhost:3100/api/auth/kakao/callback
|
|
GOOGLE_CLIENT_ID=change-me-google-client-id
|
|
GOOGLE_CLIENT_SECRET=change-me-google-client-secret
|
|
GOOGLE_CALLBACK_URL=http://localhost:3100/api/auth/google/callback
|
|
|
|
# ==========================================
|
|
# AI 에이전트 (Claude)
|
|
# ==========================================
|
|
# CLAUDE_API_KEY: Anthropic API 키. 미설정 시 AI 기능 비활성.
|
|
# CLAUDE_MODEL : 모델 ID. 미설정 시 claude-sonnet-4-6.
|
|
CLAUDE_API_KEY=change-me-claude-api-key
|
|
CLAUDE_MODEL=claude-sonnet-4-6
|
|
|
|
# ==========================================
|
|
# 드라이브 (NCP Object Storage) — 시크릿
|
|
# ==========================================
|
|
# NCP 콘솔 → 마이페이지 → 인증키 관리(또는 서브계정)에서 발급한 키.
|
|
# endpoint/region/bucket 은 루트 .env 에서 docker-compose 가 주입한다.
|
|
# 미설정 시 드라이브 기능만 비활성화되고 앱은 정상 부팅된다.
|
|
OBJECT_STORAGE_ACCESS_KEY=change-me-ncp-access-key
|
|
OBJECT_STORAGE_SECRET_KEY=change-me-ncp-secret-key
|