Fincs

トーク / アナウンス

トーク / アナウンス

本ページは 2 段構成。上段が biz/CS 向け(ユーザー提示可)、下段(## 🔧 実装詳細 以降)が dev 向け。biz/CS がユーザーへ提示・転用してよいのは上段のみ。

概要

トークルーム内の特定の投稿を 「アナウンス」としてルーム上部にピン留め する機能。講師が重要な告知・周知事項を目立たせ、受講者がルームを開いた時点で最初に目にするようにする。

  • 対象: 既に投稿済みのトーク(テキスト / ファイル問わず)
  • 件数: 1 ルームあたり最大 5 件
  • 設定権限: メイン講師(サブ講師の可否は 要確認。下段「未解決課題」参照)
  • 通知発火: なし(アナウンス設定・解除時に関連ユーザーへのプッシュ通知は飛ばない。詳細は ./notification.md の「アナウンス」セクション参照)

アナウンスはルーム上部の固定枠に表示され、ルーム内の通常のトーク一覧とは独立してスクロールする。受講者・未受講者ともに閲覧できるが、ルームへのアクセス権限が無いユーザーは当然見えない(ルーム閲覧権限に依存)。

利用シナリオ

シナリオ 1: 講師の重要告知

メイン講師が「来週の講義日程変更」のトークを投稿 → そのトークをアナウンスに設定 → ルームを開いた全受講者の画面最上部に常時表示される。

シナリオ 2: 複数告知の並行運用

講師が過去のアナウンス(例: 入会手順)を残したまま、新しい告知を追加。最大 5 件まで同時設定可能。古いものを外したいときは個別に解除。

シナリオ 3: 誤ったアナウンス対象の解除

講師が誤った投稿をアナウンスしてしまった場合、解除操作で即外せる。解除したトーク自体は削除されず、通常投稿として残る。

権限別仕様

権限定義は ../../user-roles.md、用語は ../../terminology.md 参照。

講座権限軸

操作 未受講者 受講者 サブ講師 メイン講師
アナウンス設定 × × ○(※1)
アナウンス解除 × × ○(※1)
アナウンスの閲覧(ルーム内) ×(※2)
アナウンスから元トークへジャンプ ×(※2) ○(※3)
  • ※1: 仕様としてはメイン・サブ両方に許可。実装上も両方が通る想定だが、サブ講師ケースの挙動をテストで固定する作業を FIN-417 で追跡中(実装識別子は下段「処理フロー」参照)
  • ※2: 未受講者はルーム自体にアクセス不可、その結果としてアナウンスも見えない
  • ※3: 受講者はルームの「過去トーク制限」設定(blockPastTalks=true)が有効な場合、自身の契約開始日以前のアナウンス対象トークへはジャンプできない(アナウンス自体は表示される)。講師は常にジャンプ可能

横断軸

操作 運営アドミン テストユーザー 投稿禁止
アナウンス設定 / 解除 ×(運営アドミン経由の専用操作経路は存在しない) (通常と同じ) (運用上、講師が投稿禁止になるケースは想定外のため考慮不要)
アナウンス閲覧 ×(通常ユーザー経路は未実装) (通常と同じ) (通常と同じ、閲覧可)

機能詳細(ふるまい)

設定

  • 既に投稿済みの自ルーム内のトークをアナウンスに指定する
  • 削除済みトークはアナウンスに設定できない(エラー)
  • 同じトークを重ねて設定しても冪等(エラーにならず、既存のアナウンスがそのまま返る)
  • 1 ルームに既に 5 件のアナウンスがある状態で 6 件目を設定するとエラー。解除して空きを作ってから設定する必要あり。ユーザーには「アナウンスは 5 件まで設定できます」の旨が表示される

解除

  • アナウンスのみ解除され、対象のトーク自体は残る
  • 解除したトークを再度アナウンスに設定することも可能

表示仕様

  • ルーム画面の最上部に固定表示(スクロールしても常時見える位置)
  • 設定されている直近 1 件をヘッダーに表示(本文サマリーは先頭 50 文字まで)
  • 2 件目以降は折りたたみ。ユーザーは開閉できる(開閉状態はブラウザローカルに保存され、次回開いた時も維持)
  • ソート順は 更新日時の降順(新しく設定されたものが上)

対象トークが削除されたときの挙動

  • アナウンスレコードは残り続ける
  • ただしルーム画面での表示は「メッセージを読み込めませんでした」という旨のプレースホルダーに切り替わる
  • 解除(削除)操作は引き続き可能

ルームが削除されたときの挙動

  • ルーム自体の削除は論理削除で、アナウンスレコードは CASCADE されず残存する
  • ルームそのものが受講者・講師から見えなくなるため、アナウンスに実質的にアクセスできなくなる(間接的に不可視化)
  • アナウンスレコードは DB 上孤児として残るが、表示経路が無いため運用上の影響はない(孤児データ整理の課題は ./room.md の dev 改善課題参照)

admin 操作

できる操作

該当なし。アナウンスに対する運営アドミン専用の運用操作は現状ない。

実装されていない

  • 運営アドミンによるアナウンスの代理設定・解除: 現状、運営アドミン専用の操作経路は存在しない。運営が不適切なアナウンスを解除したい場合は、該当ルームのメイン講師に依頼する必要がある — 今後の改善課題(必要性があれば)

品質 / 約束事項

応答性

  • 設定・解除ともに同期処理で、操作結果は即時返る
  • FE 側は Firestore 経由でリアルタイムに更新を検知して表示を切り替える(複数タブで開いていても同期)

制限値

  • 1 ルームあたり最大 5 件
  • 1 トークあたり 1 件(同じトークを複数のアナウンスエントリにすることはできない)

データ保持

  • 解除は即削除(論理削除ではない)。解除後はアナウンスレコードは残らない
  • 対象トークが削除されてもアナウンスレコードは残留する(表示だけがプレースホルダーになる)

信頼性

  • DB への書き込みと Firestore への同期の 2 経路で永続化
  • Firestore 側の同期遅延があれば FE は最小限のデータで暫定表示し、後から補完

変更履歴(リリースノート候補)

v2.29.2: 2026-04-24(PSD 初版)

  • [PSD 追加] 本ドキュメント初版作成。v2.29.2 時点の実装を起こし。機能追加・変更は含まない

関連ドキュメント


このページの内容を AI に質問しますか?
関連 spec を自動抽出して ChatGPT / Claude などに渡せます。
AI Prompt で開く →