Reports

TL;DR 特定のお客さんに割引(クーポン)を発行して請求を安くする機能。核心は「定価は触らず、割引は別管理。実額は Stripe の請求書の数字だけ見せる」。いきなり本番ではなく、土台 → 管理画面で適用 → 実額表示 → 上書き対策 → 1社だけ本番、と安全に一段ずつ進める。0+1 で実用でき、残りは育てる。

目次 §1 やりたいこと §2 なぜ単純じゃないか §3 設計の核心 §4 誰がどう使うか §5 なぜフェーズに分けるか §6 失敗しない歯止め §7 規模感 §8 次にやること
§1 やりたいこと(一言)

特定のお客さんに割引(クーポン)を発行して、その人の請求を安くする。

営業の特別対応、引き留め、お試しの値引きなどで使います。「誰にでも配るキャンペーン」ではなく、運営が相手を選んで当てる、ピンポイントの値引きです。

§2 なぜ単純じゃないのか(今の仕組みの問題)

たとえ話で言うと——

Stripe(決済システム)

= 実際のお財布。クーポン機能はもともと持っている。だから「Stripe で割引を当てる」こと自体はできる。

nanco アプリ

= お財布の中身を見て「定価の値札」をコピーして貼っているだけ。割引しても、この値札は変わらない。

問題はここです。

つまり「割引した、ということを nanco が正しく分かって、正しく見せる」部分が今はまったく無い。そこを作るのが今回の本題です。
§3 設計の核心(いちばん大事な判断)

「定価の値札」は絶対に触らない。割引は “別の付箋” で管理する。

なぜか:定価の値札は、プラン判定・画面表示・アプリ内課金などいろんな所がぶら下がっている土台です。ここを「割引後の実額」に書き換えると、複数割引・期間(1回だけ/毎月/ずっと)・税・日割りが絡んで、アプリ側で請求額を計算し直すことになり、必ずどこかでズレて事故ります。

だから、こうする:
  • 定価はそのまま残す。
  • 割引は専用の置き場(新しいデータの箱)に記録する。
  • 「結局いくら?」は、Stripe が出す請求書の数字をそのまま見せる(nanco が自分で電卓を叩かない)。
これが「絶対に失敗しない」の根っこです。
§4 誰が・どう使うか

誤爆を防ぐ仕掛け(当てる前の確認):

§5 なぜ「フェーズ」に分けるのか

お金まわりは、一度の事故が痛い(過剰請求=信用問題、過少請求=損失)。だから「いきなり全部作って本番」ではなく、安全を確かめながら一段ずつ進めます。各段に「ここまで確認できたら次へ」という関門(ゲート)を置きます。

各フェーズで「何ができるようになるか」

フェーズやること終わると
0. 土台づくり 割引を記録する箱と操作ログを用意。Stripe への書き込みはまだしない。テスト環境で「割引を読めて・保存できる」だけ確認 安全に始める助走が完了
1. 管理画面から当てられる
(最小で使える形)
運営が選んだクーポンを対象のお客さんに当てる/外せる。画面は「定価+クーポン適用中」と表示。テスト環境で「当てる・外す・二重に当たらない」を確認 ここで実際に “使える” ようになる
2. 実際いくらかを正しく表示 Stripe の請求書から実額を取って見せる 「結局いくら払うの?」が正確に出る
3. 上書き仕組みにも割引を分からせる 定期同期が割引を消さないようにする 長く運用しても崩れない
4. 本番でまず1社だけ慎重に 全顧客でなく、まず1社で実地確認してから広げる 本番事故ゼロで展開
最低限 “使える” のは フェーズ 0+1。フェーズ 2〜4 は「正確さ」と「丈夫さ」の上積みなので、育てながらでOKです。
§6 「絶対に失敗しない」ための歯止め(要点)
§7 規模感(正直に)

これは「ちょっとした追加」ではなく、お金まわりを慎重に作る、複数段階のエンジニア案件です。ただし段階を分けてあるので、各段は小さく・安全。フェーズ 0+1 まで作れば運営は実用でき、残りは様子を見ながらで構いません。

§8 次にやること(選べます)