I HATE FLYING BUGS logoFE Chapter

El Salvador Checklist

엘살바도르 현지 환경에서 시스템 또는 프로젝트를 배포/운영할 때 필수적으로 확인해야 하는 항목들을 정리한 체크리스트입니다.

Domain

각 환경별 도메인과 연결 정보입니다.

환경도메인브랜치비고
DEV--현재 미사용 (Feature 서버만 운영)
STAGE*.stage.ihfb.aiaidt-stage-svABCD, supervisor, aprendes 등 기관별 접속
stage.ihfb.aiaprendes.stage.ihfb.ai307 Redirect
PROD*.ihfb.aiaidt-prod-sv기존 방식 사용 가능
aprendes.edu.gob.svaidt-prod-sv
aprendes.ihfb.aiaidt-prod-sv
ihfb.aiaidt-prod-sv
www.ihfb.aiihfb.ai308 Redirect

PROD/STAGE 환경과 무관하게, URL Host에 aprendes 문자열이 포함되어 있다면 기관 선택 로그인 기능을 사용할 수 있습니다.

Environment Variables

민감한 환경변수는 dotenv-vault를 통해 안전하게 관리됩니다. 로컬에서 .env 파일을 직접 작성하지 않고, dotenv-vault에서 환경별 설정을 가져와 사용합니다.

dotenv-vault 사용법

apps/school-pt 디렉토리에서 진행합니다.

  1. 로그인

    npx dotenv-vault login

    dev 계정 또는 회사 계정으로 로그인합니다.

  2. 환경변수 확인

    npx dotenv-vault@latest open

    웹 UI에서 현재 설정된 환경변수들을 확인할 수 있습니다.

  3. 환경변수 가져오기

    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

주요 환경변수 설명

엘살바도르 배포 시 반드시 확인해야 할 주요 환경변수입니다.

환경변수명설명비고/예시
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.aiihfb.ai
*.stage.ihfb.aistage.ihfb.ai
NEXT_PUBLIC_DEFAULT_SUBDOMAIN기본 서브도메인 (멀티 테넌시 환경에서 서브도메인 없을 시 사용)ihateflyingbugs, supervisor
NEXT_PUBLIC_GOES_PORTAL_URLGOES(엘살바도르 교육부) 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 명령어를 사용하여 컴파일된 결과물을 사용할 수 있습니다.

  1. 번역 추출 (Extract)

    코드에서 변경된 다국어 키를 추출하여 .po 파일을 업데이트합니다.

    turbo i18n:extract
  2. 번역 파일 확인

    명령어 실행 후 변경된 .po 파일들을 git에 포함시켜야 합니다.

    • apps/school-pt/locales/es-SV.po
    • apps/school-pt/locales/ko.po
    • apps/mildang-ui/locales/es-SV.po
    • apps/mildang-ui/locales/ko.po

    .ts 파일은 컴파일 결과물이므로 git에 포함되지 않습니다 (.gitignore).

  3. 번역 컴파일 (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);