こんにちは。E-kan株式会社の池側です。
今回は管理者だけが利用できる特別なバックエンド機能の設計に進みます。
対象となるのは、ビジネスルール(BR-01)と管理者コンソール(F-08)に関わる、「濃霧(FOG)が続いているユーザーを検知して警告(アラート)を出す」ための集計ロジックです。
画面の見た目を作る前に、「誰をアラート対象にするか?」という裏側の判定ルールに集中して、Cursorと一緒に整理したプロセスを記録します。
●FOGアラート集計(管理者向け)のルール定義
「5日連続で濃霧の報告がある人を見つけ出す」という機能ですが、実はここにはプログラミング特有の「条件の落とし穴」がありました。
・今回の目的:
最近ずっと濃霧(コード3)の報告が続いていて、サポートや注意が必要な状態のユーザーを自動でリストアップするための集計ロジックを決めます。実際の管理画面(/admin)のレイアウトは次のStepで扱うため、今回は「計算方法」だけに焦点を当てます。
・ここが大事!「連続」の数え方ルール:
設計書において最も重要なのが、この「連続」の定義でした。
・✕:カレンダー上の5日連続ではない
・◯:「チェックイン(報告)した日だけを並べたときの連続」で数える
つまり、途中で土日や欠席(報告なしの日)を挟んでいたとしても、「報告があった日だけでデータを並べ替えて、濃霧(コード3)の報告が5回連続で続いた」場合にアラート対象になる、という仕組みです。
※設計上の注意ポイント
「カレンダーで5日連続」という別の解釈をしてしまうと、本来の要件と食い違う可能性があります。もしそのルールに変える場合は、基本設計書と詳細設計書の両方をすべて修正する必要があるため、今回はブレずに「報告日ベースの5回連続」で実装を進めます。
・データの流れ(入力と出力):
全ユーザーの直近の日報(DailyReport)データを読み込んで計算し、条件に該当した「アラート対象ユーザー一覧」を抽出します。
この一覧にはメールアドレスや名前などの個人情報が含まれるため、一般ユーザーには絶対に開示せず、「管理者だけが見られる安全な状態(認可)」を前提とします。
・テストの基準(受け入れ観点):
検証用のテストデータをいくつか作成し、本当に「欠席を挟みつつも、濃霧の報告を5回連続で行ったユーザー」だけが、正確に一覧に抽出されるかどうかを検証します。
◾️実装に向けた考慮ポイント
実際に集計ロジックのコードをCursorに書いてもらう前に、あらかじめ意識しておくべきポイントを整理しました。
1.データ並び替えの指示(SQLやORMの考慮):
ユーザーごとに日報を「日付の古い順」または「新しい順」にきれいに並び替えてから遡ってカウントする必要があります。Cursorには「ユーザーごとにグループ化し、日付順にソートした上で、直近5件のコードがすべて3であるかを判定するロジックを書いて」と具体的に指定するのがスムーズです。
2.管理者だけの「防壁」の準備:
一般ユーザーがこの集計データ(APIやServer Actions)にアクセスできてしまうと重大なセキュリティリスクになります。以前に整理したロール(権限)の仕組みを利用して、管理者以外は絶対にアクセスできないようガードを固めます。
●振り返り
画面をいきなり作り始める前に、「連続の定義とは、カレンダー通りなのか、それともデータが存在する日ベースなのか」という、仕様の曖昧になりがちな部分をクリアにしておくことの大切さを実感しました。ここを曖昧なまま進めると、後から大きな手戻りに繋がってしまいます。
これで裏側の「誰をアラートにするか」の計算式は固まりました。
次はこれを使って、実際に管理者が操作する画面(/admin)をCursorと一緒に構築していく予定です!
----------------
最後までお読みいただき、ありがとうございます!
「テクノロジー×人の想い」で、未来はもっと面白くなる。
E-kan(イーカン)は、そんなワクワクするITの未来を創り出すチームです。
最先端のテクノロジーに独自のアイデアを乗せて、社会を「もっと便利に、もっと自由に」アップデートしていく。
私たちはそのプロセスに、何よりも情熱を注いでいます。
そして、代表の村岡友樹は、
一般社団法人 日本生成AI推進協会(JGAA)の代表理事として、
生成AIの健全な発展と活用を推進し、日本から世界へと新しい価値を発信しています。
私たちが大切にしているのは、「人」と「AI」が共に成長する未来です。
もし少しでも私たちの想いに共感していただけたなら、ぜひ以下のリンクから活動や採用情報をご覧ください。
きっと、あなたの次のステップにつながる何かが見つかるはずです。
🌐 E-kan株式会社(イーカン)
🌱 「テクノロジー×人の想い」で未来を変えていく仲間を募集中です!
■ 公式サイト
https://e-kan.tokyo/
■ 採用サイト(en-gage)
https://en-gage.net/e-kan/
🤖 一般社団法人 日本生成AI推進協会(JGAA)
■ 公式サイト
https://japan-gaa.com/
📱 各種メディア・SNSで最新情報をチェック
■ note
https://note.com/e_kan
■ Qiita
https://qiita.com/EkanTw