<!-- https://unlockos.io/ja/manual/ticket-books -->

# 回数券

## 概要

**回数券**は、複数回分の宿泊・利用をまとめて先払いで購入してもらうための商品です。管理画面の **回数券** メニュー（`/ticket-books`）から、施設ごとに「〇回綴り・¥〇〇」や「〇時間分・¥〇〇」という回数券商品を作成・管理できます。

回数券はプロモーション機能の一種（`grantReservations` タイプ）で、**単位（回数 / 時間）** を選んで発行します。

- **回数**単位: 「予約1件＝1枚消費」。ホテル1泊やタイムスロット1件など、1予約あたり定額の商品向け
- **時間**単位: 「予約の所要時間分を消費」。時間貸し（会議室・シェアオフィス）で、予約1件あたりの利用時間が可変な商品向け

作成した回数券は、ゲストが会員アプリから購入すると、有効残高として発行されます。ゲストは対象プランを予約する際にその残高を消費して代金0円で予約できます。

> **対応状況（2026-08）**: 商品の作成・管理（このページ）、会員アプリからの購入、予約時の充当、キャンセル時の復元、失効前のメール通知まで一連の業務フローが実装されています。

---

## 詳細機能

## 機能1: 回数券の作成

1. 管理画面の左メニューから **回数券** を開く
2. **回数券を作成** ボタンをクリック
3. 以下の項目を入力する

