操作
サポート #2207
未完了
アデ
アデ
在庫管理の年度別集計をリファクタリング
サポート #2207:
在庫管理の年度別集計をリファクタリング
開始日:
2026/01/13
期日:
進捗率:
0%
予定工数:
対象ページURL:
説明
指示内容¶
問題¶
- 管理画面アクセス
- Livewire が state を評価
- Filament が summarizer を呼ぶ
- sum() が 重い SQL を発行
- DB が計算
- PHP が待つ
- Nginx が待つ
- fastcgi_read_timeout 超過
- upstream timed out
やるべき修正(優先度順)¶
1. sum() を view 描画から外せ¶
Blade / Livewire / Summarizer 内で集計 ❌
Controller / Page クラスの mount() で 1回だけ 実行
public int $totalSales;
public function mount()
{
$this->totalSales = Order::where(...)->sum('amount');
}
2. キャッシュしろ(必須)¶
$this->totalSales = Cache::remember(
"sales_sum_fy_{$year}",
3600,
fn () => Order::where(...)->sum('amount')
);
3. 年度別集計テーブルを作れ¶
daily / monthly / yearly summary
cron or queue で更新
在庫・売上系は必ず事前集計。
レベル1:インクリメンタル集計(最優先)
考え方
データが「増減した瞬間」にだけ計算する
「見るとき」は読むだけ
具体例(売上合計)
❌ 毎回
SELECT SUM(amount) FROM orders WHERE ...
✅ 書き込み時
DB::table('sales_summary')
->where('year', $year)
->increment('total_amount', $amount);
ファイル
表示するデータがありません
操作