深夜バッチに持たせるもの
#締め切りカレンダー
hr.icon
deadline_atとDate.todayの差分をその場で計算するだけ
code:計算処理
def days_remaining
(deadline_at.to_date - Date.today).to_i
end
毎朝計算するんじゃなく、表示するたびに動的に出す。DBに保存する必要がない。
バッチが本当にやるべき2つ
① 締切日の変更検知
深夜2時にsidekiqが全件回す
→ source_urlがあるdeadlineだけ対象
→ ページ再取得→Claude解析
→ deadline_atが変わってたらDBを更新 + changed_atを記録
→ 朝ログイン時に「⚠️ 締切が変更されました」バナーを出す
taiseiue.icon これはたとえば 前回ログイン時間を記録しておいて、前回ログイン時間より後のchanged_atがあれば出す、ということ?
koto.iconそゆこと
code:こんな感じ予定
# 前回ログイン時刻を記録
user.update(last_login_at: Time.current)
# ユーザーが登録しているイベントの締切が変わってたら通知
changed_events = current_user.events
.joins(:deadlines)
.where("deadlines.changed_at > ?", current_user.last_login_at_before_update)
② 応募終了・定員埋まりの検知
同じくページ再取得
→ Claudeに「応募は今も受け付けていますか?」を聞く
→ closed / full / open をJSONで返させる
→ statusをauto_closedに更新
→ サイネージでグレーアウト
技術構成
Sidekiq + Redis # バッチ実行
whenever gem # cron設定(深夜2時)
HTTParty # ページ再取得
Claude API # 変化の解析
全件をClaudeに投げると地味にAPI料金がかかります。対策はシンプルで、
締切まで7日以内のもの → 毎日チェック
8〜30日のもの → 3日に1回
31日以降 → 週1回
submitted / skipped → チェックしない
Q: MVPで認証はどうしますか?
A: まず認証なしで動かして後から足す
処理 タイミング 手段
URL解析→初期入力 ボタン押下時 Rails同期処理 + Claude API
締切変更・終了検知 深夜2時バッチ Sidekiq + Claude API
残り日数計算 表示時に動的計算 Rubyメソッド