feat: a home page with life

Greeting and summary of the day, the coming week, the latest across my
projects, who is online now, the week in numbers (mine and the team's,
with a streak), sprints under way, «Retomar», project cards with their
activity, what to pick up when nothing is mine and first steps for
newcomers. REST (GET /api/me/home), GraphQL (myHome) and MCP
(get_my_week).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-15 19:20:41 +02:00
parent affce615a7
commit 0946e9517d
57 changed files with 3728 additions and 53 deletions

View File

@@ -204,6 +204,27 @@ export class ProjectsResolver {
);
}
@Tool({
name: 'get_my_week',
description:
"The user's coming week and how the last one went: tickets of theirs (assigned or watched) due in the next 7 days, sprint ends and planned releases; tickets finished by them and by their teams this week and last, and their streak; sprints under way; and, when nothing is theirs, what they could pick up (unassigned, waiting for QA, proposals to review).",
paramsSchema: z.object({}),
annotations: READ,
})
myWeek(_params: Record<string, never>, ctx: McpContext) {
return toolResult(async () => {
const home = await this.api.data(this.api.as(ctx).GET('/api/me/home'));
// Compact: the page's activity feed, presence and first steps stay out.
return {
agenda: home.agenda,
me: home.me,
team: { thisWeek: home.team.thisWeek, lastWeek: home.team.lastWeek },
sprints: home.sprints,
suggestions: home.suggestions,
};
});
}
@Tool({
name: 'get_portfolio',
description: