Skip to content

feat(backend): ラベル変更の labels_changed アクティビティ記録 - #536

Open
yupix wants to merge 1 commit into
feat/task-label-filterfrom
feat/task-label-activity
Open

feat(backend): ラベル変更の labels_changed アクティビティ記録#536
yupix wants to merge 1 commit into
feat/task-label-filterfrom
feat/task-label-activity

Conversation

@yupix

@yupix yupix commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Stacked on #535

概要

タスクのラベル変更をアクティビティに記録する。ステータス(status_changed)や担当者(assignee_added)は一括更新でも記録されるのに、ラベルだけどの経路でも記録されていなかった非一貫を解消する。

変更内容

  • 単一更新(PUT /tasks/{id}label_ids 置き換え)と一括更新(POST /tasks/bulkadd_label_ids)の両方で、変更前後のラベル名(ソート済み)を比較し、実際に集合が変わったときだけ labels_changed { "from": [名前], "to": [名前] } を記録
  • payload は status_changed と同じ名前ベースの形式
  • service::task_activitiestask_label_names ヘルパーを追加(両ハンドラーで共用)
  • 一括更新側は「ラベル変更セクション全体」を前後スナップショットで挟む構造にしてあり、後続 PR の remove_label_ids も追加コードなしで記録対象になる

挙動の変化

  • GET /tasks/{id}/activities にラベル変更が labels_changed として現れる
  • 変化のない指定(同一集合への置き換え・付与済みラベルの追加)は記録されない
  • API 表面の変更なし(openapi.json 差分ゼロ)

テスト

  • 統合テスト(task_labels_integration.rs): 置き換えで from/to が記録される / 同一集合の置き換えは記録されない / 一括追加で記録される / 付与済みラベルの一括追加は記録されない
  • cargo fmt / clippy / test --lib / 対象統合テスト(labels + extensions)すべて PASS

@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown

OpenAPI diff (apps/frontend/openapi.json)

diff --git a/apps/frontend/openapi.json b/apps/frontend/openapi.json
index 7c01da0..d2a286c 100644
--- a/apps/frontend/openapi.json
+++ b/apps/frontend/openapi.json
@@ -12555,6 +12555,15 @@
               "format": "uuid"
             }
           },
+          {
+            "name": "label_id",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "type": "string",
+              "format": "uuid"
+            }
+          },
           {
             "name": "milestone_id",
             "in": "query",
@@ -20088,6 +20097,7 @@
           "progress_pct",
           "is_archived",
           "assignees",
+          "labels",
           "created_at",
           "updated_at"
         ],
@@ -20139,6 +20149,12 @@
           "is_archived": {
             "type": "boolean"
           },
+          "labels": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/LabelResponse"
+            }
+          },
           "milestone_id": {
             "type": ["string", "null"],
             "format": "uuid"
@@ -20604,6 +20620,14 @@
           "is_archived": {
             "type": ["boolean", "null"]
           },
+          "label_ids": {
+            "type": ["array", "null"],
+            "items": {
+              "type": "string",
+              "format": "uuid"
+            },
+            "description": "タスクのラベルをこの ID 集合で置き換える(`Some(vec![])` で全解除)。None は変更なし"
+          },
           "milestone_id": {
             "type": ["string", "null"],
             "format": "uuid"

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 13, 2026

Copy link
Copy Markdown

Deploying koyori with  Cloudflare Pages  Cloudflare Pages

Latest commit: 2e878ec
Status: ✅  Deploy successful!
Preview URL: https://36e996c8.koyori.pages.dev
Branch Preview URL: https://feat-task-label-activity.koyori.pages.dev

View logs

@yupix
yupix force-pushed the feat/task-label-activity branch from b1d2fe9 to b1eaa29 Compare August 13, 2026 14:43
@yupix
yupix force-pushed the feat/task-label-activity branch from b1eaa29 to c412b9e Compare August 13, 2026 16:26
@yupix
yupix force-pushed the feat/task-label-activity branch from c412b9e to aeb6d57 Compare August 13, 2026 17:24
@yupix
yupix force-pushed the feat/task-label-activity branch from aeb6d57 to d15622c Compare August 13, 2026 17:49
- 単一更新(label_ids 置き換え)と一括更新(add_label_ids)の両方で、変更前後の
  ラベル名(ソート済み)を比較し、実際に集合が変わったときだけ
  labels_changed { from, to } を記録する
- ステータス・担当者は一括更新でも記録されるのにラベルだけ記録されていなかった
  非一貫の解消。名前ベースの payload は status_changed の形式に合わせた
- service::task_activities に task_label_names ヘルパーを追加(両ハンドラーで共用)
- 統合テスト: 置き換えで記録 / 同一集合の置き換えは記録なし / 一括追加で記録 /
  付与済みラベルの一括追加は記録なし
@yupix
yupix force-pushed the feat/task-label-activity branch from d15622c to 2e878ec Compare August 13, 2026 17:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant