issue observers
Наблюдатели задачи видят её и комментируют, но не редактируют.
- таблица issue_observer, наблюдатели — часть сущности Issue
- видимость: reporter, assignee или наблюдатель (задачи, история, SSE)
- правка/удаление задачи и вложений — только reporter/assignee (403 наблюдателю)
- observers в create/update, DELETE /issues/:id/observers/me, фильтр role
- история изменений и уведомления новым наблюдателям
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- IssueAttachment link table (issue <-> file) + migration
- GET/POST /issues/:issueId/attachments, DELETE .../attachments/:fileId
- Only own uploaded files can be attached; attach is idempotent
- Registers issues as a file owner: attached files stay visible to issue
participants and are not collected by GC
- IssueDetail.attachments GraphQL field via @ResolveField, issue module untouched
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>