Closed subaru-hello closed 2 years ago
値の保存、加工の流れを下記の流れに変更したい。
[x] フロントで作成したtast_answersは、TastAnswerテーブルへ保存、weight,next_motivationはAnalyzeResultへ保存
frontからの送信順序を変更
[x] AnalyzeResultで、現在のユーザーが作成した最新のTastResultを呼び、pluckで値だけ取得する。その後、alcohol_strongness,total_alcohol_amountを作成する。
[x] AnalyzeResultテーブルのカラムは、next_motivation,total_alcohol_amount,alcohol_strongness,descriptionの4つに変更
[x] Alcoholモデルにalcohol_amountカラムを追加。alcohol_amountにはalcohol_percentageとamount_per_glass(一杯あたりの量)を掛け合わせたものを記載する。
[x] Alcohol#indexでは、現在のユーザーが作成した最新のAnalyzeResultを呼び、そこにあるtotal_alcohol_amountカラムをもとに配列内へお酒をpushする
[x] view側でAlcohol#indexをgetし、表示させる
概要
下記処理をバックエンドに移す
https://github.com/subaru-hello/Zeroken/blob/005a8b0ac8860707f9aa0f0312e204eb084feede/app/frontend/pages/Analyze.vue#L336
詳細
現状、診断ロジックを全てフロントに任せてしまっている。本来、フロントはデータの「表示」という責務、バックはデータの「保存・加工」という責務を持っている。そのため、現状のままだと、フロントの動きが重くなる可能性がある。だから、Analyze.vueに書いた診断ロジックをフロントからバックに移植させていきたい。
診断フロー
フロントからpostする値
バックで作成する値
TODO
不要なテーブルをドロップ(MyShuchedules,AlcoholAnalyzes,Relationships)
テーブル設計の見直しに伴い、不要なテーブルを削除する
必要なテーブルの作成
AnalyzeResults 診断結果を保存するテーブル
alcohol_strongness(お酒の強さ) integer(enum) お酒の強さを数字で持たせる concernsにsumResultを用意する。 sumResult > 3 ? 4 : sumResult > 0 ? 3 : sumResult === 0 ? 2 : sumResult > -3 ? 1 : 0; //4: 酒豪, 3: やや酒豪, 2: 普通, 1: やや下戸, 0: 下戸
next_motivation(一軒目の気分) integer(enum) 一軒目の気分を数字で持たせる
total_alcohol_amounts yourWeight(paramsで受け取る保存はしない。) coefficient(AnalyzeResults class内に定義する) AlcoholInVein/percentage
alcohol_first 一杯目を持たせる
alcohol_second 2杯目を持たせる
alcohol_third 3杯目を持たせる
alcohol_forth 4杯目を持たせる
Questions 質問内容を保存するテーブル
Answers
question_id 質問と紐づける
choice enum 回答項目を記入する(いつも、時々、全くない)
point 項目ごとの値(1を選択したら10、2を選択したら-0.1などを返すようになる。)
Descriptions 診断結果の説明を書く
Alcohols
Favorites
AlcoholInVein アルコール体内血中濃度を保存するテーブル
下記公式を作成するために、0.04を保存する。
AnalyzeResultsがこの数値を引っ張り、concernsにあるsumPointsとnext_motivation、alcohol_strongnessを組み合わ背、最終的に下記式が出来上がる。
ER図
変更前
変更後
コントローラーにapiを作成(AnalyzeResults,Questions,Answers,Descriptions,Alcohols)
postmanでjsonのレスポンス、リクエストの反応を確認する。
診断ロジックをコントローラーに移す
下記の処理を全てコントローラで行うようにする。できるかな、、