# SHI eVCP ## 마이그레이션 1. 마이그레이션을 위한 최소 압축 ```bash # zip 은 심볼릭 링크 정보가 누락되는 문제 있음 # zip -r archive_$(date +%Y%m%d_%H%M%S).zip . -x "node_modules/*" "public/*" ".next/*" ".git/*" "tmp/*" "temp/*" # h 옵션 필수임. 심볼릭링크 날려먹으면 node_modules 내부에서 문제생김. tar -czhvf archive_$(date +%Y%m%d_%H%M%S).tar.gz --exclude="node_modules" --exclude="public" --exclude=".next" --exclude=".git" --exclude="tmp" --exclude="temp" . ``` 2. 전체 압축 ```bash # zip -r archive_$(date +%Y%m%d_%H%M%S).zip . -x ".git/*" # 1단계 상위 디렉토리에서 실행 tar -czhf ./archive_$(date +%Y%m%d_%H%M%S).tar.gz \ --exclude=".git" \ --exclude="public" \ --exclude=".next" \ -C ./evcp . # .git 경로 제외 압축 tar -czhf ./archive_$(date +%Y%m%d_%H%M%S).tar.gz --exclude=".git" \-C ./evcp . # 전달용 tar -czhf ./archive_$(date +%Y%m%d_%H%M%S).tar.gz \ --exclude=".next" \ --exclude="public/*.zip" \ -C ./evcp . ``` 3. 압축 해제 ```bash # 원본 구조 그대로 바로 풀기 tar -xzvf archive_[date].tar.gz # 특정 경로에 풀기 tar -xzvf archive_20240101_123456.tar.gz -C /path/to/directory # 압축파일 미리보기 tar -tzvf archive_20240101_123456.tar.gz # 특정 파일만 압축 해제하기 tar -xzvf archive_20240101_123456.tar.gz path/to/specific/file ``` - `-x`: 압축 해제 (e**x**tract) - `-z`: gzip 압축 해제 - `-v`: 압축 해제 과정 출력 (생략 가능) - `-f`: 파일 이름 지정 ## 실행 1. 종속성 설치 `npm i` 2. pdfTron 라이브러리 복사 `@/public/pdftronWeb` 경로에 `core`, `ui` 폴더를 복사 - `cp -r node_modules/@pdftron/webviewer/public/ public/pdftronWeb/` 3. 실행 `npm run dev` ## 로컬 실행을 위한 DB 준비 1. postgres 17 버전을 준비 (환경변수에 따라 계정 및 데이터베이스 생성) 2. drizzle-kit 으로 ORM to Database 처리 3. 환경변수 선택을 위한 dotenv-cli 설치 `npm i -g dotenv-cli` development: ```bash npx dotenv -e .env.production -- npx drizzle-kit push ``` production: ```bash npx dotenv -e .env.development -- npx drizzle-kit push ``` 3. 필요시 seeding 진행 (`@/db/` 경로 참조, drizzle 문서 확인) ## 주의사항 - 개발한 부분과 관련없는 부분에 대해 포매팅 변경사항을 만들지 마세요. - 자동 포맷 기능을 종료해두세요 (vscode, prettier, biome 등) - formatOnSave 옵션을 비활성화하는 설정이 `.vscode/settings.json` 설정에 작성되어 있습니다. ## 협업전략 - main, dev 브랜치에 다이렉트 푸시 X (PR 사용) - features 브랜치에서 새로운 브랜치 생성하기 ### github 사용하기 1. 조직 내 팀에 개발 인원 추가 2. 개발 인원은 깃허브 로그인 후 클론 & 작업 내역 PR 인증 절차는 HTTPS, SSH 등 특정 방식으로 제한하고 있지는 않으며, 적절한 방법으로 진행하시면 됩니다. 예시 상황: AWS EC2 - CentOS 에서 크레덴셜 셋업하기 > ```bash > # GH 설치하기 > # 저장소 파일 다운로드 > sudo curl -L https://cli.github.com/packages/rpm/gh-cli.repo -o /etc/yum.repos.d/gh-cli.repo > > # 저장소 활성화 및 설치 > sudo yum install -y gh > > # 인증 처리하기 > gh auth login # 이후 CLI를 통해 인증처리 진행 > ``` [gh cli에 대해 알아보기](https://github.com/cli/cli) ## SAML 2.0 SSO (For Knox Portal) # === [시작] SSO 설정 === # ! SSO Redirect 주소로 활용되며, 상단에서 적절한 URL을 쓴다면 이 변수는 주석처리할 것 # NEXTAUTH_URL="http://60.101.108.100" # SAML 2.0 SP로서 신청할 때 기입하는 사항 # 메타데이터 XML에서 추출 가능하나, 개발 편의성을 위해 추출로직 제거하고 환경변수에 하드코딩함 ### sp_metadata.xml ### ```bash SAML_SP_ENTITY_ID="SP 측 ID(사전 정의됨)" SAML_SP_CALLBACK_URL="SP 측이 콜백을 받을 주소(사전 정의됨)" # POST SAML_SP_ACS_BINDING_PRIMARY="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" # Redirect SAML_SP_ACS_BINDING_SECONDARY="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" SAML_SP_AUTHN_REQUESTS_SIGNED=false #(사전 정의됨) SAML_SP_WANT_ASSERTIONS_SIGNED=false #(사전 정의됨) ### idp_metadata.xml ### SAML_IDP_ENTITY_ID="(수신한 메타데이터 기준으로 추출)" SAML_IDP_SSO_URL="(수신한 메타데이터 기준으로 추출. 이 위치로 브라우저는 사용자를 리다이렉트함)" SAML_IDP_CERT="BASE64로 인코딩된 IDP의 CERT" SAML_ENCRYPTION_METHOD="CERT 암호화 기법" ```