subaru-hello / Zeroken

一軒目に飲むお酒と飲む順番を提供するアプリ
5 stars 0 forks source link

フロントエンドのロジックをバックエンドに寄せたい #119

Closed subaru-hello closed 2 years ago

subaru-hello commented 2 years ago

概要

下記処理をバックエンドに移す

https://github.com/subaru-hello/Zeroken/blob/005a8b0ac8860707f9aa0f0312e204eb084feede/app/frontend/pages/Analyze.vue#L336

詳細

現状、診断ロジックを全てフロントに任せてしまっている。本来、フロントはデータの「表示」という責務、バックはデータの「保存・加工」という責務を持っている。そのため、現状のままだと、フロントの動きが重くなる可能性がある。だから、Analyze.vueに書いた診断ロジックをフロントからバックに移植させていきたい。

診断フロー

フロントからpostする値

TODO

不要なテーブルをドロップ(MyShuchedules,AlcoholAnalyzes,Relationships)

テーブル設計の見直しに伴い、不要なテーブルを削除する

必要なテーブルの作成

AnalyzeResults 診断結果を保存するテーブル

Questions 質問内容を保存するテーブル

Answers

Descriptions 診断結果の説明を書く

Alcohols

Favorites

AlcoholInVein アルコール体内血中濃度を保存するテーブル

下記公式を作成するために、0.04を保存する。

   let AlcoholStrongness =
        sumResult > 3 ? 4 : sumResult > 0 ? 3 : sumResult === 0 ? 2 : sumResult > -3 ? 1 : 0; //4: 酒豪, 3: やや酒豪, 2: 普通, 1: やや下戸, 0: 下戸
      let Nomivation = this.nextMotivation; //flesh: 0, tipsy: 1, heavy_drunk: 2
      let alcoholInVein =
        AlcoholStrongness === 4 && Nomivation === 0
          ? 0.04

AnalyzeResultsがこの数値を引っ張り、concernsにあるsumPointsとnext_motivation、alcohol_strongnessを組み合わ背、最終的に下記式が出来上がる。

  let coefficient = 833;
      let yourWeight = this.weight;
      let totalAlcoholAmount = yourWeight * coefficient * alcoholInVein;

ER図

変更前 Image from Gyazo

変更後 Image from Gyazo

コントローラーにapiを作成(AnalyzeResults,Questions,Answers,Descriptions,Alcohols)

postmanでjsonのレスポンス、リクエストの反応を確認する。

診断ロジックをコントローラーに移す

下記の処理を全てコントローラで行うようにする。できるかな、、

  1. app/frontend/pages/Analyze.vue https://github.com/subaru-hello/Zeroken/blob/005a8b0ac8860707f9aa0f0312e204eb084feede/app/frontend/pages/Analyze.vue#L336
subaru-hello commented 2 years ago

変更

値の保存、加工の流れを下記の流れに変更したい。

流れ

subaru-hello commented 2 years ago

129 に引き継ぎ