コンテンツにスキップ

料金表の規則の書き方

{
"months": 24,
"dimension": { "slot": "home", "default": "house" },
"courses": [
{ "key": "c10g", "name": "そらネット 10G", "monthly": { "house": 6050, "mansion": 5390 }, "freeMonths": 4, "freeLabel": "実質0円" }
],
"courseRules": [
{ "when": { "slot": "remote", "eq": true }, "course": "c10g", "reason": "在宅勤務があるので、速さと安定性を優先" }
],
"defaultCourse": { "course": "c10g", "reason": "いちばん人気のコース" },
"options": [],
"discounts": [],
"benefits": [],
"labels": { "total": "ネット料金", "separate": "スマホ代の割引" },
"required": [{ "label": "世帯の人数", "slots": ["household"] }]
}
項目 内容
months 合計を出す期間(か月)
dimension 月額が変わる区分を決める条件と、分からないときに仮定する区分
courses コース。monthly は区分ごとの月額(区分がなければ { "default": 月額 })。freeMonths は月額がかからない月数
courseRules 上から順に当てはめ、最初に合ったコースを選びます
defaultCourse どの規則にも合わないときのコース
options { key, name, monthly, when, reason }。条件に合えば加えます
discounts { key, name, perUnitMonthly, unitsSlot, unit, maxUnits, separate, reason }。条件の数(value)に比例する割引。separate: true は請求が別の割引で、合計に足しません
benefits { key, name, when, reason }。還元などの特典。合計には足しません
labels 合計の見出し(total)と、請求が別の割引の見出し(separate)
required 「まだ分からない条件」として示すもの。slots のどれかが分かれば、分かったことにします
書き方 意味
{ "slot": "remote", "eq": true } はい/いいえの条件が「はい」
{ "slot": "home", "eq": "house" } 選択肢の条件が「戸建て」
{ "slot": "usage", "in": ["remote", "gaming"] } 選択肢の条件が、このどれか
{ "slot": "household", "gte": 3 } 選択肢の数(value)が 3 以上。lte は以下
{ "slot": "household", "known": false } 条件がまだ分からない
{ "course": "c10g" } 選んだコースが c10g(オプション・特典の規則で使います)
{ "dimension": "house" } 区分が house(仮定した区分を含みます)
{ "all": [ … ] } すべて当てはまる
{ "any": [ … ] } どれかが当てはまる
{ "not": { … } } 当てはまらない

例:戸建てで 3 人以上なら Wi-Fi のオプションを加える

Section titled “例:戸建てで 3 人以上なら Wi-Fi のオプションを加える”
{
"key": "mesh",
"name": "まるごとWi-Fi",
"monthly": 550,
"when": { "all": [{ "course": "c10g" }, { "dimension": "house" }, { "slot": "household", "gte": 3 }] },
"reason": "戸建てで家族が多いので、部屋ごとの電波ムラを防ぐ"
}

保存の前に、存在しないコースや条件を指す規則、重複した key、既定の区分の月額の抜けを確かめます。誤りがあれば保存せず、どこが誤りかを示します。