リリース 機能改善

プロダクトバックログの体感速度と堅牢化 — 表示のちらつき解消、未完了タブの精度向上、舞台裏の安定性強化

アップデートをリリースしました

CSV インポート機能のリリース直後から、プロダクトバックログまわりの「もう一段気持ちよく」と「舞台裏をもう一段安全に」を続けて磨いていました。今回はその仕上げのリリースです。

⚡ プロダクトバックログ一覧の表示を体感で軽く

プロダクトバックログ一覧のクエリに 3 つの索引を追加し、デフォルトのソートでサーバー側が並べ替えに使っていた余計な処理が消えました。プロジェクトの PBI 数が増えるほど効果が出る方向で、一覧表示のレスポンスが軽くなります。

あわせて、初回表示・タブ切り替えの待ち時間に、行のスケルトン表示(うっすらと並んだプレースホルダ)が見えるよう整えました。これまでは表示の隙間に「ゼロ件」のオーバーレイが一瞬ちらついてしまうことがあり、本番のネットワーク遅延下では特に目立つ挙動でしたが、これも合わせて解消しています。

🎯 「未完了」タブが、本当に未完了だけを返すように

プロダクトバックログ一覧の「未完了」タブを選んでも、完了済みの PBI が混じって表示されることがあった問題を修正しました。タブ選択がサーバー側のフィルタにきちんと伝わるよう調整したため、未完了だけに集中したい場面で迷いが減ります。

ダッシュボードの「リファインメント候補」ウィジェットも同様に、完了済みを取り除いたうえで未完了候補を提示する作りに切り替えました。PBI 数が多いプロジェクトでも、対象が候補から取りこぼされにくくなります。

🧭 Epic 機能 OFF のプロジェクトで、完了 Epic カードが隠れるように

統計ページの「完了 Epic」カードと、全体統計詳細の「達成 Epic」カードを、プロジェクトの Epic 機能を OFF にしている場合は表示しないよう修正しました。

これまでも UI 側では関連セクションを隠していましたが、画面の描画タイミングによってカードが一瞬見える / 裏側のデータは読み出せる状態が残っていました。表示も中身も Epic 機能 ON のプロジェクトだけが対象になります。

🛡 完了済み行のミスリードを 1 つ撤去

完了済みリストに表示していた「PBI-XXXXXX」という補足表示を撤去しました。連番 ID のように見えていましたが、実体は内部識別子の末尾を抜き出したもので、隣の行で偶然同じ並びになる可能性がある値だったため、誤読を避けるために表示自体をやめています。

完了タブの「N 日前に完了」相対表示も合わせて取り除きました。完了した PBI を後から編集すると相対値が静かに書き換わってしまっていたため、「いつ終わったか」は本来の意味を持つスプリント列にお任せする形に整えました。

🔒 公開 URL のリダイレクト先を厳格化

ログインまわりのリダイレクト処理を見直し、攻撃者が偽装したヘッダで別ドメインへの誘導が起きないよう、公開ホスト名と HTTP/HTTPS スキームをサーバー側で固定しました。あわせて、ごく稀に発生していた内部ポート番号がリダイレクト URL に混じる現象も解消しています。

🧱 舞台裏の安定性 — DB 接続上限とリクエストタイムアウトを明示

CSV インポートのような重い操作がスパイクで走ったときに、データベースの接続枠を 1 テナントが食い潰してしまうリスクと、長時間ハングするリクエストがサーバー資源を占有してしまうリスクを、それぞれ明示的な上限で塞ぎました。

  • API 1 インスタンスあたりが保持する DB 接続数の上限を環境変数で外出しし、未設定や不正値で起動した場合は即座にエラーで知らせる作りに(誤設定で安全装置が無効化されない)
  • GraphQL リクエストには 30 秒のタイムアウトを敷き、超過時は通常のエラーと区別できる専用コードで応答(リアルタイム通信のサブスクリプションは対象外で、これまで通り長時間つながり続けます)
  • 同時に Slowloris 系の TCP リソース枯渇対策として、HTTP サーバー層の読み込み・書き込みタイムアウトも明示

通常運用のレスポンスタイム(CSV インポート 1,000 行で通常 5〜10 秒)には影響しません。

📦 セキュリティアドバイザリ対応の依存更新

外部依存パッケージのうち、next / mermaid / ws / protobufjs / postcss / brace-expansion をセキュリティアドバイザリ対応版に更新しています。表に見える機能変更はなく、ライブラリの修正バージョンへの追従です。

📮 お問い合わせ

ご質問やご要望がございましたら、お気軽にお問い合わせください。