ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: frontend read-layer и первый экран двусторонней доски внешних контуров

This commit is contained in:
DCCONSTRUCTIONS
2026-04-20 20:49:09 +03:00
parent 0184ff9a32
commit 8bf6f2a510
15 changed files with 603 additions and 69 deletions
@@ -295,6 +295,18 @@ export default {
tabs: {
open: "Open",
closed: "Closed",
},
board: {
columns: {
outgoing: "Outgoing",
incoming: "Incoming",
},
empty: {
outgoing_title: "No outgoing requests",
outgoing_description: "Requests sent from this contour to other projects will appear here.",
incoming_title: "No incoming requests",
incoming_description: "Requests routed into this contour from other projects will appear here.",
},
},
list: {
last_updated: "Last updated",
@@ -452,6 +452,18 @@ export default {
tabs: {
open: "Открытые",
closed: "Закрытые",
},
board: {
columns: {
outgoing: "Исходящие",
incoming: "Входящие",
},
empty: {
outgoing_title: "Нет исходящих запросов",
outgoing_description: "Здесь будут видны запросы, которые этот контур отправил в другие проекты.",
incoming_title: "Нет входящих запросов",
incoming_description: "Здесь будут видны запросы, которые пришли в этот контур из других проектов.",
},
},
list: {
last_updated: "Последнее изменение",
@@ -53,9 +53,28 @@ export type TExternalContourMirroredActivity = {
actor_detail?: Pick<IUser, "id" | "display_name" | "avatar_url"> | null;
};
export type TExternalContourBoardDirection = "outgoing" | "incoming";
export type TExternalContourBoardProject = Pick<IProjectLite, "id" | "identifier" | "name" | "logo_props">;
export type TExternalContourBoardRequestedBy = {
id: string | null;
display_name: string | null;
};
export type TExternalContourBoardCapabilities = {
can_open_detail: boolean;
can_open_target_issue: boolean;
can_edit_request: boolean;
can_reply: boolean;
can_source_decide: boolean;
};
export type TExternalContourRequest = {
capabilities?: TExternalContourBoardCapabilities;
created_at: string;
created_by: string | null;
direction?: TExternalContourBoardDirection;
has_unread_updates?: boolean;
id: string;
issue: TExternalContourIssue;
@@ -71,8 +90,11 @@ export type TExternalContourRequest = {
target_project_name?: string | null;
requested_by_id?: string | null;
requested_by_name?: string | null;
requested_by?: TExternalContourBoardRequestedBy | null;
requested_at?: string | null;
source_project?: TExternalContourBoardProject | null;
status: "open" | "closed";
target_project?: TExternalContourBoardProject | null;
updated_at: string;
};
@@ -80,6 +102,40 @@ export type TExternalContourRequestResponse = TPaginationInfo & {
results: TExternalContourRequest[];
};
export type TExternalContourBoardFilter = {
direction?: TExternalContourBoardDirection[];
status?: TExternalContourRequest["status"] | TExternalContourRequest["status"][];
state_ids?: string[];
priority?: string[];
assignee_ids?: string[];
created_by_ids?: string[];
requested_by_ids?: string[];
source_project_ids?: string[];
target_project_ids?: string[];
label_ids?: string[];
has_unread_updates?: boolean;
search?: string;
};
export type TExternalContourBoardSorting = {
order_by?: "requested_at" | "updated_at" | "issue__sequence_id" | "target_date";
sort_by?: "asc" | "desc";
};
export type TExternalContourBoardColumn = {
key: TExternalContourBoardDirection;
title: string;
total_count: number;
next_cursor?: string;
results: TExternalContourRequest[];
};
export type TExternalContourBoardResponse = {
filters: Partial<TExternalContourBoardFilter>;
sorting: TExternalContourBoardSorting;
columns: TExternalContourBoardColumn[];
};
export type TExternalContourTargetProject = IProjectLite & {
inbox_view: boolean;
};