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>
This commit is contained in:
1 parent
46903e9ec5
commit
b1f6b61994
54 files changed
+901
-69
No files matched your search
@@ -4,6 +4,12 @@ import { PaginationMeta } from '../../../../common/interfaces/pagination-meta.in
|
||||
/** DI-токен, т.к. интерфейсы стираются при компиляции TS */
|
||||
export const PROJECT_REPOSITORY = Symbol('PROJECT_REPOSITORY');
|
||||
|
||||
/**
|
||||
* Роль пользователя в проекте. OWNER и MEMBER создают задачи,
|
||||
* OBSERVER только видит проект (он наблюдатель отдельных задач).
|
||||
*/
|
||||
export type ProjectRole = 'OWNER' | 'MEMBER' | 'OBSERVER';
|
||||
|
||||
export interface IProjectRepository {
|
||||
/** Проект виден владельцу и участникам проекта (ProjectMember) */
|
||||
findById(id: string, userId: string): Promise<Project | null>;
|
||||
@@ -11,6 +17,11 @@ export interface IProjectRepository {
|
||||
create(project: Project): Promise<Project>;
|
||||
update(project: Project): Promise<void>;
|
||||
delete(id: string): Promise<void>;
|
||||
/** Добавляет пользователя в участники проекта, если он ещё не владелец/участник */
|
||||
addMember(projectId: string, userId: string): Promise<void>;
|
||||
/** Роль пользователя в проекте; null — проект ему не виден (или не существует) */
|
||||
findRole(projectId: string, userId: string): Promise<ProjectRole | null>;
|
||||
/**
|
||||
* Добавляет пользователя в участники проекта. Роль только повышается:
|
||||
* OBSERVER становится MEMBER, но MEMBER не понижается до OBSERVER.
|
||||
*/
|
||||
addMember(projectId: string, userId: string, role: Exclude<ProjectRole, 'OWNER'>): Promise<void>;
|
||||
}
|
||||
Reference in new issue
Block a user