feat(backend): ラベル変更の labels_changed アクティビティ記録 - #536
Open
yupix wants to merge 1 commit into
Open
Conversation
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" |
Deploying koyori with
|
| Latest commit: |
2e878ec
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://36e996c8.koyori.pages.dev |
| Branch Preview URL: | https://feat-task-label-activity.koyori.pages.dev |
yupix
force-pushed
the
feat/task-label-activity
branch
from
August 13, 2026 14:43
b1d2fe9 to
b1eaa29
Compare
yupix
force-pushed
the
feat/task-label-activity
branch
from
August 13, 2026 16:26
b1eaa29 to
c412b9e
Compare
yupix
force-pushed
the
feat/task-label-activity
branch
from
August 13, 2026 17:24
c412b9e to
aeb6d57
Compare
yupix
force-pushed
the
feat/task-label-activity
branch
from
August 13, 2026 17:49
aeb6d57 to
d15622c
Compare
- 単一更新(label_ids 置き換え)と一括更新(add_label_ids)の両方で、変更前後の
ラベル名(ソート済み)を比較し、実際に集合が変わったときだけ
labels_changed { from, to } を記録する
- ステータス・担当者は一括更新でも記録されるのにラベルだけ記録されていなかった
非一貫の解消。名前ベースの payload は status_changed の形式に合わせた
- service::task_activities に task_label_names ヘルパーを追加(両ハンドラーで共用)
- 統合テスト: 置き換えで記録 / 同一集合の置き換えは記録なし / 一括追加で記録 /
付与済みラベルの一括追加は記録なし
yupix
force-pushed
the
feat/task-label-activity
branch
from
August 13, 2026 17:57
d15622c to
2e878ec
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #535
概要
タスクのラベル変更をアクティビティに記録する。ステータス(
status_changed)や担当者(assignee_added)は一括更新でも記録されるのに、ラベルだけどの経路でも記録されていなかった非一貫を解消する。変更内容
PUT /tasks/{id}のlabel_ids置き換え)と一括更新(POST /tasks/bulkのadd_label_ids)の両方で、変更前後のラベル名(ソート済み)を比較し、実際に集合が変わったときだけlabels_changed { "from": [名前], "to": [名前] }を記録status_changedと同じ名前ベースの形式service::task_activitiesにtask_label_namesヘルパーを追加(両ハンドラーで共用)remove_label_idsも追加コードなしで記録対象になる挙動の変化
GET /tasks/{id}/activitiesにラベル変更がlabels_changedとして現れるopenapi.json差分ゼロ)テスト
task_labels_integration.rs): 置き換えで from/to が記録される / 同一集合の置き換えは記録されない / 一括追加で記録される / 付与済みラベルの一括追加は記録されないcargo fmt/clippy/test --lib/ 対象統合テスト(labels + extensions)すべて PASS