アサーションCheckのAI分析回数制限機能について、コードレビューでいただいた指摘をもとに修正を行った。
今回の主な変更点は以下のとおり。
analysis_usageテーブルの構造を変更SELECT ... FOR UPDATEによる同時実行制御を実装created_atをTIMESTAMPからTIMESTAMPTZに変更今回の修正では、フロントエンドの機能自体は大きく変更せず、主にバックエンドとデータベースの設計を見直した。
当初は、ユーザーごと・日付ごとに1レコードを作成し、request_countを加算する方式を採用していた。
analysis_usage
id | user_id | usage_date | request_count
---|---------|------------|--------------
1 | 2 | 2026-10-21 | 3
2 | 3 | 2026-10-21 | 5
この方式では、同じユーザーが同じ日に分析するたびに、既存レコードのrequest_countを更新する。
また、user_idとusage_dateの組み合わせにUNIQUE制約を設定し、同じユーザー・同じ日付のレコードが重複しないようにしていた。