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:
@@ -16,7 +16,7 @@ const short = (day: string | null) =>
|
||||
})
|
||||
: '—';
|
||||
|
||||
const VERDICT: Record<
|
||||
export const VERDICT: Record<
|
||||
ReleaseForecast['verdict'],
|
||||
{ label: string; tone: string }
|
||||
> = {
|
||||
@@ -28,6 +28,16 @@ const VERDICT: Record<
|
||||
UNKNOWN: { label: 'Sin ritmo aún', tone: 'var(--ts-muted)' },
|
||||
};
|
||||
|
||||
/** Its verdict; a release with no tickets yet has nothing to forecast. */
|
||||
export function verdictOf(release: ReleaseForecast): {
|
||||
label: string;
|
||||
tone: string;
|
||||
} {
|
||||
return release.total === 0
|
||||
? { label: 'Sin tickets', tone: 'var(--ts-muted)' }
|
||||
: VERDICT[release.verdict];
|
||||
}
|
||||
|
||||
/**
|
||||
* Planned releases with the date they would likely be finished at the
|
||||
* team's real pace (Monte Carlo over the last six weeks).
|
||||
@@ -104,7 +114,7 @@ export class ReleaseForecastComponent {
|
||||
protected readonly rows = computed(() =>
|
||||
this.releases().map((r) => ({
|
||||
...r,
|
||||
...VERDICT[r.verdict],
|
||||
...verdictOf(r),
|
||||
share: r.total ? (r.finished / r.total) * 100 : 0,
|
||||
target: short(r.targetDate),
|
||||
likely: short(r.likelyDate),
|
||||
|
||||
Reference in New Issue
Block a user