| 項目 | 説明 |
|------|------|
| **名前** | 回数券の商品名（例: 「10泊綴りチケット」「50時間パス」）。一覧画面や購入時に表示されます |
| **説明（任意）** | 補足説明。空欄可 |
| **単位** | **回数** or **時間**。回数=1予約で1枚消費、時間=予約の所要分を消費（詳細は[機能7](#機能7-単位回数--時間)を参照） |
| **綴り枚数 / 時間数** | 単位が「回数」なら1冊あたりの利用回数、「時間」なら1冊あたりの利用可能時間数（いずれも1以上の整数） |
| **販売価格（円）** | 冊全体の販売価格（0以上の整数、税込・税別の扱いは施設の運用に準拠） |
| **有効期間** | 購入日を起点とした失効までの期間。**1ヶ月（30日） / 3ヶ月（90日） / 6ヶ月 / 1年 / 2年** から選択。短期（30日/90日）は日数固定、6ヶ月以降は月末換算 |
| **購入上限（枚数）** | 1人のゲストが購入できる上限数。**必ず1以上が保存され、無制限にはできません。** 新規作成時は「1」が入った状態で開き、空欄や0のまま保存しても「1人1枚」になります（詳細は[機能4](#機能4-購入上限の期間-max_per_user_window)を参照） |
| **購入上限の期間** | 上記の上限をリセットする周期。**通算（リセットなし） / 暦年ごと / 暦月ごと / 365日ごと / 30日ごと** から選択（詳細は[機能4](#機能4-購入上限の期間-max_per_user_window)を参照） |
| **対象プラン** | この回数券が使える予約プランを絞り込み。未選択で施設の全プラン対象。指定した場合はそのプランのみで充当可能（詳細は[機能5](#機能5-対象プラン)を参照） |
| **販売中にする** | ONにすると購入可能な状態になります。OFFのままだと下書き（非公開）として保存されます |

4. **保存** をクリックすると回数券が作成されます

## 機能2: 回数券の編集

1. 回数券一覧から編集したい回数券のカードをタップする
2. **編集** タブで各項目を編集し、**保存** をクリックする

> **綴り枚数・販売価格・有効期間を編集しても、既に販売済み（購入済み）の回数券には影響しません。** 各購入は購入した時点の条件（枚数・価格・有効期間）で確定し、Stripeの決済データにスナップショットとして保持されます。編集は「これから購入する人向けの条件」を変更するものです。

> **販売済み回数券は「単位」を変更できません。** 一度でも購入が発生した回数券商品は、単位セレクタが自動的にロックされ、「回数」↔「時間」の変更が禁止されます（既存購入者の残高集計と新規購入者の残高集計が別単位になると整合しなくなるため）。変更したい場合は、その商品を **下書き** に戻して販売停止し、新しい単位で別の商品を作り直してください。

> **削除済みの対象プラン**: 対象プランに紐づけた予約プランが後から削除された場合、編集画面の対象プラン欄にそのプランが赤色の「(削除済みプラン)」chip として表示されます。× ボタンでクリアしてください。放置すると、その回数券は「削除済みプランのみ対象」として扱われ、どの予約でも充当できなくなります。

## 機能3: 一覧画面の見方

回数券一覧には、作成済みの回数券がカード形式で表示されます。

- **名前**と、「**{枚数}枚綴り / ¥{価格}**」というサマリーが表示されます
- 右側のバッジで状態がわかります
  - **販売中**: ゲストが購入できる状態
  - **下書き**: 非公開（購入不可）の状態
- カードをタップすると編集画面に移動します

回数券を停止したい場合は、編集画面で **販売中にする** のチェックを外して保存してください。**現在の管理画面には回数券を削除するボタンはありません。** 販売を止めたい場合は下書き状態（非公開）に切り替えて運用してください。

## 機能4: 購入上限の期間 (max_per_user_window)

**購入上限（枚数）** と **購入上限の期間** は、1人のゲストがこの回数券を何回まで購入できるかを制御する組み合わせ設定です。

| 項目 | 意味 |
|------|------|
| **購入上限（枚数）** | 1人のゲストが（下記の周期内で）購入できる上限回数。1以上の整数のみで、無制限は選べません |
| **購入上限の期間** | 上限回数をカウントする際のリセット周期（起点）。**通算（リセットなし） / 暦年ごと（毎年1月1日起点） / 暦月ごと（毎月1日起点） / 365日ごと（直近365日のローリングウィンドウ） / 30日ごと（直近30日のローリングウィンドウ）** |

上限に達したゲストがもう一度購入しようとすると、購入手続きが拒否されます。

> **重要な注意（既定値の挙動）**: **回数券に「無制限」はありません。** 「購入上限（枚数）」を空欄や0のまま保存しても、上限1回として保存されます（既定の周期は「通算（リセットなし）」なので、**1人のゲストが生涯に購入できるのは1回だけ**）。この欄を触らずに作成した回数券もこの状態です。複数回購入できるようにしたい場合は、「購入上限（枚数）」に希望する回数を明示的に入力し、必要なら「購入上限の期間」も併せて設定してください。
>
> 新規作成フォームは既定値の「1」が入った状態で開きます（保存される値をそのまま表示するため）。

> **上限は決済成立後の発行タイミングでも再チェックされます。** 以前は購入手続きの開始時（決済前）にしか上限を確認していなかったため、複数のブラウザタブや複数人がほぼ同時に購入を進めると、上限を超えて発行されてしまうことがありました。現在は、Stripeでの決済が成立したあと・回数券を発行する直前にも改めて上限を判定します。このタイミングで上限超過と判定された購入は、**決済が成立していても発行されません**。この状態になったときにゲストへ表示される文言と、施設側で確認すべきことは[トラブルシューティング](#トラブルシューティング)を参照してください。

## 機能5: 対象プラン

「この回数券はどの予約プランで使えるか」を絞り込む設定です。編集画面の **対象プラン** 欄で MultiSelect UI から選択します。

- **未指定（デフォルト）**: 施設内の**全予約プラン**で充当可能
- **1つ以上を指定**: **選択した予約プランのみ**で充当可能（他のプランでは充当されず、通常決済になります）

選択済みプランは青色の chip として表示され、× ボタンで個別に外せます。検索窓でプラン名の絞込も可能です。

> **メンバーシップ専用プラン（¥0）は選択肢に出ません** — 会員特典で無料化される予約に回数券を充当するのは意味がないため、対象候補は有料の予約プランのみに絞られます。

## 機能6: 販売・利用状況（SalesTab）

回数券の詳細画面には、**編集** タブと並んで **販売・利用状況** タブがあります。この回数券の販売実績と、購入者ごとの利用状況を集計表示します。

- **サマリー**（4カード）: 販売数 / 発行枚数（時間の場合は発行時間） / 利用 / 残り
- **購入一覧**: 各購入について
  - 購入者メールアドレスと購入日
  - 「残 / 発行」の残高
  - **単位が「回数」**: ◯ゲージ（塗り＝残り、白抜き＝利用済み）
  - **単位が「時間」**: 残量バー（brand accent 色で残時間を可視化）
  - 「利用 N · 残り M」の内訳表示

失効・キャンセル済みの credit の残高は「残り」から自動的に除外されるので、常に**利用可能な**残高が表示されます。

## 機能7: 単位（回数 / 時間）

回数券作成時に選ぶ **単位** は、消費のカウント方法を決めます。

| 単位 | 消費モデル | 主な用途 |
|------|-----------|---------|
| **回数** | 1予約 = 1枚消費 | 宿泊1泊、タイムスロット予約、貸切枠など「1回いくら」商品 |
| **時間** | 1予約 = 予約の所要時間分を消費（例: 3時間予約なら3時間分） | 会議室・シェアオフィスの時間貸し |

**時間**単位の場合、予約の所要時間が回数券の残時間を超える場合は充当できません（回数券は分割せず、1本の回数券で1予約を賄えないなら通常決済扱い）。ゲスト側のブッキング画面では、STEP3（確定画面）でその予約が回数券で賄えるかどうかが自動判定されます。

## 機能8: 権限

回数券の作成・編集・閲覧には、**施設オーナー以上**の権限が必要です。

| 権限レベル | 回数券へのアクセス |
|-----------|-------------------|
| Organization Owner | 自組織配下の全施設の回数券を管理可能 |
| Facility Owner | 自施設の回数券のみ管理可能 |
| Facility Member | アクセス不可 |

---

## 機能9: 失効前のメール通知

回数券の残高（credit）には有効期限があります。ゲストが失効に気づかず使い忘れることがないよう、失効が近づくと自動的にメールで通知します。

| タイミング | 件名 |
|-----------|------|
| 失効30日前 | 【失効予告】回数券の有効期限まで 30 日を切りました |
| 失効7日前 | 【まもなく失効】回数券の有効期限が近づいています |
| 失効当日 | 【本日失効】回数券の有効期限のお知らせ |

- 毎日 **朝7時（JST）** に自動チェックが走り、該当するゲストの登録メールアドレス宛に送信されます
- 1人のゲストが同じ日に複数の回数券（credit）の期限を迎える場合、1通のメールにまとめて送られます
- メール本文には、失効日・残数（回数券は「残N回」、時間単位は「残N時間」）・会員ページへのリンクが記載されます
- 同じ回数券・同じ閾値（30日前/7日前/当日）で二重に送信されることはありません
- **この通知はあくまで事前案内であり、残高そのものを変更したり失効を早めたりはしません。** 失効判定は予約充当時・残高照会時にその都度行われます
- 現バージョンでは、通知メールの文面は**日本語固定**です（ゲストの表示言語設定（英語等）に関わらず日本語で届きます）

---

## 機能10: 店頭で発券（受付での現金販売）

回数券の詳細画面に **「店頭で発券」** ボタンが表示され、会員アプリを使わずに受付でその場で回数券を販売・発券できます。

| 条件 | 挙動 |
|---|---|
| 回数券が **販売中**（下書きでない）、かつ価格が0円より大きい | ボタンが表示される |
| 下書き（非公開）の回数券、または価格が0円の回数券 | ボタンは表示されません |

1. 回数券の詳細画面（**販売・利用状況** タブと同じ画面）の右上にある **「店頭で発券」** をクリック
2. 受領モーダルが開きます。まず **発券先のメールアドレス** を入力します（**会員登録済みのメールアドレスが必要**です。残高はそのアカウントに紐づきます）
3. 受領額（既定は回数券の価格）・受領手段（現金／銀行振込／その他）・受領日時・メモを入力し、**「受領を記録する」** をクリック
4. 受領が記録され、その場で回数券の残高が発券されます

> **なぜメールアドレスが必要なのか。** 回数券の残高はアカウントに紐づく仕組みで、受付にはメールアドレスしか分からないため、サーバー側で会員登録済みのアカウントに解決してから発券します。**未登録のメールアドレスでは発券できません**（該当するエラーは下記参照）。事前に会員登録を案内してください。

> **購入上限・販売期間・完売の扱いはオンライン購入と全く同じ規則です。** 店頭発券もこれらの制約を通過できなければ拒否されます。

### 店頭発券に固有のエラー

| エラー | 意味 | 対応 |
|---|---|---|
| このメールアドレスの会員が見つかりません | 入力したメールアドレスが会員登録されていない | 先に会員登録（会員アプリでのサインアップ）を案内し、登録後に改めて発券する |
| このお客様は購入上限に達しています | [機能4](#機能4-購入上限の期間-max_per_user_window)の購入上限（枚数・周期）に抵触 | 上限の設定・そのゲストの購入履歴を確認する |
| この回数券は完売しています | 発行上限に達している | 別の回数券を案内するか、発行上限の設定を見直す |
| この回数券は現在販売期間外です | 有効期間・販売状態の条件を満たしていない | 回数券の設定を確認する |

> **受領は記録済みなのに発券に失敗した場合、代金を再度受け取る必要はありません。** 受領そのものは記録されているため、上限や販売状況を確認したうえで、必要なら返金してください（画面には「受領を記録しましたが、発券できませんでした」と表示されます）。

---

## 業務フローの全体像

回数券に関わる一連の流れは、次のステップで構成されます。**すべて実装済み** です。

1. **① 商品作成（このページ）**: 管理者が回数券メニューで単位・枚数（時間数）・価格・有効期間・購入上限・対象プランを設定して商品を作成
2. **② ゲストによる購入（会員アプリ）**: ゲストが会員アプリ（`member.unlockos.io`）のホーム画面・ログイン前のランディングページ、またはマイページから遷移する回数券ページ（`/{施設スラッグ}/tickets`）で該当商品を選び、Stripe 決済で購入します。**決済はアプリ内の画面で完結し、外部の決済ページへは遷移しません**（会員プランの申込みと同じ画面構成。以前は別画面へのリダイレクトでした）。購入の開始にはログインが必要です。決済完了後、会員の残高として発行されます。会員から見た画面の詳しい操作は [ホーム画面（会員アプリ）の「機能8: 回数券の購入」](member-home.md#機能8-回数券の購入) を参照してください
   - **②' 受付での現金販売（店頭発券）**: ゲストがオンラインで購入する代わりに、受付が回数券詳細画面の「店頭で発券」から現金・銀行振込で販売し、その場で発券することもできます（詳細は[機能10](#機能10-店頭で発券受付での現金販売)を参照）
3. **③ 予約時の充当（Booking アプリ）**: 有効な回数券残高を持つゲストが対象プランを予約する際、ブッキング画面 STEP3 に「**回数券で充当**」トグルが表示されます。選択すると1回分（または所要時間分）を消費して代金0円の予約として成立します。オプション商品（追加サービス）は回数券の対象外で、選択すると別途課金されます
4. **④ キャンセル時の扱い**: 回数券で作成した予約をキャンセルした場合、**そのプランのキャンセルポリシーで「全額返金」になるタイミング**であれば残高が元に戻り、再度別の予約に使えます。キャンセル料が 1% でも発生するタイミング（部分返金・返金なし）では残高は失効（消費されたまま）します。回数券は分割できないため、部分返金に相当する扱いができないためです。キャンセルポリシーが未設定の施設では常に「全額返金」扱いなので残高は戻りますが、**チェックイン時刻を過ぎてからのキャンセルはポリシーに関わらず失効**します
5. **⑤ 失効前の通知**: 失効30日前・7日前・当日の3段階で、ゲストにメールでお知らせします（詳細は[機能9](#機能9-失効前のメール通知)を参照）

---

## よくある質問

### Q: 作成した回数券を今すぐゲストに販売できますか？

はい。**販売中** にした商品は、ゲストが会員アプリ（`member.unlockos.io`）のホーム画面や回数券ページから購入できます。決済完了後、会員の残高として自動的に発行され、対象プランの予約時に充当できます。

### Q: 単位を「回数」で作った回数券を、後から「時間」に変えられますか？

**販売実績（購入者）がまだ0件なら変更可能**です。1件でも購入が発生した回数券は、単位セレクタが自動でロックされ変更できなくなります（既存購入者の残高が「N回」で発行されているのに新規購入者が「N時間」になると、販売集計や残高比較が壊れるため）。

単位を切り替えたい場合は、その商品を **下書き** にして販売停止し、新しい単位で別商品として作成してください。

### Q: 対象プランを指定した場合、他のプランでは充当できませんか？

はい。対象プランを1つ以上指定した回数券は、その **選択したプランでのみ** 充当されます。他のプランを予約する際は「回数券で充当」トグルが表示されず、通常決済になります。全プラン対象にしたい場合は対象プラン欄を空のままにしてください。

### Q: 対象プランに指定した予約プランを削除したらどうなりますか？

編集画面の対象プラン欄に、そのプランが赤色の「(削除済みプラン)」chip として表示されます。× ボタンでクリアしてください。放置すると、その回数券は「削除済みプランのみ対象」となり、どの予約でも充当できなくなります（購入済み残高は無効化されるので、返金対応などが必要になります）。

### Q: 時間単位の回数券で、5時間残っているのに 6時間の予約に充当できないのはなぜ？

回数券は分割せず、**1本の回数券で1予約を賄える** ことが充当の条件です。5時間残の回数券で 6時間予約を全額充当することはできず、その予約は通常決済になります。ゲスト側のブッキング画面 STEP3 で自動的に判定され、賄えない場合は「回数券で充当」トグルが表示されません。

### Q: 綴り枚数や価格を後から変更したら、既に購入済みのゲストにも影響しますか？

影響しません。購入時点の条件（枚数・価格・有効期間）が決済データにスナップショットとして固定されるため、編集は「これから購入する人向け」の条件変更になります。

### Q: 回数券を削除したいのですが、ボタンが見当たりません

現在の管理画面には削除ボタンはありません。販売を停止したい場合は、編集画面で **販売中にする** のチェックを外して下書き状態に切り替えてください。すでに購入（利用）実績がある回数券は、データ整合性のため今後も物理削除はできない設計になっています。

### Q: 「購入上限（枚数）」を空欄のままにすると、ゲストは何回でも買えますか？

**いいえ。** 空欄や0で保存すると「1人あたり生涯1回まで」に制限されます（[機能4](#機能4-購入上限の期間-max_per_user_window)を参照）。**購入上限を無くす設定は用意されていません。** 何度でも購入できるようにしたい場合は、購入上限（枚数）に十分大きい回数を明示的に入力してください。

### Q: 回数券で予約した後にキャンセルすると、枚数は戻りますか？

そのプランの**キャンセルポリシーで「全額返金」になるタイミング**にキャンセルした場合は、消費したクレジットが戻り、他の予約に再利用できます。キャンセル料が発生するタイミング（部分返金・返金なし）では、クレジットは戻らず消費されたままになります。回数券は 1 枚を分割できないため、「半分だけ返す」ができないからです。

判定は予約プランのキャンセルポリシーと同じ段を見るので、キャンセル確認画面に表示される返金の扱いと必ず一致します。

| キャンセルのタイミング | 返金 | 回数券 |
|---|---|---|
| 全額返金の段 | 全額返金 | ✅ 戻る |
| 部分返金の段（例: 50%） | 部分返金 | ❌ 戻らない |
| 返金なしの段 | 返金なし | ❌ 戻らない |
| チェックイン時刻を過ぎた後 | ポリシーに従う | ❌ 戻らない |

**キャンセルポリシーが未設定**の場合は「全額返金」扱いになるため、チェックイン時刻前であればクレジットは戻ります。チェックイン時刻を過ぎてからのキャンセル（無断キャンセル）は、ポリシーの設定に関わらず戻りません。

> **キャンセルポリシーの段の読み方に注意**: 「チェックイン前(h)」は**下限**（その時間**以上前**なら、という意味）です。`24時間前 → 100%` の段を 1 つだけ設定すると「24 時間以内は 100%」ではなく「**いつキャンセルしても 100%**」になり、回数券は一切戻らなくなります。「24 時間前を切ったら 100%」にしたい場合は、`24時間前 → 0%` と `0時間前 → 100%` の 2 段を設定してください。設定画面には実際に適用される料率のプレビューが出ます。

**日時変更（予約の短縮）でも同じ判定です。** 時間制の回数券で予約を短くしたとき、余った時間が残高に戻るのは全額返金のタイミングだけです。キャンセル料が発生するタイミングで短縮しても、消費した時間は戻りません（短縮してから取り消す形で失効を回避できないようにするためです）。

### Q: 回数券で予約すると、オプション商品（追加サービス）も無料になりますか？

いいえ。回数券で充当されるのは予約プラン本体の代金のみです。予約時に追加したオプション商品（アドオン）は回数券の対象外で、通常どおり別途課金されます。

### Q: メンバーシップの無料枠と回数券の両方を持っている場合、どちらが優先されますか？

メンバーシップの無料枠（クォータ）が優先されます。無料枠の範囲内で予約できる場合は回数券は消費されず、無料枠を使い切っている（または対象外の）予約に対してのみ回数券が充当されます。

### Q: 回数券の購入・利用は「ご利用履歴」（Go ポータル）に表示されますか？

**いいえ、表示されません。** 回数券の購入、および回数券を使った予約（代金0円）は、現バージョンでは「ご利用履歴」ページの集計対象外です。ゲストは回数券の残高を会員アプリのマイページで確認してください。

### Q: 回数券メニューが表示されません

**回数券** メニューは既定で非表示のベータ機能で、施設単位でのオプトイン（個別有効化）が必要です。表示されない場合や、URLを直接開いてもトップページにリダイレクトされてしまう場合は、サポートに `menu_ticket_books` の有効化をご依頼ください。

### Q: 「店頭で発券」ボタンが表示されません

回数券が **販売中**（下書きでない）か、価格が0円より大きいかを確認してください。下書き状態の回数券や、価格0円の回数券にはボタンが表示されません。

### Q: 店頭発券で「このメールアドレスの会員が見つかりません」と出ます

店頭発券は会員登録済みのメールアドレスにしか発券できません。ゲストがまだ会員アプリでアカウントを作成していない場合は、先に会員登録（サインアップ）を案内してから、改めて発券してください。

---

## トラブルシューティング

### 「決済は完了したのに回数券が発行されていない」とゲストから問い合わせが来た

購入上限（[機能4](#機能4-購入上限の期間-max_per_user_window)）は決済前だけでなく、回数券を発行する直前にも再チェックされます。上限にちょうど達するタイミングで複数の購入手続きが重なった場合、Stripeでの決済自体は成立しても、上限超過と判定された購入は回数券が発行されないことがあります。ゲストの画面に表示される文言で、どちらの状況か見分けられます。

| ゲストへの表示文言 | 状況 | 施設側の対応 |
|-------------------|------|-------------|
| 「上限に達していたため、この回数券を発行できませんでした。お支払いは施設が確認し、返金についてご連絡します」 | 上限超過による**発行拒否**。決済は成立しているが、以後も自動では発行されない | **自動返金はされません。** Stripeの決済記録で該当の支払いを確認し、返金の要否を判断してゲストにご連絡ください |
| 「決済は完了しましたが回数券の発行に失敗しました。時間をおいて残高をご確認ください」 | 上限とは無関係の一時的な処理エラー | バックグラウンドの再処理で解消することがあります。まずは時間をおいてから、ゲストに会員アプリの残高を確認してもらってください |

> **施設オーナーへの自動通知はありません。** どちらのケースも、現状ではゲストからの問い合わせで気づくことになります。

---

## 関連ページ

- [メンバーシップ管理](membership-plans.md)
- [予約管理ダッシュボード](booking.md)
- [ホーム画面（会員アプリ）](member-home.md)
- [マイページ（会員アプリ）](member-mypage.md)
- [チェックイン履歴](checkin-history.md)

---

最終更新: 2026-09-08 - 受付での現金販売「店頭で発券」を追記（機能10、Epic #3421 / #3427）。会員登録済みメールアドレスが必要であること、購入上限・販売期間・完売の判定がオンライン購入と共通であることを記載

以前の更新: 2026-09-02 - PR #3114（#3105フォローアップ）反映: 購入上限が決済成立後の発行タイミングでも再チェックされるようになったことを機能4に追記し、上限超過で発行が拒否された場合の見分け方と施設側の対応をトラブルシューティングに追加。PR #3107（#3105）反映: 会員アプリでの購入がアプリ内で完結する決済画面に変わったことを業務フローの全体像に追記（詳細は[member-home.md](member-home.md)へリンク）。PR #3124（#3120）反映: 課金済みで発行拒否された場合と一時的な処理エラーの場合でゲストへの表示文言が異なることをトラブルシューティングに追記

以前の更新: 2026-08-21 - #2809（購入上限の文言を実挙動に合わせて修正: プレースホルダー「空欄=制限なし」→「空欄=1人1枚」、新規作成の初期値に既定値 1 を表示、「購入上限の期間」を常時操作可能に、周期ラベル「制限なし」→「通算（リセットなし）」）。PR #2374（購入上限（枚数）フィールド追加・既定値が実質1回になる挙動を追記 + 失効前メール通知（30日/7日/当日）を追加）反映。会員アプリの URL 誤記（`app.unlockos.io` → `member.unlockos.io`）を修正。オプション商品は回数券対象外、メンバーシップ無料枠が回数券より優先、ご利用履歴には非表示、の3点を追記

以前の更新: 2026-08-06 - PR #2224 反映（単位=回数/時間 + 対象プラン MultiSelect + 販売後 unit lock + 有効期間 30日/90日追加 + 販売・利用状況タブ + 会員アプリ購入導線）
