Context
PR #581 wired audit logging for board mutations (fixing #521), but update operations only log that an update occurred without specifying which fields changed.
Surfaced by Gemini code review on PR #581.
Problem
Audit log entries for update operations (board, card, column, label) record AuditAction.Updated but don't include what was actually changed. This makes the activity trail less useful for understanding what happened.
Proposed Changes
For each UpdateAsync path, build a change summary from the DTO before logging:
- BoardService: log which of
Name, Description, IsArchived changed
- CardService: log which of
Title, Description, DueDate, IsBlocked, BlockReason, LabelIds changed
- ColumnService: log which of
Name, WipLimit, Position changed
- LabelService: log which of
Name, Color changed
Pass the summary string to LogActionAsync via the existing changes parameter.
Acceptance Criteria
Context
PR #581 wired audit logging for board mutations (fixing #521), but update operations only log that an update occurred without specifying which fields changed.
Surfaced by Gemini code review on PR #581.
Problem
Audit log entries for update operations (board, card, column, label) record
AuditAction.Updatedbut don't include what was actually changed. This makes the activity trail less useful for understanding what happened.Proposed Changes
For each
UpdateAsyncpath, build a change summary from the DTO before logging:Name,Description,IsArchivedchangedTitle,Description,DueDate,IsBlocked,BlockReason,LabelIdschangedName,WipLimit,PositionchangedName,ColorchangedPass the summary string to
LogActionAsyncvia the existingchangesparameter.Acceptance Criteria