ユーザー画面 /h に未読お知らせバーを追加

done

セッション開始:2026/06/02 08:38

planning developing done

目的 / なぜ必要か

現状、ユーザー画面(PC表示 /h)でお知らせを確認するには、 ヘッダーの「お知らせ」リンクから一覧へ移動する必要がある。未読のお知らせがあっても、ユーザーが能動的に一覧を開かない限り気づきにくい。 そこで、どの画面にいても未読に気づけるよう、ヘッダー直下に未読お知らせを常時提示するバーを設ける。

スコープ

やること

  • user アプリ PC表示 /h のヘッダー直下に未読お知らせバーを追加
  • /h ページで一律表示
  • 既読化直後にバーから即時消去(router.refresh)

やらないこと

  • モバイル表示 /v への対応
  • 配信スコープの絞り込み(全ユーザー一斉のまま)
  • メール・プッシュ等の通知手段追加
  • お知らせ発信側(system-manager)の変更
  • バー上での「閉じる」ボタンによる個別既読化

決定事項(仕様)

対象 user アプリ PC表示 /h レイアウト(/v は対象外)
配置 ヘッダー(h-12)直下、メインコンテンツの上に横幅いっぱいの帯
表示範囲 /h ページで一律表示(レイアウトに組み込み)
表示対象 listSystemNotification({ isRead: false }) の未読を全件、縦に積んで表示
0件時 バー自体を非表示
見出し バー先頭に「未読のお知らせ(N件)」を青系・太字で表示(N=未読件数)
各行の内容 公開日+タイトル(+赤い「未読」バッジ)
見た目 青系アクセント背景(bg-blue-50)+情報アイコン
高さ 制限なし(全件そのまま積む)
クリック挙動 詳細 /h/system-notifications/{id} へ遷移 → 既存 MarkAsRead で自動既読
即時反映 MarkAsReadrouter.refresh() を追加し、既読化後すぐバーから消す

UIイメージ(修正後)

ヘッダー(上)とメインコンテンツ(下)の間に、未読お知らせバー(青系)が挿入されるイメージ。

スマピタ
お知らせ モバイル版へ切り替え ログアウト
未読のお知らせ(3件)
2026/06/01 未読 メンテナンスのお知らせ
2026/05/30 未読 新機能リリースのご案内
2026/05/28 未読 利用規約改定のお知らせ
(各ページのメインコンテンツ)

※ 未読が 0 件のときは青いバーは表示されず、ヘッダーの直下にメインコンテンツが続く(従来通り)。

実装計画(影響範囲)

新規 apps/user/app/(horizontal)/h/_components/unread-notification-bar/index.tsx

サーバーコンポーネント。listSystemNotificationCached({ isRead: false }) で未読を取得し、Suspense でラップ。0件時は null を返す。 内部の各行は /h/system-notifications/{id} への Link

変更 apps/user/app/(horizontal)/h/layout.tsx

ヘッダー div とメインコンテンツ div の間に <UnreadNotificationBar /> を差し込む。

変更 .../system-notifications/[systemNotificationId]/_components/published/_components/mark-as-read/index.tsx

既読化アクション実行後に router.refresh() を呼び、レイアウト(バー)を再取得して即時反映する。

留意点 / 未確定