こんにちは!kossyです!
さて、今回は一つの機能を実装するときに使えるFWめいたものを
ブログに残してみたいと思います。しれっと更新するつもりです。
以下全てサンプルです。
目的(その機能が必要な背景や機能改修方針を記載する)
- 販促のためにポイント付与機能を実装したい
- 既存の機能に大幅な影響を及ぼすことが想定されるので、既存オペレーションとDB設計を念入りに調査し、将来の拡張や仕様変更を見越した設計をする
データ(必要なデータや項目例を記載する、機能改修の場合は既存のtable構造や関連も記載する)
データの役割
ポイントデータ
- ユーザーが自信のアプリからポイントを確認できる
- ユーザーはポイントを商品購入の際に使用できる
- ユーザーはポイントを商品購入の際に獲得できる
商品購入
- ユーザーは商品をカートに入れられる
- ユーザーはカートに入れた商品をまとめて購入できる
- ユーザーはカートに入れずに直接商品を購入できる
管理者機能
- ユーザーに詫び石(ポイント)を配ることができる(create?, update?)
DB
User has_many points
User has_many products
User has_many 購買履歴
User has_many ポイント付与履歴
User has_many ポイント利用履歴
Products has_many 購買履歴
- 他にも必要があれば適宜追加
- ER図もあったほうがいい
依存関係(これから実装する機能であれば、この機能を作成することによる影響を記載する、既存機能であれば、この機能がどの業務・tableに依存しているか等を記載する)
ポイント機能
- ユーザーが商品を購入する際の機能を修正することになると思う
- キャンペーン機能にも考慮が必要
課題
- ポイント失効・キャンペーン・ポイントが使えない商品・ポイントが貯まらない商品等の考慮が必要になる可能性あり
必要な要件や設計観点(CRUDで記載するのが無難。まずは必要要件を書くのもあり)
ポイント機能
- ユーザーが自信のアプリからポイントを確認できる
- ユーザーはポイントを商品購入の際に使用できる
- ユーザーはポイントを商品購入の際に獲得できる
- ポイントは1年間で失効する
- キャンペーン期間中はポイント○倍にする
- ポイントが使えない商品がある
- ポイントが貯まらない商品がある