# 本機依賴（Docker Compose）

Gateway 啟用 **Notification** / **Member OTP** 需要：

| 服務 | 用途 | 預設埠 |
|------|------|--------|
| **MongoDB** | `notifications`、`notification_dlq` collections | 27017 |
| **Redis** | 冪等、配額、異步重試佇列、member OTP challenge | 6379 |
| MailHog（選用） | 本機 SMTP 測試 | 1025 / 8025 |
| OpenLDAP（`make ldap-up` / `make k6-up`） | ZITADEL LDAP IdP 本機目錄 | 389 |
| ZITADEL（`make k6-up`） | OIDC / Social / LDAP 登入 | 8080 |

Mongo **不需要**事先手動建 collection；應用程式寫入時會自動建立。索引由 init script 或 `make mongo-index` 建立。

## 快速開始

```bash
# 1. 啟動 Mongo + Redis
make deps-up

# 2.（選用）含 MailHog
make deps-up-smtp

# 3. 確認索引（首次 docker volume 通常已由 init 建立；可再跑一次保險）
make mongo-index

# 4. 啟動 Gateway（使用 etc/gateway.dev.yaml）
make run-dev
```

## Mongo collections

| Collection | 模組 | 說明 |
|------------|------|------|
| `notifications` | notification | 發送紀錄、冪等 |
| `notification_dlq` | notification | 超過 MaxRetry 的死信 |

索引定義見 [`deploy/mongo/init/01-gateway-indexes.js`](mongo/init/01-gateway-indexes.js)，與 Go 的 `Index20260520001UP` 一致。

## 常用指令

```bash
make deps-up        # docker compose up -d mongo redis
make deps-up-smtp   # 再加上 mailhog（profile smtp）
make ldap-up        # 只起 OpenLDAP（profile ldap）
make k6-up          # 全棧含 OpenLDAP + ZITADEL（見 deploy/zitadel、deploy/openldap README）
make ldap-test      # 確認 LDAP 測試帳號 alice/bob
make deps-down      # 停止並移除容器（保留 volume）
make deps-down-v    # 停止並刪除 volume（會清掉 Mongo 資料）
make deps-logs      # 查看 log
make mongo-index    # 手動建立／補齊索引
```

LDAP 本機測試：[deploy/openldap/README.md](openldap/README.md)

## 連線設定

設定說明：[`etc/README.md`](../etc/README.md)

| 檔案 | 用途 |
|------|------|
| [`etc/gateway.yaml`](../etc/gateway.yaml) | 預設，無需 Docker |
| [`etc/gateway.dev.example.yaml`](../etc/gateway.dev.example.yaml) | 範例（可提交） |
| `etc/gateway.dev.yaml` | 本機專用（**勿提交**，見 `.gitignore`） |
