feat: portfolio of all my projects

/cartera (and GraphQL portfolio, REST /api/me/portfolio, MCP
get_portfolio) shows every active project I belong to (not archived, not
as a guest) at a glance: open, overdue, blocked and stuck tickets, the
sprint under way and whether it gets there, planned releases with their
forecast, and the open epics with their progress. It reuses the
dashboard's computations. A release with no tickets now reads «Sin
tickets» instead of «Todo hecho», here and on the dashboard.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-15 18:27:46 +02:00
parent 8bf7d47b2e
commit affce615a7
35 changed files with 1603 additions and 80 deletions

View File

@@ -1,3 +1,4 @@
import { EpicReadModel } from './issue.read-model';
import { UserRefReadModel } from './user-ref.read-model';
/** A ticket named by the dashboard, with the number that put it there. */
@@ -189,3 +190,23 @@ export class ProjectInsightsReadModel {
/** One per active list (SELECT) custom field. */
fields!: FieldBreakdownReadModel[];
}
/** One of my projects at a glance, for the portfolio. */
export class PortfolioProjectReadModel {
projectId!: string;
key!: string;
name!: string;
isPublic!: boolean;
total!: number;
open!: number;
overdue!: number;
blocked!: number;
stuck!: number;
/** The sprint under way, if any. */
sprint!: SprintPulseReadModel | null;
/** Planned releases with their forecast. */
releases!: ReleaseForecastReadModel[];
/** Open epics (nearest due date first), at most six. */
epics!: EpicReadModel[];
updatedAt!: string;
}