feat: teams within a project

Projects keep teams of members in their settings (settings.teams; people
outside the project are dropped, teams are archived, not removed; absent
when saving means unchanged). Tickets go to a team (`team`, also filtered
in the list and in MCP search_issues), and a comment mentioning
@[Frontend](team-FRONT) tells each of its members. Settings has the teams
with their members, the ticket a «Equipo» select, the list a team filter,
and «@» offers the teams after the people.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-15 16:20:35 +02:00
parent 4acf629106
commit 869acd3f1f
41 changed files with 895 additions and 13 deletions

View File

@@ -1777,6 +1777,14 @@ export interface components {
options: string[];
archived: boolean;
};
TeamDto: {
/** @example FRONTEND */
id: string;
/** @example Frontend */
name: string;
memberIds: string[];
archived: boolean;
};
ProjectSettingsDto: {
/** @description In board order */
statuses: components["schemas"]["WorkflowStatusDto"][];
@@ -1786,6 +1794,7 @@ export interface components {
customFields: components["schemas"]["CustomFieldDefinitionDto"][];
/** @description Definition of done: tickets reach DONE only with their checklist ticked */
checklistBeforeDone: boolean;
teams: components["schemas"]["TeamDto"][];
};
ProjectDto: {
/** Format: uuid */
@@ -1931,6 +1940,16 @@ export interface components {
/** @default false */
archived: boolean;
};
TeamBodyDto: {
/** @example FRONTEND */
id: string;
/** @example Frontend */
name: string;
/** @description Pireon user ids of project members (others are dropped) */
memberIds?: string[];
/** @default false */
archived: boolean;
};
ProjectSettingsBodyDto: {
/** @description In board order. Values cannot be removed: archive them instead. */
statuses: components["schemas"]["WorkflowStatusBodyDto"][];
@@ -1939,6 +1958,8 @@ export interface components {
areas: components["schemas"]["AreaOptionBodyDto"][];
/** @description Absent: unchanged. Fields cannot be removed: archive them. */
customFields?: components["schemas"]["CustomFieldDefinitionBodyDto"][];
/** @description Absent: unchanged. Teams cannot be removed: archive them. */
teams?: components["schemas"]["TeamBodyDto"][];
/** @description Definition of done: tickets reach a DONE status only with their checklist ticked (owners and admins may override). Absent: unchanged */
checklistBeforeDone?: boolean;
};
@@ -2051,6 +2072,8 @@ export interface components {
type: string;
/** @example FRONTEND */
area: string | null;
/** @description A team id */
team: string | null;
title: string;
description: string | null;
/**
@@ -2410,6 +2433,11 @@ export interface components {
* @example FRONTEND
*/
area?: string | null;
/**
* @description A team id of the project's settings
* @example FRONTEND
*/
team?: string | null;
priority?: components["schemas"]["IssuePriority"];
labels?: string[];
/** @description Figma frame (https) for UI changes */
@@ -2467,6 +2495,11 @@ export interface components {
* @example FRONTEND
*/
area?: string | null;
/**
* @description A team id of the project's settings
* @example FRONTEND
*/
team?: string | null;
priority?: components["schemas"]["IssuePriority"];
labels?: string[];
/** @description Figma frame (https) for UI changes */
@@ -4946,6 +4979,8 @@ export interface operations {
type?: string[];
/** @description Area ids */
area?: string[];
/** @description Team ids */
team?: string[];
priority?: components["schemas"]["IssuePriority"][];
/** @description Pireon user id */
assigneeId?: string;