---
# System prepended metadata

title: 見積もりAPI

---

# 見積もりAPI

## エンドポイント
/estimate 【POST】

## リクエストボディ(JSON)
```jsonld
{
    "game_id": 1,
    "price": "150000"
}
```

## 処理のフロー
1. マザーボード、SSD、ケース、電源、OSはDBから取得したデータ(最安値?)メモリは固定の容量(予算が8万↑の場合16GB、20万↑の場合32GB)?で仮置きして処理を進める。なお互換性も考慮しながら仮置きするパーツを決定していく事。


SQLAlchemyを使ったテーブル結合の例

```
Session.query(cpus, motherboads).join(motherboads, motherboads.socket == cpu.socket).all()
```


2. 仮置きしたパーツを予算から引き使用できる予算を計算する。
150000 - 50000 = 100000(使用できる予算)
3. gamesテーブルに保存している予算分配割合データと公式推奨スペックを取得する
### 予算分配データ
cpu_ratio 0.3
cpu_ratio 0.7
4. 画像のように割合を繰り上げながらCPUとGPUを算出していく
パーツのアップグレードは価格÷性能で算出した値と基に行う
元々の割合を2倍、3倍…n倍した際に、値が小数部から1繰り上がったとき、部品のグレードを上げる

![](https://i.imgur.com/PQygKIp.jpg)


5. 公式推奨スペックと今回算出したパーツの性能をgpu_benchmarksテーブル、cpu_benchmarksテーブルから取得し、下記グラフ画像のように出力の上base64でエンコードして返却する

![](https://i.imgur.com/dcvo1id.png)


## レスポンスボディ(JSON)
全体図
```
{
性能比較画像配列,
算出したPC構成配列,
推奨スペック配列
}
```


# 追記

予算をユーザから受け取り
ユーザの予算をCPU＆GPU の予算 その他パーツの予算に分割する
CPU、GPUの割合をgamasテーブルから取得する
分割後の予算からCPUとGPUの割合を限度額に性能の高い順からCPUとGPUを取得する
分割後のその他パーツの予算から互換性を考慮しながら最安値のパーツを見積もる

12/07追記
その他パーツの決め方
### 前提
CPUとGPUは算出済みである

## 以降の記述例
A.hoge→B.hoge
### 説明
A.hogeが決まれば、B.hogeが決まる(互換性)


## 見積もり時に考慮すべき内容
CPU.TDP+GPU.TDP<電源.容量 ※1 ×
CPU.ソケット=マザーボード.ソケット　〇
マザーボード.ソケット=CPUクーラー.対応ソケット　〇
マザーボード.対応メモリ枚数>メモリ.枚数　〇
マザーボード.対応メモリ周波数>メモリ.周波数　×
cpu.TDP<CPUクーラー.対応TDP　〇
マザーボード.メモリータイプ=メモリー.メモリータイプ　〇
マザーボード.サイズ.=ケース.サイズ　〇
マザーボード.m2=SSD.タイプ　〇
電源.サイズ=ケース.サイズ　〇

上記のその他パーツでの見積もりで余った予算をもとにCPUとGPUの再計算を行う

## 注記

※1

GPUが65W GPUが200Wであった場合
65+200+75(その他パーツ分(固定))=340Wが消費電力と考える

電源は変換効率などで全ての容量を使えるわけではないため、0.7倍した値を実容量とする
上記の例であれば
容量×0.7 > 340を電源データ取得時の基準とすること