El Salvador Checklist
엘살바도르 현지 환경에서 시스템 또는 프로젝트를 배포/운영할 때 필수적으로 확인해야 하는 항목들을 정리한 체크리스트입니다.
Domain
각 환경별 도메인과 연결 정보입니다.
| 환경 | 도메인 | 브랜치 | 비고 |
|---|---|---|---|
| DEV | - | - | 현재 미사용 (Feature 서버만 운영) |
| STAGE | *.stage.ihfb.ai | aidt-stage-sv | ABCD, supervisor, aprendes 등 기관별 접속 |
stage.ihfb.ai | → aprendes.stage.ihfb.ai | 307 Redirect | |
| PROD | *.ihfb.ai | aidt-prod-sv | 기존 방식 사용 가능 |
aprendes.edu.gob.sv | aidt-prod-sv | ||
aprendes.ihfb.ai | aidt-prod-sv | ||
ihfb.ai | aidt-prod-sv | ||
www.ihfb.ai | → ihfb.ai | 308 Redirect |
PROD/STAGE 환경과 무관하게, URL Host에
aprendes문자열이 포함되어 있다면 기관 선택 로그인 기능을 사용할 수 있습니다.
Environment Variables
민감한 환경변수는 dotenv-vault를 통해 안전하게 관리됩니다. 로컬에서 .env 파일을 직접 작성하지 않고, dotenv-vault에서 환경별 설정을 가져와 사용합니다.
dotenv-vault 사용법
apps/school-pt 디렉토리에서 진행합니다.
-
로그인
npx dotenv-vault logindev 계정 또는 회사 계정으로 로그인합니다.
-
환경변수 확인
npx dotenv-vault@latest open웹 UI에서 현재 설정된 환경변수들을 확인할 수 있습니다.
-
환경변수 가져오기
pull명령어를 통해 특정 환경의 변수를.env파일로 가져옵니다.npx dotenv-vault@latest pull ${환경} .env- Stage:
aidtStageSv - Production:
aidtProdSv
사용 예시:
# Stage 환경 변수 가져오기 npx dotenv-vault@latest pull aidtStageSv .env # Production 환경 변수 가져오기 npx dotenv-vault@latest pull aidtProdSv .env - Stage:
주요 환경변수 설명
엘살바도르 배포 시 반드시 확인해야 할 주요 환경변수입니다.
| 환경변수명 | 설명 | 비고/예시 |
|---|---|---|
NEXT_PUBLIC_HANDWRITING_WEB_SOCKET_URL | 손필기 기능 관련 웹소켓 주소 | |
NEXT_PUBLIC_STUDY_EVENT_LOG_API_URL | 학습 이벤트 로그 API 주소 | |
NEXT_PUBLIC_SESSION_API_URL | 세션 상태(User/Group/Connection) 조회 API 주소 | |
NEXT_PUBLIC_APP_SESSION_API_URL | 앱 세션 로그(Heartbeat 등) 전송 API 주소 | |
NEXT_PUBLIC_LOGIN_BASE_URL | 통합 로그인(Hub) 서버 주소 | OAuth 인증 등 |
NEXT_PUBLIC_WEB_SOCKET_URL | 메인 웹소켓 연결주소 | 화면동기화/출석/실시간 데이터 동기화 등 |
NEXT_PUBLIC_GRAPHQL_URL | 메인 graphql 요청 주소 | |
NEXT_PUBLIC_ROOT_DOMAIN | 와일드카드 도메인 환경에서 서브도메인 식별용 루트 도메인 | *.ihfb.ai → ihfb.ai*.stage.ihfb.ai → stage.ihfb.ai |
NEXT_PUBLIC_DEFAULT_SUBDOMAIN | 기본 서브도메인 (멀티 테넌시 환경에서 서브도메인 없을 시 사용) | ihateflyingbugs, supervisor |
NEXT_PUBLIC_GOES_PORTAL_URL | GOES(엘살바도르 교육부) AI 튜터 포털 주소 | |
NEXT_PUBLIC_APP_ENV | 애플리케이션 실행 환경 | production, development, stage |
NEXT_PUBLIC_DEFAULT_LOCALE | 애플리케이션 기본 로케일 | es-SV, ko |
NEXT_PUBLIC_PROJECT_TARGET | 빌드 타겟 프로젝트 식별자 | schoolpt.sv, mildang (mildang/school 서비스 구분) |
i18n (Translations)
프로젝트는 LinguiJS를 사용하여 다국어를 지원합니다. 자세한 내용은 Lingui 공식 문서를 참고하세요.
배포 전 다국어 번역 파일을 최신화해야 합니다.
참고: 번역 컴파일 과정은 build 시 (배포 시) 자동으로 포함되므로, 로컬 개발 시에는
codegen명령어를 사용하여 컴파일된 결과물을 사용할 수 있습니다.
-
번역 추출 (Extract)
코드에서 변경된 다국어 키를 추출하여
.po파일을 업데이트합니다.turbo i18n:extract -
번역 파일 확인
명령어 실행 후 변경된
.po파일들을 git에 포함시켜야 합니다.apps/school-pt/locales/es-SV.poapps/school-pt/locales/ko.poapps/mildang-ui/locales/es-SV.poapps/mildang-ui/locales/ko.po
.ts파일은 컴파일 결과물이므로 git에 포함되지 않습니다 (.gitignore). -
번역 컴파일 (Compile)
추출된 번역을 애플리케이션에서 사용할 수 있는 형태로 변환합니다.
turbo i18n:compile
Date & Timezone
엘살바도르(GMT-6)와 한국(GMT+9)은 15시간의 시차가 존재하므로, "오늘" 날짜를 계산할 때 주의가 필요합니다.
i18n.locale을 사용하는 getTodayByLocale 유틸리티를 활용하세요.
사용자의 로케일과 타임존을 기반으로 정확한 날짜를 반환하는 유틸리티 함수입니다.
- 위치:
apps/mildang-ui/src/utils/getTodayByLocale.ts - 용도: 대시보드 날짜 필터 기본값, 오늘의 미션 조회 등 "오늘" 날짜가 필요한 곳에서 사용.
// 사용 예시
import { getTodayByLocale } from 'utils/getTodayByLocale';
// 현재 접속한 사용자의 타임존 기준으로 오늘 날짜 반환
const today = getTodayByLocale(i18n.locale);