本書は、本番環境を新規に構築する、または第三者が同じ手順で再現することを想定した手順です。
| 項目 | 推奨 |
|---|---|
| アプリホスティング | Vercel(Next.js ネイティブ対応) |
| データベース | MongoDB Atlas |
| ドメイン | Vercel ドメイン設定、または DNS で CNAME |
| 外部 API | Shopee Open Platform、DeepL / Google(翻訳・任意) |
- MongoDB Atlas でプロジェクト・クラスタを作成。
- Database Access でユーザー作成(ユーザー名・パスワード)。
- Network Access で接続元を許可。Vercel からの接続の場合は 0.0.0.0/0(全世界)を許可するか、Vercel の固定 IP 機能を利用するか運用方針に合わせて設定。
- Connect → アプリ用に URI をコピー。
<password>部分を実パスワードに置換。 - 環境変数
MONGODB_URIに設定。データベース名はMONGODB_DB(例:chapee)で指定。
- GitHub 等にリポジトリをプッシュし、Vercel で Import。
- Framework Preset: Next.js(自動検出)。
- Build Command:
npm run build(既定)、Output: 既定。 - Environment Variables に、リポジトリの
.env.exampleを参照し、本番値をすべて入力(後述「環境変数一覧」)。 - Deploy 実行。
Vercel プロジェクトの Settings → Domains でドメインを追加し、DNS プロバイダ側で CNAME / A レコードを指示どおり設定。
| 変数名 | 必須 | 説明 |
|---|---|---|
MONGODB_URI |
必須 | MongoDB 接続 URI |
MONGODB_DB |
任意 | DB 名。未設定時は chapee |
AUTH_SECRET |
強く推奨 | JWT 署名用。未設定時は開発用デフォルトが使われ本番では危険 |
SHOPEE_PARTNER_ID |
必須 | Shopee Partner ID |
SHOPEE_PARTNER_KEY |
必須 | Shopee Partner Key |
SHOPEE_REDIRECT_URL |
必須 | OAuth 成功後のリダイレクト先。Shopee コンソールの Redirect URL と完全一致(末尾スラッシュ含む) |
CRON_SECRET |
強く推奨 | Cron 用 API の Authorization: Bearer 用。未設定だと Cron エンドポイントが無防備になる可能性 |
SHOPEE_PARTNER_API_HOST |
任意 | Partner API ベース URL を上書き |
SHOPEE_PARTNER_API_ENV |
任意 | sandbox / test-stable 等(テスト環境用) |
SHOPEE_PARTNERS_JSON |
任意 | 複数国パートナー設定(1行 JSON) |
DEEPL_API_KEY |
任意 | DeepL(DB 未設定時のフォールバック) |
DEEPL_API_URL |
任意 | 既定: https://api-free.deepl.com |
GOOGLE_TRANSLATE_API_KEY |
任意 | Google 翻訳(同上) |
- Shopee Open Platform でアプリを作成。
- Redirect URL に
https://<your-domain>/api/shopee/callback(SHOPEE_REDIRECT_URLと同一)を登録。 - Webhook URL に
https://<your-domain>/api/shopee/webhookを登録(チャットのプッシュ受信用)。 - チャット関連の Push(例:
webchat_pushcode 10)を有効化。
リポジトリの vercel.json に定義されている Cron を確認。デプロイ後、Vercel の Settings → Cron Jobs で実行状況を確認。
GET /api/cron/auto-reply… 期限到来の自動返信送信。Authorization: Bearer ${CRON_SECRET}(CRON_SECRET設定時)。GET /api/shopee/refresh-tokens… トークン更新。同様に Bearer 保護(実装を確認)。POST /api/shopee/sync… 会話同期(ダッシュボード・手動から呼び出し)。
注意: vercel.json に トークン更新 用の Cron が未記載の場合は、外部スケジューラ(cron-job.org 等)から同 URL を定期呼び出しするか、vercel.json にエントリを追加してください。
https://<your-domain>/loginにアクセスし、ログインできること。- 設定で Shopee 連携(OAuth)が完了し、ダッシュボードで会話が表示されること。
POST /api/shopee/sync(手動またはダッシュボード)で同期が成功すること。- チャット詳細でメッセージ取得・送信ができること。
- Webhook(任意): テストメッセージ送信後、ログまたは DB で反映を確認。
| 現象 | 確認 |
|---|---|
| MongoDB 接続エラー | MONGODB_URI、IP 許可、ユーザー権限 |
| Shopee OAuth 失敗 | Redirect URL の完全一致(http/https、末尾 /) |
| 401 on Cron | CRON_SECRET と Authorization ヘッダ |
| チャットが空 | トークン期限・GET /api/shopee/sync・Webhook 到達性 |
MongoDB Atlas の Snapshot または mongodump で定期バックアップを推奨。手順は Atlas ドキュメントに従う。