接骨院・治療院向けCRM設計書(学習用・進行中)

メモとして残しております。設計書です。

要件定義

目的と目標

システムの導入目的

  • 接骨院・治療院の顧客管理と、分析

解決したい課題

  • 利用年齢層に応じたニーズへの対応

対象範囲

システムの利用者(ユーザー層)

  • 接骨院経営者

サービスの対象範囲

  • PC・スマホ・タブレット
  • 顧客管理・支払い金額・施術管理

機能要件

必要な機能

  • 顧客管理、施術履歴管理、メニュー管理、施術メニュー管理など

非機能要件

セキュリティ要件(認証、権限管理)

  • 管理者のみ登録可能、一般ユーザーは閲覧のみとする

運用要件

保守運用の方法

  • さくらレンタルサーバー上にて運用予定

制約事項

技術的制約

  • Laravel9
  • Vue.js3
  • Vuetify
  • TypeScript
  • chart.js
  • Inertia.js
  • MySQL
  • 開発はDockerとVSCode
  • デプロイはさくらのレンタルサーバー

予算・スケジュールの制約

  • 特に無し

基本設計

システム構成

システム全体のアーキテクチャ

  • Web三層アーキテクチャ
  • SPAを基本とする

使用するプラットフォームや技術

  • 要件定義制約事項に同じ

画面設計

各画面の構成やUI/UXの概要(ワイヤーフレーム、遷移図)

  • 作成中

入出力項目

  • 作成中

データ設計

データベースの概要

  • 顧客(cusomers)
  • スタッフ(staffs)
  • 施術メニュー(menus)
  • 施術履歴(顧客・施術メニュー・担当スタッフ・日にち)(histrories)

機能概要設計

各機能の処理フロー

  • 作成中

外部連携仕様

  • 作成中

詳細設計

プログラム設計

各モジュールやクラスの設計

  • 作成中

メソッドや関数の仕様(引数、戻り値、処理内容)

  • 作成中

画面詳細設計

具体的な画面レイアウト(UI設計書)

  • 作成中

入力チェックやバリデーション仕様

  • 作成中

データベース設計

usersテーブル

Laravelデフォルトのものを使用。使わないカラムもありますが、そのままいきます。

カラム名PK / FKUNIQUENOT NULL
idbigInt🔑
namestring
emailstring
email_verified_attimestamp
passwordstring
remember_tokenstring
created_attimestamp
updated_attimestamp

customersテーブル

顧客

カラム名PK / FKUNIQUENOT NULL
idbigInt🔑
last_namestring
first_namestring
last_name_kanastring
first_name_kanastring
postcodestring
addressstring
telstring unique
birthdate
gendertinyInteger
memotext
delete_flgboolean
created_attimestamp
updated_attimestamp

staffsテーブル

従業員

カラム名PK / FKUNIQUENOT NULL
idbigInt🔑
last_namestring
first_namestring
last_name_kanastring
first_name_kanastring
licensestring
delete_flgboolean
created_attimestamp
updated_attimestamp

menusテーブル

施術メニュー

カラム名PK / FKUNIQUENOT NULL
idbigInt🔑
namestring
priceinteger
timeinteger
genre_idbigInt➡️ genres(id)
own_pay_flgboolean
hidden_flgboolean
created_attimestamp
updated_attimestamp

genresテーブル

施術メニューがマッサージか、鍼灸か機械かなど

カラム名PK / FKUNIQUENOT NULL
idbigInt🔑
namestring

menu_historyテーブル

メニューごと(1部位や1メニューごと1レコード)

カラム名PK / FKUNIQUENOT NULL
idbigInt🔑
history_idbigInt➡️ histories(id)
menu_idbigInt➡️ menus(id)
body_partstring
memotext
created_attimestamp
updated_attimestamp

historiesテーブル

施術全体情報(誰が誰に対して行なった 詳細はmenu_historyテーブルで)

カラム名PK / FKUNIQUENOT NULL
idbigInt🔑
customer_idbigInt➡️ customers(id)
staff_idbigInt➡️ staffs(id)
datedatetime
memotext
created_attimestamp
updated_attimestamp

ER図

URL設計

No.名前URLmethodroute-nameVueController
1顧客一覧/customersgetcustomers.indexCustomers/IndexCustomerController@index
2顧客登録画面/customers/creategetcustomers.createCustomers/CreateCustomerController@create
3顧客登録/customerspostcustomers.storeCustomerController@store
4顧客詳細画面/customers/{customer}getcustomers.showCustomers/ShowCustomerController@show
5顧客編集画面/customers/{customer}/editgetcustomers.editCustomers/EditCustomerController@edit
6顧客更新/customers/{customer}putcustomers.updateCustomerController@update
7顧客削除/customers/{customer}deletecustomers.destroyCustomerController@destroy
8顧客検索結果/customersgetapi.searchCustomersApi\searchCustomerController@index
9スタッフ一覧/staffsgetstaff.indexStaff/IndexStaffController@index
10スタッフ登録画面/staffs/creategetstaff.createStaff/CreateStaffController@create
11スタッフ登録/staffspoststaff.storeStaffController@store
12スタッフ詳細画面/staffs/{staff}getstaff.showStaff/ShowStaffController@show
13スタッフ編集画面/staffs/{staff}/editgetstaff.editStaff/EditStaffController@edit
14スタッフ更新/staffs/{staff}putstaff.updateStaffController@update
15スタッフ削除/staffs/{staff}deletestaff.destroyStaffController@destroy
16メニュー一覧/menusgetmenu.indexMenu/IndexMenuController@index
17メニュー登録画面/menus/creategetmenu.createMenu/CreateMenuController@create
18メニュー登録/menuspostmenu.storeMenuController@store
19メニュー詳細画面/menus/{menu}getmenu.showMenu/ShowMenuController@show
20メニュー編集画面/menus/{menu}/editgetmenu.editMenu/EditMenuController@edit
21メニュー更新/menus/{menu}putmenu.updateMenuController@update
22メニュー削除/menus/{menu}deletemenu.destroyMenuController@destroy
23ジャンル一覧/genregetgenre.indexGenre/IndexGenreController@Index
24ジャンル登録画面/genres/creategetgenre.createGenre/CreateGenreController@create
25ジャンル登録/genres/createpostgenre.storeGenreController@store
26ジャンル編集画面/genres/{genre}/editgetgenre.editGenre/EditGenreController@edit
27ジャンル更新/genres/{genre}putgenre.updateGenreController@update
28ジャンル削除/genres/{genre}deletegenre.destroyGenreController@destroy
29施術情報登録画面/histories/creategethistory.createHistory/CreateHistoryController@create
30施術情報登録/historiesposthistory.storeHistoryController@store
31施術履歴一覧画面/historiesgethistory.indexHistory/IndexHistoryController@index
32施術履歴詳細画面/histories/{histories}gethistory.showHistory/ShowHistoryController@show
33施術履歴編集画面/histories/{histories}/editgethistory.editHisotry/EditHistoryController@edit
34施術履歴更新/historiesputhistory.updateHistoryController@update
35施術情報削除/historiesdeletehistory.destroyHistoryController@destroy
36分析画面/analysisgetanalysisAnalysisAnalysisController@index
37分析結果取得/api/analysisgetapi.analysisApi\AnalysisController@index

メモ

施術登録

日付・顧客名・メニューを一覧表示(ジャンル・金額)・施術部位(入力・追加できるようにする)・小計