# FineCure Backend

Node.js + MySQL 기반 백엔드입니다.

## 운영 기준

- 서버 경로: `/var/www/back/finecure-backend`
- 실행 포트: `5701`
- 공개 도메인: `https://api.fincure.officialsite.kr`
- PM2 앱 이름: `finecure-backend`
- DB 호스트: `officialsite.kr:23306`
- DB 스키마: `finecure`

## 로컬 실행

```bash
npm install
npm run dev
```

## 프로덕션 실행

```bash
npm ci --omit=dev
node server.js
```

## GitHub Actions 자동배포

워크플로우 파일:

- [`.github/workflows/deploy.yml`](d:/works/kscompany/finecure-backend/.github/workflows/deploy.yml)

동작 방식:

1. `main` 또는 `live` 브랜치에 push
2. GitHub Actions가 서버에 SSH 접속
3. `/var/www/back/finecure-backend` 에 최신 코드 반영
4. `.env` 생성
5. `npm ci --omit=dev`
6. `python3 scripts/init_database.py`
7. PM2 `finecure-backend` 재기동

필요한 GitHub Secrets:

- `SERVER_HOST`
- `SERVER_USER`
- `SERVER_PORT`
- `SERVER_SSH_KEY`

## 환경변수

예시는 [`.env.example`](d:/works/kscompany/finecure-backend/.env.example)에 있습니다.

운영 기준:

```env
NODE_ENV=production
HOST=0.0.0.0
PORT=5701
DB_HOST=officialsite.kr
DB_PORT=23306
DB_USER=admin
DB_PASSWORD=dlgks~123
DB_NAME=fincure
JWT_SECRET=finecure-prod-jwt-20260330
FRONTEND_URL=http://221.155.112.97:5700,https://fincure.officialsite.kr,http://localhost:5700
TOSS_PAYMENTS_CLIENT_KEY=
TOSS_PAYMENTS_SECRET_KEY=
```

## PM2

설정 파일:

- [`ecosystem.config.cjs`](d:/works/kscompany/finecure-backend/ecosystem.config.cjs)

수동 실행 예시:

```bash
cd /var/www/back/finecure-backend
pm2 startOrReload ecosystem.config.cjs --env production
pm2 save
```

## DB 초기화

초기화 스크립트:

- [`scripts/init_database.py`](d:/works/kscompany/finecure-backend/scripts/init_database.py)

실행 명령:

```bash
python scripts/init_database.py
```

이 스크립트는 아래 작업을 수행합니다.

- `finecure` 스키마 생성
- `users`
- `cases`
- `documents`
- `document_drafts`
- `payments`
- 테이블 코멘트 및 주요 컬럼 코멘트 반영

관리자 계정:

- 이메일: `admin@fincure.officialsite.kr`
- 비밀번호: `admin123`

## Apache 설정

SSL은 부모 호스트에서 처리하고, 이 서버는 Apache `VirtualHost *:80` 로 프록시하는 기준입니다.

파일명 예시:

- `/etc/apache2/sites-available/api.fincure.officialsite.kr.conf`

권장 설정:

```apache
<VirtualHost *:80>
    ServerName api.fincure.officialsite.kr

    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5701/
    ProxyPassReverse / http://127.0.0.1:5701/

    ErrorLog ${APACHE_LOG_DIR}/api-finecure-error.log
    CustomLog ${APACHE_LOG_DIR}/api-finecure-access.log combined
</VirtualHost>
```

적용 명령:

```bash
sudo a2enmod proxy proxy_http
sudo a2ensite api.fincure.officialsite.kr.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
```

## 배포 확인

```bash
pm2 status
pm2 logs finecure-backend --lines 100
curl http://127.0.0.1:5701/api/payment/subscription-status
```
