chore(backend): 예시 env 에 AI 코스 설정 항목 추가 #17

Open
ttipo wants to merge 1 commits from chore/ai-env-example into main
Owner

무엇을 · 왜

AI 코스 생성 설정이 예시 env 에 없어서, 실제 env 에 무엇을 적을 수 있는지 코드를 읽어야 알 수 있었다.

  • backend/.env.development.example · backend/.env.production.example 에 AI 설정 9개를 빈 값으로 더했다.
    • AI_PROVIDER · AI_COURSE_MODEL · AI_CONDITION_MODEL · AI_COURSE_EFFORT · AI_CONDITION_EFFORT ·
      AI_DAILY_LIMIT_GUEST · AI_DAILY_LIMIT_MEMBER · AI_DAILY_BUDGET_USD · AI_TIMEOUT_MS
    • 키마다 기본값과 받는 값을 주석으로 적었다. 비어 있으면 코드 기본값(코스 Sonnet 5.5 · 조건 해석 Haiku 5.5 · effort low · 하루 2 · 5회 · $3 · 30초)을 쓰므로, 예시를 그대로 옮겨도 동작이 바뀌지 않는다.
    • 값을 적으면 코드 기본값이 바뀌어도 그 값이 이기므로 "바꿀 때만 적는다"고 적었다(#16 에서 코스 기본 모델을 바꿨다).
    • 운영 예시에는 ANTHROPIC_API_KEY 필수 · AI_PROVIDER=fake 면 기동 실패 · 비용 상한은 출시 전에 정한다는 말을 더했다.
    • ANTHROPIC_API_KEY · PUBLIC_DATA_SERVICE_KEY · KOPIS_SERVICE_KEY 는 이미 예시에 있어 손대지 않았다.
  • 설계 §11 의 위치 칸을 루트 .env → compose 에서 backend/.env.{env} 로 고쳤다. compose 가 이 값들을 백엔드에 넘기지 않아 루트 .env 에 적으면 쓰이지 않는다.

확인 방법

  • 빈 값은 env.validation.ts 의 readString 이 '설정 안 함'(undefined)으로 읽어 검사를 통과하고, CourseSettings 도 기본값을 쓴다.
  • 더한 키 18개(파일마다 9개)는 모두 값이 비어 있고, 기존 줄은 지우거나 바꾸지 않았다(git diff -U0 로 확인).
  • CI 는 백엔드 예시 파일을 쓰지 않는다(Flutter 잡만 flutter/.env.example 을 복사한다).

영향 범위

  • backend — 예시 env 파일 2개(코드 변경 없음)
  • frontend
  • flutter
  • docker / 인프라
  • 규칙 문서(.claude/)

공유 계약: 바뀌지 않는다.

체크리스트

  • 린트/분석 통과 (Warning 0) · 변경 영역 테스트 통과 — 코드 변경 없음
  • 주석 한국어, 매직 넘버·하드코딩 문자열 없음
  • 사용자 노출 실패는 모두 에러 코드와 함께 처리 — 해당 없음
  • 에러 코드를 바꿨다면 npm run sync:error-codes 실행 후 생성 파일까지 커밋 — 바꾸지 않았다
  • 민감정보 미커밋 (*.example 값은 placeholder) — 더한 항목은 모두 빈 값이다
  • 로그에 비밀번호·토큰·요청 본문 전체가 남지 않음 — 해당 없음

🤖 Generated with Claude Code

## 무엇을 · 왜 AI 코스 생성 설정이 예시 env 에 없어서, 실제 env 에 무엇을 적을 수 있는지 코드를 읽어야 알 수 있었다. - `backend/.env.development.example` · `backend/.env.production.example` 에 AI 설정 9개를 **빈 값**으로 더했다. - `AI_PROVIDER` · `AI_COURSE_MODEL` · `AI_CONDITION_MODEL` · `AI_COURSE_EFFORT` · `AI_CONDITION_EFFORT` · `AI_DAILY_LIMIT_GUEST` · `AI_DAILY_LIMIT_MEMBER` · `AI_DAILY_BUDGET_USD` · `AI_TIMEOUT_MS` - 키마다 기본값과 받는 값을 주석으로 적었다. 비어 있으면 코드 기본값(코스 Sonnet 5.5 · 조건 해석 Haiku 5.5 · effort low · 하루 2 · 5회 · $3 · 30초)을 쓰므로, 예시를 그대로 옮겨도 동작이 바뀌지 않는다. - 값을 적으면 코드 기본값이 바뀌어도 그 값이 이기므로 "바꿀 때만 적는다"고 적었다(#16 에서 코스 기본 모델을 바꿨다). - 운영 예시에는 `ANTHROPIC_API_KEY` 필수 · `AI_PROVIDER=fake` 면 기동 실패 · 비용 상한은 출시 전에 정한다는 말을 더했다. - `ANTHROPIC_API_KEY` · `PUBLIC_DATA_SERVICE_KEY` · `KOPIS_SERVICE_KEY` 는 이미 예시에 있어 손대지 않았다. - 설계 §11 의 위치 칸을 `루트 .env → compose` 에서 `backend/.env.{env}` 로 고쳤다. compose 가 이 값들을 백엔드에 넘기지 않아 루트 `.env` 에 적으면 쓰이지 않는다. ## 확인 방법 - 빈 값은 `env.validation.ts` 의 `readString` 이 '설정 안 함'(undefined)으로 읽어 검사를 통과하고, `CourseSettings` 도 기본값을 쓴다. - 더한 키 18개(파일마다 9개)는 모두 값이 비어 있고, 기존 줄은 지우거나 바꾸지 않았다(`git diff -U0` 로 확인). - CI 는 백엔드 예시 파일을 쓰지 않는다(Flutter 잡만 `flutter/.env.example` 을 복사한다). ## 영향 범위 - [x] backend — 예시 env 파일 2개(코드 변경 없음) - [ ] frontend - [ ] flutter - [ ] docker / 인프라 - [ ] 규칙 문서(.claude/) > **공유 계약**: 바뀌지 않는다. ## 체크리스트 - [x] 린트/분석 통과 (Warning 0) · 변경 영역 테스트 통과 — 코드 변경 없음 - [x] 주석 한국어, 매직 넘버·하드코딩 문자열 없음 - [ ] 사용자 노출 실패는 모두 에러 코드와 함께 처리 — 해당 없음 - [ ] 에러 코드를 바꿨다면 `npm run sync:error-codes` 실행 후 생성 파일까지 커밋 — 바꾸지 않았다 - [x] 민감정보 미커밋 (`*.example` 값은 placeholder) — 더한 항목은 모두 빈 값이다 - [x] 로그에 비밀번호·토큰·요청 본문 전체가 남지 않음 — 해당 없음 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ttipo added 1 commit 2026-11-12 10:45:39 +09:00
chore(backend): 예시 env 에 AI 코스 설정 항목 추가
CI / 에러 코드 SSOT 동기화 검사 (pull_request) Waiting to run
CI / Backend (lint · test · e2e · build) (pull_request) Successful in 12m11s
CI / Frontend (lint · type-check · test) (pull_request) Has started running
a0c507a350
AI 설정(AI_PROVIDER · 모델 · effort · 하루 횟수 · 비용 상한 · 제한 시간)이 예시 파일에 없어서,
실제 env 에 무엇을 적을 수 있는지 코드를 읽어야 알 수 있었다. 키와 기본값 설명을 빈 값으로 적어 둔다.
비어 있으면 코드 기본값을 쓰므로 예시를 그대로 옮겨도 동작이 바뀌지 않는다.

설계 §11 은 이 설정들이 루트 .env 에서 compose 로 넘어간다고 적었지만 compose 는 넘기지 않는다.
backend/.env.{env} 에 적는 것으로 고쳤다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Some checks are pending
CI / 에러 코드 SSOT 동기화 검사 (pull_request) Waiting to run
CI / Backend (lint · test · e2e · build) (pull_request) Successful in 12m11s
CI / Frontend (lint · type-check · test) (pull_request) Has started running
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin chore/ai-env-example:chore/ai-env-example
git checkout chore/ai-env-example
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ttipo/wandergo#17