コンテンツにスキップ

従量課金エンジン & リセラー自由価格設定

AegisMesh は、マネージドサービスプロバイダー(MSP)および販売代理店(リセラー)がエンド企業(子テナント)に対してサブスクリプションおよび従量課金サービスを自動提供できる 独自の請求・課金エンジン(Billing Engine) を標準搭載しています。

一時的な接続急増による過大請求を防ぐ「日次ピーク自動集計」や、原価割れを防止しながら粗利益を自動計算する「リセラー自由価格設定」など、エンタープライズの再販ビジネスを支える強固な機能を備えています。


課金エンジンの全体アーキテクチャ

flowchart TD
    subgraph Daily["日次集計ワーカー (Billing Worker)"]
        Cron["定期実行 (毎時/日界)"] --> Scan["テナント別ピア接続数監視"]
        Scan --> HWM["High-Water Mark (日次最大接続数) 判定"]
        HWM --> Snap["不可逆スナップショット台帳 (BillingSnapshot)"]
    end

    subgraph ResellerPricing["リセラー価格・粗利計算"]
        Cost["SuperAdmin 卸売原価 (WholesalePrice)"]
        Retail["ResaleAdmin 小売価格 (RetailPrice)"]
        Margin["粗利 (Reseller Margin) 自動算出"]
        Cost --> Margin
        Retail --> Margin
    end

    subgraph BillingModel["課金モデル (Billing Models)"]
        M_User["user: ユーザー単価課金"]
        M_Dev["device: デバイス単価課金"]
        M_Hyb["hybrid: ユーザー + デバイス課金"]
    end

    Snap --> BillingModel
    BillingModel --> ResellerPricing
    ResellerPricing --> Invoice["月次請求レポート (MonthlyBillingSummary)"]

1. 日次ピーク(High-Water Mark)自動集計ワーカー

瞬間的な接続端末数の変動や一時的なスパイクによるトラブルを防ぐため、AegisMesh は High-Water Mark(日次最大同時接続数) 方式を採用しています。

  • ローカル日界(タイムゾーン考慮):
    テナントごとに設定されたタイムゾーン(例: Asia/Tokyo, America/New_York)に基づき、現地時間の 00:00:00 〜 23:59:59 を1日として集計します。
  • 不可逆スナップショット台帳 (BillingSnapshot):
    各日の最大同時接続ピア数(DailyMaxPeers)およびアクティブユーザー数を確定し、改ざん不能な日次台帳として永続化します。
  • 月次確定ロジック:
    月内の各日ピークの平均、または最大値に基づいて、月末に公平で透明性の高い請求額を自動算出します。

2. 3 種類の課金モデル

テナントの契約形態に合わせて、以下の3つの課金方式をテナント単位で柔軟に切り替えることができます。

課金モデルパラメータ課金対象と特徴想定される顧客層
ユーザー課金userアクティブなIdP/SSOユーザー数に応じた課金(例: 500円/ユーザー)。端末台数は無制限。一般オフィス、営業職主体のテレワーク環境
デバイス課金device接続するピア(端末・サーバー)数に応じた課金(例: 200円/デバイス)。ユーザーアカウントは無料。工場IoT、監視カメラ、無人サーバー、キオスク端末
ハイブリッド課金hybridユーザー基本料 + 端末追加料の複合型課金。複数端末(PC+スマホ+タブレット)を併用する組織

3. リセラー自由価格設定 & 粗利自動計算

リセラー(ResaleAdmin)は、自社が管轄する子テナントに対して自由にエンドユーザー向け小売価格を設定できます。

原価割れ防止セーフガード

  • SuperAdmin 卸売原価 (WholesalePrice): プラットフォーム全体の卸価格。
  • リセラー小売価格 (UserUnitPrice, PeerUnitPrice): リセラーが顧客に請求する価格。
  • 自動バリデーション: リセラーが誤って卸売原価を下回る価格を設定しようとした場合、APIが 400 Bad Request を返却し、逆ザヤ(赤字販売)をシステム的に阻止します。
  • 粗利益の自動可視化: ダッシュボード上で「売上高 - 原価 = 粗利益(マージン率)」がリアルタイムにグラフ表示されます。

4. 翌月1日適用リセラー移管予約 (Model B)

契約途中での販売店変更や管轄リセラーの移管において、月中の日割り計算トラブルや重複請求を防ぐため、AegisMesh では Model B(翌月1日 00:00:00 UTC 自動適用予約モデル) を採用しています。

sequenceDiagram
    autonumber
    actor RA as ResaleAdmin A (旧代理店)
    participant API as AegisMesh API
    actor RB as ResaleAdmin B (新代理店)
    participant Worker as 月初移管バッチ (00:00 UTC)

    RA->>API: テナント移管予約を申請 (POST /transfer)
    API-->>RA: 移管ステータス: "transfer_scheduled" (コード 200)
    Note over API: 当月中は旧代理店 A の価格・請求のまま運用継続
    Worker->>API: 翌月1日 00:00:00 UTC 到来
    API->>API: テナントの管轄リセラーを B に自動切り替え
    API-->>RB: 移管完了通知: "tenant.reseller.transferred" (コード 201)
    Note over API: 翌月利用分から新代理店 B の価格体系で課金開始

5. 請求 API リファレンス

月次請求サマリーレポート取得

GET /api/admin/billing/reports?month=2026-10
Authorization: Bearer <Admin_Token>

レスポンス例

{
"month": "2026-10",
"tenants": [
{
"tenant_id": "tenant-corp-alpha",
"tenant_name": "株式会社アルファ",
"model": "user",
"user_count": 45,
"peak_peers": 82,
"wholesale_total": 13500,
"retail_total": 22500,
"margin": 9000
}
]
}

翌月移管予約 API

POST /api/admin/tenants/{id}/transfer
Content-Type: application/json
{
"new_reseller_id": "reseller-tokyo-partner",
"effective_date": "next_month_first_day"
}