概要
アクティビティフィードで label_added / label_removed が大量に並ぶのを、表示側で畳んで読めるようにする。
背景
label_added / label_removed は仕様どおり 1 ラベルにつき 1 件を記録する(docs/features/tasks/4.collaboration.md の event_type 一覧)。集合への出入りを個別に記録する流儀は assignee_added / relation_added と揃っていて、粒度としてはこのままが正しい。
問題になるのは一括更新で、BULK_MAX_TASKS は 100 件。100 タスクに複数ラベルを付け外しすると数百件のイベントが生成され、フィードが実質的に読めなくなる。
event_type を粗くする(labels_changed のような 1 イベント化)と、個別のラベルがいつ誰に付けられたかを失う。粒度は細かいまま保ち、表示側で畳むほうが後から効く。
提案
同一タスク・同一ユーザー・近接時刻の label_added / label_removed をまとめて 1 行で見せる。
- 「ラベルを 3 件変更(+bug +docs -feature)」のような要約
- 展開すると個別イベントを表示
集約の単位(時間窓の長さ、タスクをまたいで畳むか)は実装時に決める。
補足
#537 のレビューで出た論点。backend 側の変更は不要で、フィードの描画だけで完結する。
概要
アクティビティフィードで
label_added/label_removedが大量に並ぶのを、表示側で畳んで読めるようにする。背景
label_added/label_removedは仕様どおり 1 ラベルにつき 1 件を記録する(docs/features/tasks/4.collaboration.mdの event_type 一覧)。集合への出入りを個別に記録する流儀はassignee_added/relation_addedと揃っていて、粒度としてはこのままが正しい。問題になるのは一括更新で、
BULK_MAX_TASKSは 100 件。100 タスクに複数ラベルを付け外しすると数百件のイベントが生成され、フィードが実質的に読めなくなる。event_type を粗くする(
labels_changedのような 1 イベント化)と、個別のラベルがいつ誰に付けられたかを失う。粒度は細かいまま保ち、表示側で畳むほうが後から効く。提案
同一タスク・同一ユーザー・近接時刻の
label_added/label_removedをまとめて 1 行で見せる。集約の単位(時間窓の長さ、タスクをまたいで畳むか)は実装時に決める。
補足
#537 のレビューで出た論点。backend 側の変更は不要で、フィードの描画だけで完結する。