バックエンドAPIサーバー for Saleperson Application
- Node.js
- TypeScript
- Express
- Prisma
- PostgreSQL
- Docker
- Cloud Run
- Cloud SQL
src/
├─ services/
│ ├─ dify/
│ │ ├─ DifyService.ts # Difyサービスのメインクラス
│ │ ├─ errors/
│ │ │ └─ DifyError.ts # Dify専用のエラークラス
│ │ ├─ types/ # 型定義ディレクトリ
│ │ │ ├─ index.ts
│ │ │ ├─ DifyCommonTypes.ts # 共通の型定義
│ │ │ ├─ DatasetTypes.ts # データセット関連
│ │ │ ├─ DocumentTypes.ts # ドキュメント関連
│ │ │ ├─ SegmentTypes.ts # セグメント関連
│ │ │ └─ RetrievalTypes.ts # 検索・取得関連
│ │ ├─ repositories/ # API実装ディレクトリ
│ │ │ ├─ DatasetRepository.ts
│ │ │ ├─ DocumentRepository.ts
│ │ │ └─ ...Repository.ts
│ │ └─ index.ts
│ └─ ... 他のService
npm install
cp .env.example .env
# .envファイルを編集
./cloud-sql-proxy --port 5432 saleperson-app:asia-northeast1:saleperson-app-db
docker compose up
npx prisma migrate dev
DATABASE_URL=postgresql://{DB_USER_NAME}:{DB_PASSWORD}@localhost:{DB_PORT}/${DB_NAME}
DATABASE_URL=postgresql://{DB_USER_NAME}:{DB_PASSWORD}@local/{DB_NAME}?host=/cloudsql/{DB_CONNECTION_NAME}
変数名 | 値 |
---|---|
NODE_ENV | production |
DATABASE_URL | postgresql://postgres:xxxxx@local/saleperson-app-db?host=/cloudsql/saleperson-app:asia-northeast1:saleperson-app-db |
DB_USER | postgres |
DB_NAME | saleperson-app-db |
CLOUD_SQL_CONNECTION_NAME | saleperson-app:asia-northeast1:saleperson-app-db |
PROJECT_ID | saleperson-app |
以下の変数をSecret Managerで管理:
- cloud-sql-connection-name
- database-url
- db-name
- db-password
- db-user
- node-env
- product-id
- 必要なAPIの有効化:
- Cloud Run API
- Cloud Build API
- Container Registry API
- Cloud SQL Admin API
- サービスアカウントの設定
- Cloud SQLインスタンスの作成
./cloud-sql-proxy --port 5432 saleperson-app:asia-northeast1:saleperson-app-db
docker compose up
docker compose -f docker-compose.local.yml up
docker compose -f docker-compose.local.yml up postgres -d
DATABASE_URL=postgresql://postgres:{DB_PASSWORD}@localhost:5432/saleperson-app-db npx prisma migrate dev
docker compose -f docker-compose.local.yml up